feat(settings): Services hub, Seerr sign-in, and all-locale strings

This commit is contained in:
edde746
2026-07-10 07:09:29 +02:00
parent b4943f8c50
commit f94b8c6586
47 changed files with 5968 additions and 1248 deletions
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96"><path fill="currentColor" fill-rule="evenodd" d="M48 96C74.5097 96 96 74.5097 96 48C96 21.4903 74.5097 0 48 0C21.4903 0 0 21.4903 0 48C0 74.5097 21.4903 96 48 96ZM80.0001 52C80.0001 67.464 67.4641 80 52.0001 80C36.5361 80 24.0001 67.464 24.0001 52C24.0001 49.1303 24.4318 46.3615 25.2338 43.7548C27.4288 48.6165 32.3194 52 38.0001 52C45.7321 52 52.0001 45.732 52.0001 38C52.0001 32.3192 48.6166 27.4287 43.755 25.2337C46.3616 24.4317 49.1304 24 52.0001 24C67.4641 24 80.0001 36.536 80.0001 52Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 583 B

+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Показвай какво гледате в Discord", "discordRichPresenceDescription": "Показвай какво гледате в Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Синхронизирай историята на гледане с Trakt", "traktDescription": "Синхронизирай историята на гледане с Trakt",
"trackers": "Тракери", "services": "Услуги",
"trackersDescription": "Синхронизирай прогреса с Trakt, MyAnimeList, AniList и Simkl", "servicesDescription": "Свържи Trakt, MyAnimeList, Seerr и още",
"companionRemoteServer": "Сървър за дистанционно управление", "companionRemoteServer": "Сървър за дистанционно управление",
"companionRemoteServerDescription": "Позволи на мобилни устройства във вашата мрежа да управляват това приложение", "companionRemoteServerDescription": "Позволи на мобилни устройства във вашата мрежа да управляват това приложение",
"autoPip": "Автоматичен режим картина в картината", "autoPip": "Автоматичен режим картина в картината",
@@ -416,7 +416,7 @@
"setScore": "Задай оценка", "setScore": "Задай оценка",
"saved": "Запазено", "saved": "Запазено",
"notAvailable": "Няма намерено съвпадение", "notAvailable": "Няма намерено съвпадение",
"noConnectedTrackers": "Свържете тракер в Настройки, за да оценявате там." "noConnectedServices": "Свържи услуга в Настройки, за да оценяваш там."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, филм", "mediaCardMovie": "${title}, филм",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Библиотеки", "libraries": "Библиотеки",
"downloads": "Изтегляния", "downloads": "Изтегляния",
"liveTv": "Телевизия на живо" "liveTv": "Телевизия на живо",
"explore": "Разгледай"
},
"explore": {
"title": "Разгледай",
"selectSource": "Избери източник",
"rows": {
"watchlist": "Списък за гледане",
"recommendedMovies": "Препоръчани филми",
"recommendedShows": "Препоръчани сериали",
"trendingMovies": "Актуални филми",
"trendingShows": "Актуални сериали",
"popularMovies": "Популярни филми",
"popularShows": "Популярни сериали",
"suggestedAnime": "Препоръчани аниме",
"airingAnime": "Топ излъчвани аниме",
"popularAnime": "Най-популярни аниме",
"trending": "Актуални",
"upcomingMovies": "Предстоящи филми",
"upcomingShows": "Предстоящи сериали"
},
"status": {
"airing": "Излъчва се",
"ended": "Приключил",
"canceled": "Отменен",
"upcoming": "Предстоящ"
},
"episodeCount": {
"one": "${n} епизод",
"other": "${n} епизода"
},
"cast": "Актьори",
"characters": "Герои",
"addToWatchlist": "Добави в списъка за гледане",
"removeFromWatchlist": "Премахни от списъка за гледане",
"watchlistUpdateFailed": "Неуспешно обновяване на списъка за гледане",
"notInLibrary": "Не е в твоята библиотека",
"inTheseLibraries": "В тези библиотеки",
"availableOn": "Налично на ${server}",
"checkingLibrary": "Проверка на твоята библиотека...",
"emptyTitle": "Тук все още няма нищо",
"emptyMessage": "Редовете от ${source} ще се появят тук, когато има съдържание.",
"searchHint": "Търсене в ${source}",
"searchEmpty": "Няма резултати за \"${query}\"",
"searchPrompt": "Търси филми и сериали в ${source}.",
"searchFailed": "Търсенето се провали. Провери връзката си и опитай отново."
}, },
"liveTv": { "liveTv": {
"title": "Телевизия на живо", "title": "Телевизия на живо",
@@ -1384,9 +1429,41 @@
"watchedSync": "Синхронизирай статус гледано", "watchedSync": "Синхронизирай статус гледано",
"watchedSyncDescription": "Когато маркирате елементи като гледани в Plezy, маркирай ги и в Trakt." "watchedSyncDescription": "Когато маркирате елементи като гледани в Plezy, маркирай ги и в Trakt."
}, },
"trackers": { "seerr": {
"title": "Тракери", "title": "Seerr",
"hubSubtitle": "Синхронизирай прогреса на гледане с Trakt и други услуги.", "connectTitle": "Свързване със Seerr",
"serverUrl": "URL на сървъра",
"serverUrlHelper": "Адресът на твоята Seerr инстанция",
"checkServer": "Продължи",
"signInWithJellyfin": "Вход с Jellyfin",
"signInWithEmby": "Вход с Emby",
"signInWithLocal": "Използвай локален акаунт",
"email": "Имейл",
"noSignInMethods": "Тази Seerr инстанция не предлага метод за вход, който Plezy поддържа.",
"instance": "Инстанция",
"disconnectConfirm": "Да се прекъсне ли Seerr?",
"disconnectConfirmBody": "Plezy ще забрави тази Seerr инстанция. Можете да се свържете отново по всяко време.",
"request": "Заяви",
"request4k": "Заяви в 4K",
"seasons": "Сезони",
"allSeasons": "Всички сезони",
"advancedOptions": "Разширени",
"destinationServer": "Целеви сървър",
"qualityProfile": "Профил за качество",
"rootFolder": "Основна папка",
"languageProfile": "Езиков профил",
"requestSubmitted": "Заявката е изпратена",
"requestFailed": "Заявката се провали: ${error}",
"requestsLoadFailed": "Неуспешно зареждане на опциите за заявка",
"nothingToRequest": "Всичко вече е налично или заявено.",
"statusAvailable": "Налично",
"statusPartiallyAvailable": "Частично налично",
"statusRequested": "Заявено",
"statusProcessing": "Обработва се"
},
"services": {
"title": "Услуги",
"hubSubtitle": "Синхронизирай прогреса на гледане и заявявай нови заглавия.",
"notConnected": "Не е свързан", "notConnected": "Не е свързан",
"connectedAs": "Свързан като @${username}", "connectedAs": "Свързан като @${username}",
"scrobble": "Проследявай прогреса автоматично", "scrobble": "Проследявай прогреса автоматично",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "Да се прекъсне ли ${service}?", "disconnectConfirm": "Да се прекъсне ли ${service}?",
"disconnectConfirmBody": "Plezy ще спре да обновява ${service}. Можете да се свържете отново по всяко време.", "disconnectConfirmBody": "Plezy ще спре да обновява ${service}. Можете да се свържете отново по всяко време.",
"connectFailed": "Неуспешно свързване с ${service}. Опитайте отново.", "connectFailed": "Неуспешно свързване с ${service}. Опитайте отново.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Активиране на Plezy в ${service}", "title": "Активиране на Plezy в ${service}",
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Vis hvad du ser på Discord", "discordRichPresenceDescription": "Vis hvad du ser på Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Synkroniser visningshistorik med Trakt", "traktDescription": "Synkroniser visningshistorik med Trakt",
"trackers": "Trackere", "services": "Tjenester",
"trackersDescription": "Synkroniser fremgang til Trakt, MyAnimeList, AniList og Simkl", "servicesDescription": "Forbind Trakt, MyAnimeList, Seerr og mere",
"companionRemoteServer": "Companion Remote Server", "companionRemoteServer": "Companion Remote Server",
"companionRemoteServerDescription": "Tillad mobilenheder på dit netværk at styre denne app", "companionRemoteServerDescription": "Tillad mobilenheder på dit netværk at styre denne app",
"autoPip": "Auto billede-i-billede", "autoPip": "Auto billede-i-billede",
@@ -416,7 +416,7 @@
"setScore": "Angiv en score", "setScore": "Angiv en score",
"saved": "Gemt", "saved": "Gemt",
"notAvailable": "Intet match fundet", "notAvailable": "Intet match fundet",
"noConnectedTrackers": "Forbind en tracker i Indstillinger for at bedømme der." "noConnectedServices": "Forbind en tjeneste i Indstillinger for at bedømme der."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, film", "mediaCardMovie": "${title}, film",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Biblioteker", "libraries": "Biblioteker",
"downloads": "Downloads", "downloads": "Downloads",
"liveTv": "Live TV" "liveTv": "Live TV",
"explore": "Udforsk"
},
"explore": {
"title": "Udforsk",
"selectSource": "Vælg kilde",
"rows": {
"watchlist": "Ønskeliste",
"recommendedMovies": "Anbefalede film",
"recommendedShows": "Anbefalede serier",
"trendingMovies": "Trending film",
"trendingShows": "Trending serier",
"popularMovies": "Populære film",
"popularShows": "Populære serier",
"suggestedAnime": "Foreslået anime",
"airingAnime": "Top igangværende anime",
"popularAnime": "Mest populære anime",
"trending": "Trending",
"upcomingMovies": "Kommende film",
"upcomingShows": "Kommende serier"
},
"status": {
"airing": "Sendes",
"ended": "Afsluttet",
"canceled": "Aflyst",
"upcoming": "Kommende"
},
"episodeCount": {
"one": "${n} afsnit",
"other": "${n} afsnit"
},
"cast": "Rollebesætning",
"characters": "Figurer",
"addToWatchlist": "Føj til ønskeliste",
"removeFromWatchlist": "Fjern fra ønskeliste",
"watchlistUpdateFailed": "Kunne ikke opdatere ønskelisten",
"notInLibrary": "Ikke i dit bibliotek",
"inTheseLibraries": "I disse biblioteker",
"availableOn": "Tilgængelig på ${server}",
"checkingLibrary": "Tjekker dit bibliotek...",
"emptyTitle": "Der er ikke noget her endnu",
"emptyMessage": "Rækker fra ${source} vises her, når de har indhold.",
"searchHint": "Søg i ${source}",
"searchEmpty": "Ingen resultater for \"${query}\"",
"searchPrompt": "Søg efter film og serier på ${source}.",
"searchFailed": "Søgningen mislykkedes. Tjek din forbindelse, og prøv igen."
}, },
"liveTv": { "liveTv": {
"title": "Live TV", "title": "Live TV",
@@ -1384,9 +1429,41 @@
"watchedSync": "Synkroniser sét-status", "watchedSync": "Synkroniser sét-status",
"watchedSyncDescription": "Når du markerer ting som sét i Plezy, markeres de også på Trakt." "watchedSyncDescription": "Når du markerer ting som sét i Plezy, markeres de også på Trakt."
}, },
"trackers": { "seerr": {
"title": "Trackere", "title": "Seerr",
"hubSubtitle": "Synkroniser afspilningsfremskridt med Trakt og andre tjenester.", "connectTitle": "Forbind Seerr",
"serverUrl": "Server-URL",
"serverUrlHelper": "Adressen på din Seerr-instans",
"checkServer": "Fortsæt",
"signInWithJellyfin": "Log ind med Jellyfin",
"signInWithEmby": "Log ind med Emby",
"signInWithLocal": "Brug en lokal konto",
"email": "E-mail",
"noSignInMethods": "Denne Seerr-instans tilbyder ingen loginmetode, som Plezy understøtter.",
"instance": "Instans",
"disconnectConfirm": "Afbryd Seerr?",
"disconnectConfirmBody": "Plezy glemmer denne Seerr-instans. Tilslut igen når som helst.",
"request": "Anmod",
"request4k": "Anmod i 4K",
"seasons": "Sæsoner",
"allSeasons": "Alle sæsoner",
"advancedOptions": "Avanceret",
"destinationServer": "Destinationsserver",
"qualityProfile": "Kvalitetsprofil",
"rootFolder": "Rodmappe",
"languageProfile": "Sprogprofil",
"requestSubmitted": "Anmodning sendt",
"requestFailed": "Anmodning mislykkedes: ${error}",
"requestsLoadFailed": "Kunne ikke indlæse anmodningsmuligheder",
"nothingToRequest": "Alt er allerede tilgængeligt eller anmodet.",
"statusAvailable": "Tilgængelig",
"statusPartiallyAvailable": "Delvist tilgængelig",
"statusRequested": "Anmodet",
"statusProcessing": "Behandler"
},
"services": {
"title": "Tjenester",
"hubSubtitle": "Synkroniser dit visningsfremskridt, og anmod om nye titler.",
"notConnected": "Ikke forbundet", "notConnected": "Ikke forbundet",
"connectedAs": "Forbundet som @${username}", "connectedAs": "Forbundet som @${username}",
"scrobble": "Registrer fremgang automatisk", "scrobble": "Registrer fremgang automatisk",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "Afbryd ${service}?", "disconnectConfirm": "Afbryd ${service}?",
"disconnectConfirmBody": "Plezy stopper med at opdatere ${service}. Tilslut igen når som helst.", "disconnectConfirmBody": "Plezy stopper med at opdatere ${service}. Tilslut igen når som helst.",
"connectFailed": "Kunne ikke forbinde til ${service}. Prøv igen.", "connectFailed": "Kunne ikke forbinde til ${service}. Prøv igen.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Aktiver Plezy på ${service}", "title": "Aktiver Plezy på ${service}",
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Zeige auf Discord, was du gerade schaust", "discordRichPresenceDescription": "Zeige auf Discord, was du gerade schaust",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Wiedergabeverlauf mit Trakt synchronisieren", "traktDescription": "Wiedergabeverlauf mit Trakt synchronisieren",
"trackers": "Tracker", "services": "Dienste",
"trackersDescription": "Fortschritt mit Trakt, MyAnimeList, AniList und Simkl synchronisieren", "servicesDescription": "Trakt, MyAnimeList, Seerr und mehr verbinden",
"companionRemoteServer": "Companion Remote Server", "companionRemoteServer": "Companion Remote Server",
"companionRemoteServerDescription": "Mobilgeräten in deinem Netzwerk erlauben, diese App zu steuern", "companionRemoteServerDescription": "Mobilgeräten in deinem Netzwerk erlauben, diese App zu steuern",
"autoPip": "Automatisches Bild-in-Bild", "autoPip": "Automatisches Bild-in-Bild",
@@ -416,7 +416,7 @@
"setScore": "Eine Wertung festlegen", "setScore": "Eine Wertung festlegen",
"saved": "Gespeichert", "saved": "Gespeichert",
"notAvailable": "Keine Übereinstimmung gefunden", "notAvailable": "Keine Übereinstimmung gefunden",
"noConnectedTrackers": "Verbinde einen Tracker in den Einstellungen, um dort zu bewerten." "noConnectedServices": "Verbinde einen Dienst in den Einstellungen, um dort zu bewerten."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, Film", "mediaCardMovie": "${title}, Film",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Medien", "libraries": "Medien",
"downloads": "Downloads", "downloads": "Downloads",
"liveTv": "Live-TV" "liveTv": "Live-TV",
"explore": "Erkunden"
},
"explore": {
"title": "Erkunden",
"selectSource": "Quelle auswählen",
"rows": {
"watchlist": "Merkliste",
"recommendedMovies": "Empfohlene Filme",
"recommendedShows": "Empfohlene Serien",
"trendingMovies": "Angesagte Filme",
"trendingShows": "Angesagte Serien",
"popularMovies": "Beliebte Filme",
"popularShows": "Beliebte Serien",
"suggestedAnime": "Vorgeschlagene Anime",
"airingAnime": "Top laufende Anime",
"popularAnime": "Beliebteste Anime",
"trending": "Angesagt",
"upcomingMovies": "Kommende Filme",
"upcomingShows": "Kommende Serien"
},
"status": {
"airing": "Laufend",
"ended": "Beendet",
"canceled": "Abgesetzt",
"upcoming": "Demnächst"
},
"episodeCount": {
"one": "${n} Folge",
"other": "${n} Folgen"
},
"cast": "Besetzung",
"characters": "Charaktere",
"addToWatchlist": "Zur Merkliste hinzufügen",
"removeFromWatchlist": "Von Merkliste entfernen",
"watchlistUpdateFailed": "Merkliste konnte nicht aktualisiert werden",
"notInLibrary": "Nicht in deiner Mediathek",
"inTheseLibraries": "In diesen Mediatheken",
"availableOn": "Verfügbar auf ${server}",
"checkingLibrary": "Deine Mediathek wird überprüft...",
"emptyTitle": "Hier ist noch nichts",
"emptyMessage": "Zeilen aus ${source} erscheinen hier, sobald sie Inhalte enthalten.",
"searchHint": "${source} durchsuchen",
"searchEmpty": "Keine Ergebnisse für \"${query}\"",
"searchPrompt": "Suche nach Filmen und Serien auf ${source}.",
"searchFailed": "Suche fehlgeschlagen. Prüfe deine Verbindung und versuche es erneut."
}, },
"liveTv": { "liveTv": {
"title": "Live-TV", "title": "Live-TV",
@@ -1384,9 +1429,41 @@
"watchedSync": "Gesehen-Status synchronisieren", "watchedSync": "Gesehen-Status synchronisieren",
"watchedSyncDescription": "Wenn du Inhalte in Plezy als gesehen markierst, werden sie auch auf Trakt markiert." "watchedSyncDescription": "Wenn du Inhalte in Plezy als gesehen markierst, werden sie auch auf Trakt markiert."
}, },
"trackers": { "seerr": {
"title": "Tracker", "title": "Seerr",
"hubSubtitle": "Wiedergabefortschritt mit Trakt und anderen Diensten synchronisieren.", "connectTitle": "Seerr verbinden",
"serverUrl": "Server-URL",
"serverUrlHelper": "Die Adresse deiner Seerr-Instanz",
"checkServer": "Weiter",
"signInWithJellyfin": "Mit Jellyfin anmelden",
"signInWithEmby": "Mit Emby anmelden",
"signInWithLocal": "Lokales Konto verwenden",
"email": "E-Mail",
"noSignInMethods": "Diese Seerr-Instanz bietet keine von Plezy unterstützte Anmeldemethode.",
"instance": "Instanz",
"disconnectConfirm": "Seerr trennen?",
"disconnectConfirmBody": "Plezy vergisst diese Seerr-Instanz. Jederzeit erneut verbinden.",
"request": "Anfragen",
"request4k": "In 4K anfragen",
"seasons": "Staffeln",
"allSeasons": "Alle Staffeln",
"advancedOptions": "Erweitert",
"destinationServer": "Zielserver",
"qualityProfile": "Qualitätsprofil",
"rootFolder": "Stammordner",
"languageProfile": "Sprachprofil",
"requestSubmitted": "Anfrage gesendet",
"requestFailed": "Anfrage fehlgeschlagen: ${error}",
"requestsLoadFailed": "Anfrageoptionen konnten nicht geladen werden",
"nothingToRequest": "Alles ist bereits verfügbar oder angefragt.",
"statusAvailable": "Verfügbar",
"statusPartiallyAvailable": "Teilweise verfügbar",
"statusRequested": "Angefragt",
"statusProcessing": "Wird verarbeitet"
},
"services": {
"title": "Dienste",
"hubSubtitle": "Wiedergabefortschritt synchronisieren und neue Titel anfragen.",
"notConnected": "Nicht verbunden", "notConnected": "Nicht verbunden",
"connectedAs": "Verbunden als @${username}", "connectedAs": "Verbunden als @${username}",
"scrobble": "Fortschritt automatisch verfolgen", "scrobble": "Fortschritt automatisch verfolgen",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "${service} trennen?", "disconnectConfirm": "${service} trennen?",
"disconnectConfirmBody": "Plezy aktualisiert ${service} nicht mehr. Jederzeit erneut verbinden.", "disconnectConfirmBody": "Plezy aktualisiert ${service} nicht mehr. Jederzeit erneut verbinden.",
"connectFailed": "Verbindung zu ${service} fehlgeschlagen. Versuche es erneut.", "connectFailed": "Verbindung zu ${service} fehlgeschlagen. Versuche es erneut.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Plezy auf ${service} aktivieren", "title": "Plezy auf ${service} aktivieren",
+87 -9
View File
@@ -253,8 +253,8 @@
"discordRichPresenceDescription": "Show what you're watching on Discord", "discordRichPresenceDescription": "Show what you're watching on Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Sync watch history with Trakt", "traktDescription": "Sync watch history with Trakt",
"trackers": "Trackers", "services": "Services",
"trackersDescription": "Sync progress to Trakt, MyAnimeList, AniList, and Simkl", "servicesDescription": "Connect Trakt, MyAnimeList, Seerr, and more",
"manageLibrariesDescription": "Reorder and hide libraries", "manageLibrariesDescription": "Reorder and hide libraries",
"companionRemoteServer": "Companion Remote Server", "companionRemoteServer": "Companion Remote Server",
"companionRemoteServerDescription": "Allow mobile devices on your network to control this app", "companionRemoteServerDescription": "Allow mobile devices on your network to control this app",
@@ -425,7 +425,7 @@
"favorited": "Favorited", "favorited": "Favorited",
"saved": "Saved", "saved": "Saved",
"notAvailable": "No match found", "notAvailable": "No match found",
"noConnectedTrackers": "Connect a tracker in Settings to rate there." "noConnectedServices": "Connect a service in Settings to rate there."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, movie", "mediaCardMovie": "${title}, movie",
@@ -854,7 +854,52 @@
"navigation": { "navigation": {
"libraries": "Libraries", "libraries": "Libraries",
"downloads": "Downloads", "downloads": "Downloads",
"liveTv": "Live TV" "liveTv": "Live TV",
"explore": "Explore"
},
"explore": {
"title": "Explore",
"selectSource": "Select source",
"rows": {
"watchlist": "Watchlist",
"recommendedMovies": "Recommended Movies",
"recommendedShows": "Recommended Shows",
"trendingMovies": "Trending Movies",
"trendingShows": "Trending Shows",
"popularMovies": "Popular Movies",
"popularShows": "Popular Shows",
"suggestedAnime": "Suggested Anime",
"airingAnime": "Top Airing Anime",
"popularAnime": "Most Popular Anime",
"trending": "Trending",
"upcomingMovies": "Upcoming Movies",
"upcomingShows": "Upcoming Shows"
},
"status": {
"airing": "Airing",
"ended": "Ended",
"canceled": "Canceled",
"upcoming": "Upcoming"
},
"episodeCount": {
"one": "${n} episode",
"other": "${n} episodes"
},
"cast": "Cast",
"characters": "Characters",
"addToWatchlist": "Add to Watchlist",
"removeFromWatchlist": "Remove from Watchlist",
"watchlistUpdateFailed": "Couldn't update watchlist",
"notInLibrary": "Not in your library",
"inTheseLibraries": "In these libraries",
"availableOn": "Available on ${server}",
"checkingLibrary": "Checking your library...",
"emptyTitle": "Nothing here yet",
"emptyMessage": "Rows from ${source} will appear here once they have content.",
"searchHint": "Search ${source}",
"searchEmpty": "No results for \"${query}\"",
"searchPrompt": "Search for movies and shows on ${source}.",
"searchFailed": "Search failed. Check your connection and try again."
}, },
"liveTv": { "liveTv": {
"title": "Live TV", "title": "Live TV",
@@ -1399,9 +1444,41 @@
"watchedSync": "Sync watched status", "watchedSync": "Sync watched status",
"watchedSyncDescription": "When you mark items watched in Plezy, mark them on Trakt." "watchedSyncDescription": "When you mark items watched in Plezy, mark them on Trakt."
}, },
"trackers": { "seerr": {
"title": "Trackers", "title": "Seerr",
"hubSubtitle": "Sync watch progress with Trakt and other services.", "connectTitle": "Connect Seerr",
"serverUrl": "Server URL",
"serverUrlHelper": "The address of your Seerr instance",
"checkServer": "Continue",
"signInWithJellyfin": "Sign in with Jellyfin",
"signInWithEmby": "Sign in with Emby",
"signInWithLocal": "Use a local account",
"email": "Email",
"noSignInMethods": "This Seerr instance offers no sign-in method Plezy supports.",
"instance": "Instance",
"disconnectConfirm": "Disconnect Seerr?",
"disconnectConfirmBody": "Plezy will forget this Seerr instance. Reconnect any time.",
"request": "Request",
"request4k": "Request in 4K",
"seasons": "Seasons",
"allSeasons": "All seasons",
"advancedOptions": "Advanced",
"destinationServer": "Destination server",
"qualityProfile": "Quality profile",
"rootFolder": "Root folder",
"languageProfile": "Language profile",
"requestSubmitted": "Request submitted",
"requestFailed": "Request failed: ${error}",
"requestsLoadFailed": "Couldn't load request options",
"nothingToRequest": "Everything is already available or requested.",
"statusAvailable": "Available",
"statusPartiallyAvailable": "Partially available",
"statusRequested": "Requested",
"statusProcessing": "Processing"
},
"services": {
"title": "Services",
"hubSubtitle": "Sync watch progress and request new titles.",
"notConnected": "Not connected", "notConnected": "Not connected",
"connectedAs": "Connected as @${username}", "connectedAs": "Connected as @${username}",
"scrobble": "Track progress automatically", "scrobble": "Track progress automatically",
@@ -1409,10 +1486,11 @@
"disconnectConfirm": "Disconnect ${service}?", "disconnectConfirm": "Disconnect ${service}?",
"disconnectConfirmBody": "Plezy will stop updating ${service}. Reconnect any time.", "disconnectConfirmBody": "Plezy will stop updating ${service}. Reconnect any time.",
"connectFailed": "Couldn't connect to ${service}. Try again.", "connectFailed": "Couldn't connect to ${service}. Try again.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Activate Plezy on ${service}", "title": "Activate Plezy on ${service}",
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Mostrar lo que estás viendo en Discord", "discordRichPresenceDescription": "Mostrar lo que estás viendo en Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Sincronizar historial de visualización con Trakt", "traktDescription": "Sincronizar historial de visualización con Trakt",
"trackers": "Rastreadores", "services": "Servicios",
"trackersDescription": "Sincronizar progreso con Trakt, MyAnimeList, AniList y Simkl", "servicesDescription": "Conecta Trakt, MyAnimeList, Seerr y más",
"companionRemoteServer": "Servidor de control remoto", "companionRemoteServer": "Servidor de control remoto",
"companionRemoteServerDescription": "Permitir que dispositivos móviles en tu red controlen esta aplicación", "companionRemoteServerDescription": "Permitir que dispositivos móviles en tu red controlen esta aplicación",
"autoPip": "Imagen en imagen automática", "autoPip": "Imagen en imagen automática",
@@ -416,7 +416,7 @@
"setScore": "Establecer puntuación", "setScore": "Establecer puntuación",
"saved": "Guardado", "saved": "Guardado",
"notAvailable": "No se encontró coincidencia", "notAvailable": "No se encontró coincidencia",
"noConnectedTrackers": "Conecta un tracker en Ajustes para calificar allí." "noConnectedServices": "Conecta un servicio en Configuración para calificar ahí."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, película", "mediaCardMovie": "${title}, película",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Medios", "libraries": "Medios",
"downloads": "Descargas", "downloads": "Descargas",
"liveTv": "TV en vivo" "liveTv": "TV en vivo",
"explore": "Explorar"
},
"explore": {
"title": "Explorar",
"selectSource": "Seleccionar fuente",
"rows": {
"watchlist": "Lista de seguimiento",
"recommendedMovies": "Películas recomendadas",
"recommendedShows": "Series recomendadas",
"trendingMovies": "Películas en tendencia",
"trendingShows": "Series en tendencia",
"popularMovies": "Películas populares",
"popularShows": "Series populares",
"suggestedAnime": "Anime sugerido",
"airingAnime": "Mejor anime en emisión",
"popularAnime": "Anime más popular",
"trending": "Tendencias",
"upcomingMovies": "Próximas películas",
"upcomingShows": "Próximas series"
},
"status": {
"airing": "En emisión",
"ended": "Finalizada",
"canceled": "Cancelada",
"upcoming": "Próximamente"
},
"episodeCount": {
"one": "${n} episodio",
"other": "${n} episodios"
},
"cast": "Reparto",
"characters": "Personajes",
"addToWatchlist": "Añadir a la lista de seguimiento",
"removeFromWatchlist": "Quitar de la lista de seguimiento",
"watchlistUpdateFailed": "No se pudo actualizar la lista de seguimiento",
"notInLibrary": "No está en tu biblioteca",
"inTheseLibraries": "En estas bibliotecas",
"availableOn": "Disponible en ${server}",
"checkingLibrary": "Comprobando tu biblioteca...",
"emptyTitle": "Aquí no hay nada todavía",
"emptyMessage": "Las filas de ${source} aparecerán aquí cuando tengan contenido.",
"searchHint": "Buscar en ${source}",
"searchEmpty": "Sin resultados para \"${query}\"",
"searchPrompt": "Busca películas y series en ${source}.",
"searchFailed": "La búsqueda falló. Comprueba tu conexión e inténtalo de nuevo."
}, },
"liveTv": { "liveTv": {
"title": "TV en vivo", "title": "TV en vivo",
@@ -1384,9 +1429,41 @@
"watchedSync": "Sincronizar estado de visto", "watchedSync": "Sincronizar estado de visto",
"watchedSyncDescription": "Cuando marques elementos como vistos en Plezy, también se marcarán en Trakt." "watchedSyncDescription": "Cuando marques elementos como vistos en Plezy, también se marcarán en Trakt."
}, },
"trackers": { "seerr": {
"title": "Rastreadores", "title": "Seerr",
"hubSubtitle": "Sincroniza el progreso de visualización con Trakt y otros servicios.", "connectTitle": "Conectar Seerr",
"serverUrl": "URL del servidor",
"serverUrlHelper": "La dirección de tu instancia de Seerr",
"checkServer": "Continuar",
"signInWithJellyfin": "Iniciar sesión con Jellyfin",
"signInWithEmby": "Iniciar sesión con Emby",
"signInWithLocal": "Usar una cuenta local",
"email": "Correo electrónico",
"noSignInMethods": "Esta instancia de Seerr no ofrece ningún método de inicio de sesión compatible con Plezy.",
"instance": "Instancia",
"disconnectConfirm": "¿Desconectar Seerr?",
"disconnectConfirmBody": "Plezy olvidará esta instancia de Seerr. Reconecta cuando quieras.",
"request": "Solicitar",
"request4k": "Solicitar en 4K",
"seasons": "Temporadas",
"allSeasons": "Todas las temporadas",
"advancedOptions": "Avanzado",
"destinationServer": "Servidor de destino",
"qualityProfile": "Perfil de calidad",
"rootFolder": "Carpeta raíz",
"languageProfile": "Perfil de idioma",
"requestSubmitted": "Solicitud enviada",
"requestFailed": "La solicitud falló: ${error}",
"requestsLoadFailed": "No se pudieron cargar las opciones de solicitud",
"nothingToRequest": "Todo ya está disponible o solicitado.",
"statusAvailable": "Disponible",
"statusPartiallyAvailable": "Parcialmente disponible",
"statusRequested": "Solicitado",
"statusProcessing": "Procesando"
},
"services": {
"title": "Servicios",
"hubSubtitle": "Sincroniza tu progreso de visualización y solicita nuevos títulos.",
"notConnected": "No conectado", "notConnected": "No conectado",
"connectedAs": "Conectado como @${username}", "connectedAs": "Conectado como @${username}",
"scrobble": "Registrar progreso automáticamente", "scrobble": "Registrar progreso automáticamente",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "¿Desconectar ${service}?", "disconnectConfirm": "¿Desconectar ${service}?",
"disconnectConfirmBody": "Plezy dejará de actualizar ${service}. Reconecta cuando quieras.", "disconnectConfirmBody": "Plezy dejará de actualizar ${service}. Reconecta cuando quieras.",
"connectFailed": "No se pudo conectar a ${service}. Inténtalo de nuevo.", "connectFailed": "No se pudo conectar a ${service}. Inténtalo de nuevo.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Activar Plezy en ${service}", "title": "Activar Plezy en ${service}",
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Montrez ce que vous regardez sur Discord", "discordRichPresenceDescription": "Montrez ce que vous regardez sur Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Synchroniser l'historique de visionnage avec Trakt", "traktDescription": "Synchroniser l'historique de visionnage avec Trakt",
"trackers": "Trackers", "services": "Services",
"trackersDescription": "Synchroniser la progression avec Trakt, MyAnimeList, AniList et Simkl", "servicesDescription": "Connectez Trakt, MyAnimeList, Seerr et plus",
"companionRemoteServer": "Serveur de télécommande", "companionRemoteServer": "Serveur de télécommande",
"companionRemoteServerDescription": "Autoriser les appareils mobiles de votre réseau à contrôler cette application", "companionRemoteServerDescription": "Autoriser les appareils mobiles de votre réseau à contrôler cette application",
"autoPip": "Image dans l'image automatique", "autoPip": "Image dans l'image automatique",
@@ -416,7 +416,7 @@
"setScore": "Définir une note", "setScore": "Définir une note",
"saved": "Enregistré", "saved": "Enregistré",
"notAvailable": "Aucune correspondance trouvée", "notAvailable": "Aucune correspondance trouvée",
"noConnectedTrackers": "Connectez un tracker dans Paramètres pour y noter." "noConnectedServices": "Connectez un service dans les Réglages pour noter ici."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, film", "mediaCardMovie": "${title}, film",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Medias", "libraries": "Medias",
"downloads": "Téléch.", "downloads": "Téléch.",
"liveTv": "TV direct" "liveTv": "TV direct",
"explore": "Explorer"
},
"explore": {
"title": "Explorer",
"selectSource": "Sélectionner la source",
"rows": {
"watchlist": "Liste de suivi",
"recommendedMovies": "Films recommandés",
"recommendedShows": "Show TV recommandés",
"trendingMovies": "Films tendance",
"trendingShows": "Show TV tendance",
"popularMovies": "Films populaires",
"popularShows": "Show TV populaires",
"suggestedAnime": "Anime suggérés",
"airingAnime": "Meilleurs anime en diffusion",
"popularAnime": "Anime les plus populaires",
"trending": "Tendances",
"upcomingMovies": "Films à venir",
"upcomingShows": "Show TV à venir"
},
"status": {
"airing": "En cours",
"ended": "Terminée",
"canceled": "Annulée",
"upcoming": "À venir"
},
"episodeCount": {
"one": "${n} épisode",
"other": "${n} épisodes"
},
"cast": "Cast",
"characters": "Personnages",
"addToWatchlist": "Ajouter à la liste de suivi",
"removeFromWatchlist": "Retirer de la liste de suivi",
"watchlistUpdateFailed": "Impossible de mettre à jour la liste de suivi",
"notInLibrary": "Absent de votre bibliothèque",
"inTheseLibraries": "Dans ces bibliothèques",
"availableOn": "Disponible sur ${server}",
"checkingLibrary": "Vérification de votre bibliothèque...",
"emptyTitle": "Rien ici pour l'instant",
"emptyMessage": "Les rangées de ${source} apparaîtront ici une fois qu'elles auront du contenu.",
"searchHint": "Rechercher dans ${source}",
"searchEmpty": "Aucun résultat pour \"${query}\"",
"searchPrompt": "Recherchez des films et des séries sur ${source}.",
"searchFailed": "Échec de la recherche. Vérifiez votre connexion et réessayez."
}, },
"liveTv": { "liveTv": {
"title": "TV en direct", "title": "TV en direct",
@@ -1384,9 +1429,41 @@
"watchedSync": "Synchroniser le statut « vu »", "watchedSync": "Synchroniser le statut « vu »",
"watchedSyncDescription": "Lorsque vous marquez un élément comme vu dans Plezy, il l'est aussi sur Trakt." "watchedSyncDescription": "Lorsque vous marquez un élément comme vu dans Plezy, il l'est aussi sur Trakt."
}, },
"trackers": { "seerr": {
"title": "Trackers", "title": "Seerr",
"hubSubtitle": "Synchronisez la progression de visionnage avec Trakt et d'autres services.", "connectTitle": "Connecter Seerr",
"serverUrl": "URL du serveur",
"serverUrlHelper": "L'adresse de votre instance Seerr",
"checkServer": "Continuer",
"signInWithJellyfin": "Se connecter avec Jellyfin",
"signInWithEmby": "Se connecter avec Emby",
"signInWithLocal": "Utiliser un compte local",
"email": "E-mail",
"noSignInMethods": "Cette instance Seerr ne propose aucune méthode de connexion prise en charge par Plezy.",
"instance": "Instance",
"disconnectConfirm": "Déconnecter Seerr ?",
"disconnectConfirmBody": "Plezy oubliera cette instance Seerr. Reconnectez à tout moment.",
"request": "Demander",
"request4k": "Demander en 4K",
"seasons": "Saisons",
"allSeasons": "Toutes les saisons",
"advancedOptions": "Avancé",
"destinationServer": "Serveur de destination",
"qualityProfile": "Profil de qualité",
"rootFolder": "Dossier racine",
"languageProfile": "Profil de langue",
"requestSubmitted": "Demande envoyée",
"requestFailed": "Échec de la demande : ${error}",
"requestsLoadFailed": "Impossible de charger les options de demande",
"nothingToRequest": "Tout est déjà disponible ou demandé.",
"statusAvailable": "Disponible",
"statusPartiallyAvailable": "Partiellement disponible",
"statusRequested": "Demandé",
"statusProcessing": "En cours de traitement"
},
"services": {
"title": "Services",
"hubSubtitle": "Synchronisez votre progression et demandez de nouveaux titres.",
"notConnected": "Non connecté", "notConnected": "Non connecté",
"connectedAs": "Connecté en tant que @${username}", "connectedAs": "Connecté en tant que @${username}",
"scrobble": "Suivre la progression automatiquement", "scrobble": "Suivre la progression automatiquement",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "Déconnecter ${service} ?", "disconnectConfirm": "Déconnecter ${service} ?",
"disconnectConfirmBody": "Plezy cessera de mettre à jour ${service}. Reconnectez à tout moment.", "disconnectConfirmBody": "Plezy cessera de mettre à jour ${service}. Reconnectez à tout moment.",
"connectFailed": "Échec de la connexion à ${service}. Réessayez.", "connectFailed": "Échec de la connexion à ${service}. Réessayez.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Activer Plezy sur ${service}", "title": "Activer Plezy sur ${service}",
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Mostra su Discord cosa stai guardando", "discordRichPresenceDescription": "Mostra su Discord cosa stai guardando",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Sincronizza la cronologia di visione con Trakt", "traktDescription": "Sincronizza la cronologia di visione con Trakt",
"trackers": "Tracker", "services": "Servizi",
"trackersDescription": "Sincronizza i progressi con Trakt, MyAnimeList, AniList e Simkl", "servicesDescription": "Connetti Trakt, MyAnimeList, Seerr e altro",
"companionRemoteServer": "Server telecomando", "companionRemoteServer": "Server telecomando",
"companionRemoteServerDescription": "Consenti ai dispositivi mobili nella tua rete di controllare questa app", "companionRemoteServerDescription": "Consenti ai dispositivi mobili nella tua rete di controllare questa app",
"autoPip": "Picture-in-Picture automatico", "autoPip": "Picture-in-Picture automatico",
@@ -416,7 +416,7 @@
"setScore": "Imposta un punteggio", "setScore": "Imposta un punteggio",
"saved": "Salvato", "saved": "Salvato",
"notAvailable": "Nessuna corrispondenza trovata", "notAvailable": "Nessuna corrispondenza trovata",
"noConnectedTrackers": "Collega un tracker in Impostazioni per valutarlo lì." "noConnectedServices": "Connetti un servizio nelle Impostazioni per valutare lì."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, film", "mediaCardMovie": "${title}, film",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Librerie", "libraries": "Librerie",
"downloads": "Download", "downloads": "Download",
"liveTv": "TV Live" "liveTv": "TV Live",
"explore": "Scopri"
},
"explore": {
"title": "Scopri",
"selectSource": "Seleziona fonte",
"rows": {
"watchlist": "Watchlist",
"recommendedMovies": "Film consigliati",
"recommendedShows": "Serie TV consigliate",
"trendingMovies": "Film di tendenza",
"trendingShows": "Serie TV di tendenza",
"popularMovies": "Film popolari",
"popularShows": "Serie TV popolari",
"suggestedAnime": "Anime suggeriti",
"airingAnime": "Migliori anime in onda",
"popularAnime": "Anime più popolari",
"trending": "Di tendenza",
"upcomingMovies": "Film in arrivo",
"upcomingShows": "Serie TV in arrivo"
},
"searchHint": "Cerca su ${source}",
"searchEmpty": "Nessun risultato per \"${query}\"",
"searchPrompt": "Cerca film e serie TV su ${source}.",
"searchFailed": "Ricerca fallita. Controlla la connessione e riprova.",
"status": {
"airing": "In onda",
"ended": "Conclusa",
"canceled": "Cancellata",
"upcoming": "In arrivo"
},
"episodeCount": {
"one": "${n} episodio",
"other": "${n} episodi"
},
"cast": "Attori",
"characters": "Personaggi",
"addToWatchlist": "Aggiungi alla Watchlist",
"removeFromWatchlist": "Rimuovi dalla Watchlist",
"watchlistUpdateFailed": "Impossibile aggiornare la Watchlist",
"notInLibrary": "Non è nella tua libreria",
"inTheseLibraries": "In queste librerie",
"availableOn": "Disponibile su ${server}",
"checkingLibrary": "Controllo della tua libreria...",
"emptyTitle": "Ancora niente qui",
"emptyMessage": "Le righe da ${source} appariranno qui una volta che avranno dei contenuti."
}, },
"liveTv": { "liveTv": {
"title": "TV in diretta", "title": "TV in diretta",
@@ -1384,9 +1429,41 @@
"watchedSync": "Sincronizza stato visualizzato", "watchedSync": "Sincronizza stato visualizzato",
"watchedSyncDescription": "Quando segni elementi come visti in Plezy, vengono segnati anche su Trakt." "watchedSyncDescription": "Quando segni elementi come visti in Plezy, vengono segnati anche su Trakt."
}, },
"trackers": { "seerr": {
"title": "Tracker", "title": "Seerr",
"hubSubtitle": "Sincronizza l'avanzamento di visione con Trakt e altri servizi.", "connectTitle": "Connetti Seerr",
"serverUrl": "URL del server",
"serverUrlHelper": "L'indirizzo della tua istanza Seerr",
"checkServer": "Continua",
"signInWithJellyfin": "Accedi con Jellyfin",
"signInWithEmby": "Accedi con Emby",
"signInWithLocal": "Usa un account locale",
"email": "Email",
"noSignInMethods": "Questa istanza Seerr non offre alcun metodo di accesso supportato da Plezy.",
"instance": "Istanza",
"disconnectConfirm": "Disconnettere Seerr?",
"disconnectConfirmBody": "Plezy dimenticherà questa istanza Seerr. Riconnetti quando vuoi.",
"request": "Richiedi",
"request4k": "Richiedi in 4K",
"seasons": "Stagioni",
"allSeasons": "Tutte le stagioni",
"advancedOptions": "Avanzate",
"destinationServer": "Server di destinazione",
"qualityProfile": "Profilo qualità",
"rootFolder": "Cartella radice",
"languageProfile": "Profilo lingua",
"requestSubmitted": "Richiesta inviata",
"requestFailed": "Richiesta non riuscita: ${error}",
"requestsLoadFailed": "Impossibile caricare le opzioni di richiesta",
"nothingToRequest": "Tutto è già disponibile o richiesto.",
"statusAvailable": "Disponibile",
"statusPartiallyAvailable": "Parzialmente disponibile",
"statusRequested": "Richiesto",
"statusProcessing": "In elaborazione"
},
"services": {
"title": "Servizi",
"hubSubtitle": "Sincronizza i progressi di visione e richiedi nuovi titoli.",
"notConnected": "Non connesso", "notConnected": "Non connesso",
"connectedAs": "Connesso come @${username}", "connectedAs": "Connesso come @${username}",
"scrobble": "Traccia i progressi automaticamente", "scrobble": "Traccia i progressi automaticamente",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "Disconnettere ${service}?", "disconnectConfirm": "Disconnettere ${service}?",
"disconnectConfirmBody": "Plezy smetterà di aggiornare ${service}. Riconnetti quando vuoi.", "disconnectConfirmBody": "Plezy smetterà di aggiornare ${service}. Riconnetti quando vuoi.",
"connectFailed": "Impossibile connettersi a ${service}. Riprova.", "connectFailed": "Impossibile connettersi a ${service}. Riprova.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Attiva Plezy su ${service}", "title": "Attiva Plezy su ${service}",
+86 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Discordで視聴中の内容を表示", "discordRichPresenceDescription": "Discordで視聴中の内容を表示",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "視聴履歴を Trakt と同期", "traktDescription": "視聴履歴を Trakt と同期",
"trackers": "トラッカー", "services": "サービス",
"trackersDescription": "進捗を Trakt、MyAnimeList、AniList、Simkl と同期", "servicesDescription": "Trakt、MyAnimeList、Seerr などを接続",
"companionRemoteServer": "コンパニオンリモートサーバー", "companionRemoteServer": "コンパニオンリモートサーバー",
"companionRemoteServerDescription": "ネットワーク上のモバイルデバイスからこのアプリを操作できるようにする", "companionRemoteServerDescription": "ネットワーク上のモバイルデバイスからこのアプリを操作できるようにする",
"autoPip": "自動ピクチャーインピクチャー", "autoPip": "自動ピクチャーインピクチャー",
@@ -416,7 +416,7 @@
"setScore": "スコアを設定", "setScore": "スコアを設定",
"saved": "保存済み", "saved": "保存済み",
"notAvailable": "一致なし", "notAvailable": "一致なし",
"noConnectedTrackers": "設定でトラッカーを接続すると、そこで評価できます。" "noConnectedServices": "評価するには、設定でサービスを接続してください。"
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}、映画", "mediaCardMovie": "${title}、映画",
@@ -842,7 +842,51 @@
"navigation": { "navigation": {
"libraries": "ライブラリ", "libraries": "ライブラリ",
"downloads": "ダウンロード", "downloads": "ダウンロード",
"liveTv": "ライブTV" "liveTv": "ライブTV",
"explore": "探索"
},
"explore": {
"title": "探索",
"selectSource": "ソースを選択",
"rows": {
"watchlist": "ウォッチリスト",
"recommendedMovies": "おすすめの映画",
"recommendedShows": "おすすめのテレビ番組",
"trendingMovies": "トレンドの映画",
"trendingShows": "トレンドのテレビ番組",
"popularMovies": "人気の映画",
"popularShows": "人気のテレビ番組",
"suggestedAnime": "おすすめのアニメ",
"airingAnime": "放送中の注目アニメ",
"popularAnime": "人気のアニメ",
"trending": "トレンド",
"upcomingMovies": "近日公開の映画",
"upcomingShows": "放送予定の番組"
},
"searchHint": "${source} で検索",
"searchEmpty": "「${query}」の結果が見つかりません",
"searchPrompt": "${source} で映画やテレビ番組を検索します。",
"searchFailed": "検索に失敗しました。接続を確認してもう一度お試しください。",
"status": {
"airing": "放送中",
"ended": "放送終了",
"canceled": "打ち切り",
"upcoming": "放送予定"
},
"episodeCount": {
"other": "${n} 話"
},
"cast": "キャスト",
"characters": "キャラクター",
"addToWatchlist": "ウォッチリストに追加",
"removeFromWatchlist": "ウォッチリストから削除",
"watchlistUpdateFailed": "ウォッチリストを更新できませんでした",
"notInLibrary": "ライブラリにありません",
"inTheseLibraries": "これらのライブラリにあります",
"availableOn": "${server}で視聴可能",
"checkingLibrary": "ライブラリを確認中...",
"emptyTitle": "まだ何もありません",
"emptyMessage": "${source}にコンテンツが追加されると、ここに表示されます。"
}, },
"liveTv": { "liveTv": {
"title": "ライブTV", "title": "ライブTV",
@@ -1383,9 +1427,41 @@
"watchedSync": "視聴済みステータスを同期", "watchedSync": "視聴済みステータスを同期",
"watchedSyncDescription": "Plezy で項目を視聴済みにすると、Trakt でも視聴済みになります。" "watchedSyncDescription": "Plezy で項目を視聴済みにすると、Trakt でも視聴済みになります。"
}, },
"trackers": { "seerr": {
"title": "トラッカー", "title": "Seerr",
"hubSubtitle": "視聴進捗をTraktや他のサービスと同期します。", "connectTitle": "Seerrに接続",
"serverUrl": "サーバー URL",
"serverUrlHelper": "Seerr インスタンスのアドレス",
"checkServer": "続ける",
"signInWithJellyfin": "Jellyfinでサインイン",
"signInWithEmby": "Embyでサインイン",
"signInWithLocal": "ローカルアカウントを使う",
"email": "メールアドレス",
"noSignInMethods": "この Seerr インスタンスには Plezy が対応しているサインイン方法がありません。",
"instance": "インスタンス",
"disconnectConfirm": "Seerr の接続を解除しますか?",
"disconnectConfirmBody": "Plezy はこの Seerr インスタンスの情報を削除します。いつでも再接続できます。",
"request": "リクエスト",
"request4k": "4K でリクエスト",
"seasons": "シーズン",
"allSeasons": "全シーズン",
"advancedOptions": "詳細",
"destinationServer": "宛先サーバー",
"qualityProfile": "画質プロファイル",
"rootFolder": "ルートフォルダ",
"languageProfile": "言語プロファイル",
"requestSubmitted": "リクエストを送信しました",
"requestFailed": "リクエストに失敗しました: ${error}",
"requestsLoadFailed": "リクエストオプションを読み込めませんでした",
"nothingToRequest": "すべてすでに利用可能またはリクエスト済みです。",
"statusAvailable": "利用可能",
"statusPartiallyAvailable": "一部利用可能",
"statusRequested": "リクエスト済み",
"statusProcessing": "処理中"
},
"services": {
"title": "サービス",
"hubSubtitle": "視聴の進捗を同期して、新しいタイトルをリクエストします。",
"notConnected": "未接続", "notConnected": "未接続",
"connectedAs": "@${username} として接続済み", "connectedAs": "@${username} として接続済み",
"scrobble": "進捗を自動で記録", "scrobble": "進捗を自動で記録",
@@ -1393,10 +1469,11 @@
"disconnectConfirm": "${service} の接続を解除しますか?", "disconnectConfirm": "${service} の接続を解除しますか?",
"disconnectConfirmBody": "Plezyは${service}の更新を停止します。いつでも再接続できます。", "disconnectConfirmBody": "Plezyは${service}の更新を停止します。いつでも再接続できます。",
"connectFailed": "${service} に接続できませんでした。もう一度お試しください。", "connectFailed": "${service} に接続できませんでした。もう一度お試しください。",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "${service} で Plezy を有効化", "title": "${service} で Plezy を有効化",
+86 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Discord에서 시청 중인 콘텐츠 표시", "discordRichPresenceDescription": "Discord에서 시청 중인 콘텐츠 표시",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Trakt와 시청 기록 동기화", "traktDescription": "Trakt와 시청 기록 동기화",
"trackers": "트래커", "services": "서비스",
"trackersDescription": "Trakt, MyAnimeList, AniList 및 Simkl에 진행률 동기화", "servicesDescription": "Trakt, MyAnimeList, Seerr 등 연결",
"companionRemoteServer": "컴패니언 리모트 서버", "companionRemoteServer": "컴패니언 리모트 서버",
"companionRemoteServerDescription": "네트워크의 모바일 기기가 이 앱을 제어할 수 있도록 허용", "companionRemoteServerDescription": "네트워크의 모바일 기기가 이 앱을 제어할 수 있도록 허용",
"autoPip": "자동 PIP 모드", "autoPip": "자동 PIP 모드",
@@ -416,7 +416,7 @@
"setScore": "점수 설정", "setScore": "점수 설정",
"saved": "저장됨", "saved": "저장됨",
"notAvailable": "일치 항목 없음", "notAvailable": "일치 항목 없음",
"noConnectedTrackers": "설정에서 트래커를 연결하면 거기에도 평가할 수 있습니다." "noConnectedServices": "평가하려면 설정에서 서비스를 연결하세요."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, 영화", "mediaCardMovie": "${title}, 영화",
@@ -842,7 +842,51 @@
"navigation": { "navigation": {
"libraries": "미디어 라이브러리", "libraries": "미디어 라이브러리",
"downloads": "다운로드", "downloads": "다운로드",
"liveTv": "실시간 TV" "liveTv": "실시간 TV",
"explore": "탐색"
},
"explore": {
"title": "탐색",
"selectSource": "소스 선택",
"rows": {
"watchlist": "관심 목록",
"recommendedMovies": "추천 영화",
"recommendedShows": "추천 TV 프로그램",
"trendingMovies": "지금 뜨는 영화",
"trendingShows": "지금 뜨는 TV 프로그램",
"popularMovies": "인기 영화",
"popularShows": "인기 TV 프로그램",
"suggestedAnime": "추천 애니메이션",
"airingAnime": "방영 중인 인기 애니메이션",
"popularAnime": "가장 인기 있는 애니메이션",
"trending": "지금 뜨는 콘텐츠",
"upcomingMovies": "개봉 예정 영화",
"upcomingShows": "방영 예정 TV 프로그램"
},
"searchHint": "${source}에서 검색",
"searchEmpty": "「${query}」에 대한 결과가 없습니다",
"searchPrompt": "${source}에서 영화와 TV 프로그램을 검색하세요.",
"searchFailed": "검색에 실패했습니다. 연결을 확인하고 다시 시도하세요.",
"status": {
"airing": "방영 중",
"ended": "종영",
"canceled": "취소됨",
"upcoming": "방영 예정"
},
"episodeCount": {
"other": "${n}화"
},
"cast": "출연진",
"characters": "캐릭터",
"addToWatchlist": "관심 목록에 추가",
"removeFromWatchlist": "관심 목록에서 제거",
"watchlistUpdateFailed": "관심 목록을 업데이트하지 못했습니다",
"notInLibrary": "라이브러리에 없음",
"inTheseLibraries": "이 라이브러리에 있음",
"availableOn": "${server}에서 이용 가능",
"checkingLibrary": "라이브러리 확인 중...",
"emptyTitle": "아직 아무것도 없습니다",
"emptyMessage": "${source}에 콘텐츠가 추가되면 여기에 표시됩니다."
}, },
"liveTv": { "liveTv": {
"title": "실시간 TV", "title": "실시간 TV",
@@ -1383,9 +1427,41 @@
"watchedSync": "시청 상태 동기화", "watchedSync": "시청 상태 동기화",
"watchedSyncDescription": "Plezy에서 시청 완료로 표시한 항목이 Trakt에도 시청 완료로 표시됩니다." "watchedSyncDescription": "Plezy에서 시청 완료로 표시한 항목이 Trakt에도 시청 완료로 표시됩니다."
}, },
"trackers": { "seerr": {
"title": "트래커", "title": "Seerr",
"hubSubtitle": "시청 진행률을 Trakt 및 다른 서비스와 동기화합니다.", "connectTitle": "Seerr에 연결",
"serverUrl": "서버 URL",
"serverUrlHelper": "Seerr 인스턴스의 주소",
"checkServer": "계속",
"signInWithJellyfin": "Jellyfin으로 로그인",
"signInWithEmby": "Emby로 로그인",
"signInWithLocal": "로컬 계정 사용",
"email": "이메일",
"noSignInMethods": "이 Seerr 인스턴스에는 Plezy가 지원하는 로그인 방법이 없습니다.",
"instance": "인스턴스",
"disconnectConfirm": "Seerr 연결을 해제하시겠습니까?",
"disconnectConfirmBody": "Plezy가 이 Seerr 인스턴스를 삭제합니다. 언제든 다시 연결할 수 있습니다.",
"request": "요청",
"request4k": "4K로 요청",
"seasons": "시즌",
"allSeasons": "모든 시즌",
"advancedOptions": "고급",
"destinationServer": "대상 서버",
"qualityProfile": "화질 프로파일",
"rootFolder": "루트 폴더",
"languageProfile": "언어 프로파일",
"requestSubmitted": "요청을 제출했습니다",
"requestFailed": "요청 실패: ${error}",
"requestsLoadFailed": "요청 옵션을 불러올 수 없습니다",
"nothingToRequest": "모두 이미 사용 가능하거나 요청되었습니다.",
"statusAvailable": "사용 가능",
"statusPartiallyAvailable": "일부 사용 가능",
"statusRequested": "요청됨",
"statusProcessing": "처리 중"
},
"services": {
"title": "서비스",
"hubSubtitle": "시청 진행률을 동기화하고 새 작품을 요청하세요.",
"notConnected": "연결되지 않음", "notConnected": "연결되지 않음",
"connectedAs": "@${username} 로 연결됨", "connectedAs": "@${username} 로 연결됨",
"scrobble": "진행률 자동 추적", "scrobble": "진행률 자동 추적",
@@ -1393,10 +1469,11 @@
"disconnectConfirm": "${service} 연결을 해제하시겠습니까?", "disconnectConfirm": "${service} 연결을 해제하시겠습니까?",
"disconnectConfirmBody": "Plezy가 ${service} 업데이트를 중지합니다. 언제든 다시 연결할 수 있습니다.", "disconnectConfirmBody": "Plezy가 ${service} 업데이트를 중지합니다. 언제든 다시 연결할 수 있습니다.",
"connectFailed": "${service}에 연결할 수 없습니다. 다시 시도하세요.", "connectFailed": "${service}에 연결할 수 없습니다. 다시 시도하세요.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "${service}에서 Plezy 활성화", "title": "${service}에서 Plezy 활성화",
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Vis hva du ser på Discord", "discordRichPresenceDescription": "Vis hva du ser på Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Synkroniser visningshistorikk med Trakt", "traktDescription": "Synkroniser visningshistorikk med Trakt",
"trackers": "Trackere", "services": "Tjenester",
"trackersDescription": "Synkroniser fremdrift til Trakt, MyAnimeList, AniList og Simkl", "servicesDescription": "Koble til Trakt, MyAnimeList, Seerr og mer",
"companionRemoteServer": "Companion Remote-server", "companionRemoteServer": "Companion Remote-server",
"companionRemoteServerDescription": "Tillat mobilenheter på nettverket ditt å styre denne appen", "companionRemoteServerDescription": "Tillat mobilenheter på nettverket ditt å styre denne appen",
"autoPip": "Auto bilde-i-bilde", "autoPip": "Auto bilde-i-bilde",
@@ -416,7 +416,7 @@
"setScore": "Sett en poengsum", "setScore": "Sett en poengsum",
"saved": "Lagret", "saved": "Lagret",
"notAvailable": "Ingen treff", "notAvailable": "Ingen treff",
"noConnectedTrackers": "Koble til en sporer i Innstillinger for å vurdere der." "noConnectedServices": "Koble til en tjeneste i Innstillinger for å vurdere her."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, film", "mediaCardMovie": "${title}, film",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Biblioteker", "libraries": "Biblioteker",
"downloads": "Nedlastinger", "downloads": "Nedlastinger",
"liveTv": "Direkte-TV" "liveTv": "Direkte-TV",
"explore": "Utforsk"
},
"explore": {
"title": "Utforsk",
"selectSource": "Velg kilde",
"rows": {
"watchlist": "Ønskeliste",
"recommendedMovies": "Anbefalte filmer",
"recommendedShows": "Anbefalte serier",
"trendingMovies": "Trending filmer",
"trendingShows": "Trending serier",
"popularMovies": "Populære filmer",
"popularShows": "Populære serier",
"suggestedAnime": "Foreslått anime",
"airingAnime": "Topp pågående anime",
"popularAnime": "Mest populære anime",
"trending": "Trending",
"upcomingMovies": "Kommende filmer",
"upcomingShows": "Kommende serier"
},
"searchHint": "Søk i ${source}",
"searchEmpty": "Ingen treff for \"${query}\"",
"searchPrompt": "Søk etter filmer og serier på ${source}.",
"searchFailed": "Søk mislyktes. Sjekk tilkoblingen og prøv igjen.",
"status": {
"airing": "Sendes",
"ended": "Avsluttet",
"canceled": "Avlyst",
"upcoming": "Kommende"
},
"episodeCount": {
"one": "${n} episode",
"other": "${n} episoder"
},
"cast": "Skuespillere",
"characters": "Figurer",
"addToWatchlist": "Legg til i ønskeliste",
"removeFromWatchlist": "Fjern fra ønskeliste",
"watchlistUpdateFailed": "Kunne ikke oppdatere ønskelisten",
"notInLibrary": "Ikke i biblioteket ditt",
"inTheseLibraries": "I disse bibliotekene",
"availableOn": "Tilgjengelig på ${server}",
"checkingLibrary": "Sjekker biblioteket ditt...",
"emptyTitle": "Ingenting her ennå",
"emptyMessage": "Rader fra ${source} vises her når de har innhold."
}, },
"liveTv": { "liveTv": {
"title": "Direkte-TV", "title": "Direkte-TV",
@@ -1384,9 +1429,41 @@
"watchedSync": "Synkroniser sett-status", "watchedSync": "Synkroniser sett-status",
"watchedSyncDescription": "Når du markerer noe som sett i Plezy, markeres det også på Trakt." "watchedSyncDescription": "Når du markerer noe som sett i Plezy, markeres det også på Trakt."
}, },
"trackers": { "seerr": {
"title": "Trackere", "title": "Seerr",
"hubSubtitle": "Synkroniser seerfremdrift med Trakt og andre tjenester.", "connectTitle": "Koble til Seerr",
"serverUrl": "Server-URL",
"serverUrlHelper": "Adressen til Seerr-instansen din",
"checkServer": "Fortsett",
"signInWithJellyfin": "Logg inn med Jellyfin",
"signInWithEmby": "Logg inn med Emby",
"signInWithLocal": "Bruk en lokal konto",
"email": "E-post",
"noSignInMethods": "Denne Seerr-instansen tilbyr ingen innloggingsmetode som Plezy støtter.",
"instance": "Instans",
"disconnectConfirm": "Koble fra Seerr?",
"disconnectConfirmBody": "Plezy glemmer denne Seerr-instansen. Koble til igjen når som helst.",
"request": "Forespør",
"request4k": "Forespør i 4K",
"seasons": "Sesonger",
"allSeasons": "Alle sesonger",
"advancedOptions": "Avansert",
"destinationServer": "Målserver",
"qualityProfile": "Kvalitetsprofil",
"rootFolder": "Rotmappe",
"languageProfile": "Språkprofil",
"requestSubmitted": "Forespørsel sendt",
"requestFailed": "Forespørsel mislyktes: ${error}",
"requestsLoadFailed": "Kunne ikke laste forespørselsalternativer",
"nothingToRequest": "Alt er allerede tilgjengelig eller forespurt.",
"statusAvailable": "Tilgjengelig",
"statusPartiallyAvailable": "Delvis tilgjengelig",
"statusRequested": "Forespurt",
"statusProcessing": "Behandler"
},
"services": {
"title": "Tjenester",
"hubSubtitle": "Synkroniser fremdrift og forespør nye titler.",
"notConnected": "Ikke tilkoblet", "notConnected": "Ikke tilkoblet",
"connectedAs": "Tilkoblet som @${username}", "connectedAs": "Tilkoblet som @${username}",
"scrobble": "Registrer fremdrift automatisk", "scrobble": "Registrer fremdrift automatisk",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "Koble fra ${service}?", "disconnectConfirm": "Koble fra ${service}?",
"disconnectConfirmBody": "Plezy slutter å oppdatere ${service}. Koble til igjen når som helst.", "disconnectConfirmBody": "Plezy slutter å oppdatere ${service}. Koble til igjen når som helst.",
"connectFailed": "Kunne ikke koble til ${service}. Prøv igjen.", "connectFailed": "Kunne ikke koble til ${service}. Prøv igjen.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Aktiver Plezy på ${service}", "title": "Aktiver Plezy på ${service}",
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Toon op Discord wat je aan het kijken bent", "discordRichPresenceDescription": "Toon op Discord wat je aan het kijken bent",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Kijkgeschiedenis synchroniseren met Trakt", "traktDescription": "Kijkgeschiedenis synchroniseren met Trakt",
"trackers": "Trackers", "services": "Services",
"trackersDescription": "Voortgang synchroniseren met Trakt, MyAnimeList, AniList en Simkl", "servicesDescription": "Verbind Trakt, MyAnimeList, Seerr en meer",
"companionRemoteServer": "Companion Remote-server", "companionRemoteServer": "Companion Remote-server",
"companionRemoteServerDescription": "Sta mobiele apparaten op je netwerk toe om deze app te bedienen", "companionRemoteServerDescription": "Sta mobiele apparaten op je netwerk toe om deze app te bedienen",
"autoPip": "Automatische beeld-in-beeld", "autoPip": "Automatische beeld-in-beeld",
@@ -416,7 +416,7 @@
"setScore": "Score instellen", "setScore": "Score instellen",
"saved": "Opgeslagen", "saved": "Opgeslagen",
"notAvailable": "Geen match gevonden", "notAvailable": "Geen match gevonden",
"noConnectedTrackers": "Verbind een tracker in Instellingen om daar te beoordelen." "noConnectedServices": "Verbind een service in Instellingen om daar te beoordelen."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, film", "mediaCardMovie": "${title}, film",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Media", "libraries": "Media",
"downloads": "Downloads", "downloads": "Downloads",
"liveTv": "Live TV" "liveTv": "Live TV",
"explore": "Verkennen"
},
"explore": {
"title": "Verkennen",
"selectSource": "Bron kiezen",
"rows": {
"watchlist": "Kijklijst",
"recommendedMovies": "Aanbevolen films",
"recommendedShows": "Aanbevolen series",
"trendingMovies": "Trending films",
"trendingShows": "Trending series",
"popularMovies": "Populaire films",
"popularShows": "Populaire series",
"suggestedAnime": "Voorgestelde anime",
"airingAnime": "Top lopende anime",
"popularAnime": "Populairste anime",
"trending": "Trending",
"upcomingMovies": "Aankomende films",
"upcomingShows": "Aankomende series"
},
"searchHint": "Zoeken in ${source}",
"searchEmpty": "Geen resultaten voor \"${query}\"",
"searchPrompt": "Zoek naar films en series op ${source}.",
"searchFailed": "Zoeken mislukt. Controleer je verbinding en probeer opnieuw.",
"status": {
"airing": "Lopend",
"ended": "Afgelopen",
"canceled": "Geannuleerd",
"upcoming": "Binnenkort"
},
"episodeCount": {
"one": "${n} aflevering",
"other": "${n} afleveringen"
},
"cast": "Acteurs",
"characters": "Personages",
"addToWatchlist": "Toevoegen aan kijklijst",
"removeFromWatchlist": "Verwijderen uit kijklijst",
"watchlistUpdateFailed": "Kon kijklijst niet bijwerken",
"notInLibrary": "Niet in je bibliotheek",
"inTheseLibraries": "In deze bibliotheken",
"availableOn": "Beschikbaar op ${server}",
"checkingLibrary": "Je bibliotheek controleren...",
"emptyTitle": "Hier is nog niets",
"emptyMessage": "Rijen van ${source} verschijnen hier zodra ze inhoud hebben."
}, },
"liveTv": { "liveTv": {
"title": "Live TV", "title": "Live TV",
@@ -1384,9 +1429,41 @@
"watchedSync": "Bekeken-status synchroniseren", "watchedSync": "Bekeken-status synchroniseren",
"watchedSyncDescription": "Wanneer je items als bekeken markeert in Plezy, worden ze ook op Trakt gemarkeerd." "watchedSyncDescription": "Wanneer je items als bekeken markeert in Plezy, worden ze ook op Trakt gemarkeerd."
}, },
"trackers": { "seerr": {
"title": "Trackers", "title": "Seerr",
"hubSubtitle": "Synchroniseer kijkvoortgang met Trakt en andere diensten.", "connectTitle": "Verbinden met Seerr",
"serverUrl": "Server-URL",
"serverUrlHelper": "Het adres van je Seerr-instantie",
"checkServer": "Doorgaan",
"signInWithJellyfin": "Inloggen met Jellyfin",
"signInWithEmby": "Inloggen met Emby",
"signInWithLocal": "Een lokaal account gebruiken",
"email": "E-mail",
"noSignInMethods": "Deze Seerr-instantie biedt geen inlogmethode die Plezy ondersteunt.",
"instance": "Instantie",
"disconnectConfirm": "Seerr loskoppelen?",
"disconnectConfirmBody": "Plezy vergeet deze Seerr-instantie. Je kunt altijd opnieuw verbinden.",
"request": "Aanvragen",
"request4k": "Aanvragen in 4K",
"seasons": "Seizoenen",
"allSeasons": "Alle seizoenen",
"advancedOptions": "Geavanceerd",
"destinationServer": "Doelserver",
"qualityProfile": "Kwaliteitsprofiel",
"rootFolder": "Hoofdmap",
"languageProfile": "Taalprofiel",
"requestSubmitted": "Aanvraag verzonden",
"requestFailed": "Aanvraag mislukt: ${error}",
"requestsLoadFailed": "Kan aanvraagopties niet laden",
"nothingToRequest": "Alles is al beschikbaar of aangevraagd.",
"statusAvailable": "Beschikbaar",
"statusPartiallyAvailable": "Gedeeltelijk beschikbaar",
"statusRequested": "Aangevraagd",
"statusProcessing": "Verwerken"
},
"services": {
"title": "Services",
"hubSubtitle": "Synchroniseer kijkvoortgang en vraag nieuwe titels aan.",
"notConnected": "Niet verbonden", "notConnected": "Niet verbonden",
"connectedAs": "Verbonden als @${username}", "connectedAs": "Verbonden als @${username}",
"scrobble": "Voortgang automatisch volgen", "scrobble": "Voortgang automatisch volgen",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "${service} loskoppelen?", "disconnectConfirm": "${service} loskoppelen?",
"disconnectConfirmBody": "Plezy stopt met ${service} bijwerken. Je kunt altijd opnieuw verbinden.", "disconnectConfirmBody": "Plezy stopt met ${service} bijwerken. Je kunt altijd opnieuw verbinden.",
"connectFailed": "Kan niet verbinden met ${service}. Probeer opnieuw.", "connectFailed": "Kan niet verbinden met ${service}. Probeer opnieuw.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Plezy activeren op ${service}", "title": "Plezy activeren op ${service}",
+89 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Pokaż, co oglądasz na Discordzie", "discordRichPresenceDescription": "Pokaż, co oglądasz na Discordzie",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Synchronizuj historię oglądania z Trakt", "traktDescription": "Synchronizuj historię oglądania z Trakt",
"trackers": "Trackery", "services": "Usługi",
"trackersDescription": "Synchronizuj postęp z Trakt, MyAnimeList, AniList i Simkl", "servicesDescription": "Połącz Trakt, MyAnimeList, Seerr i inne",
"companionRemoteServer": "Serwer zdalnego sterowania", "companionRemoteServer": "Serwer zdalnego sterowania",
"companionRemoteServerDescription": "Pozwól urządzeniom mobilnym w sieci sterować tą aplikacją", "companionRemoteServerDescription": "Pozwól urządzeniom mobilnym w sieci sterować tą aplikacją",
"autoPip": "Automatyczny obraz w obrazie", "autoPip": "Automatyczny obraz w obrazie",
@@ -416,7 +416,7 @@
"setScore": "Ustaw ocenę", "setScore": "Ustaw ocenę",
"saved": "Zapisano", "saved": "Zapisano",
"notAvailable": "Nie znaleziono dopasowania", "notAvailable": "Nie znaleziono dopasowania",
"noConnectedTrackers": "Połącz tracker w Ustawieniach, aby tam oceniać." "noConnectedServices": "Połącz usługę w Ustawieniach, aby tam oceniać."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, film", "mediaCardMovie": "${title}, film",
@@ -842,7 +842,54 @@
"navigation": { "navigation": {
"libraries": "Biblioteki", "libraries": "Biblioteki",
"downloads": "Pobrania", "downloads": "Pobrania",
"liveTv": "TV na żywo" "liveTv": "TV na żywo",
"explore": "Przeglądaj"
},
"explore": {
"title": "Przeglądaj",
"selectSource": "Wybierz źródło",
"rows": {
"watchlist": "Lista do obejrzenia",
"recommendedMovies": "Rekomendowane filmy",
"recommendedShows": "Rekomendowane seriale",
"trendingMovies": "Filmy na czasie",
"trendingShows": "Seriale na czasie",
"popularMovies": "Popularne filmy",
"popularShows": "Popularne seriale",
"suggestedAnime": "Sugerowane anime",
"airingAnime": "Najlepsze emitowane anime",
"popularAnime": "Najpopularniejsze anime",
"trending": "Na czasie",
"upcomingMovies": "Nadchodzące filmy",
"upcomingShows": "Nadchodzące seriale"
},
"status": {
"airing": "W emisji",
"ended": "Zakończony",
"canceled": "Anulowany",
"upcoming": "Nadchodzący"
},
"episodeCount": {
"one": "${n} odcinek",
"few": "${n} odcinki",
"many": "${n} odcinków",
"other": "${n} odcinka"
},
"cast": "Obsada",
"characters": "Postacie",
"addToWatchlist": "Dodaj do listy do obejrzenia",
"removeFromWatchlist": "Usuń z listy do obejrzenia",
"watchlistUpdateFailed": "Nie udało się zaktualizować listy do obejrzenia",
"notInLibrary": "Nie ma tego w Twojej bibliotece",
"inTheseLibraries": "W tych bibliotekach",
"availableOn": "Dostępne na ${server}",
"checkingLibrary": "Sprawdzanie Twojej biblioteki...",
"emptyTitle": "Jeszcze nic tu nie ma",
"emptyMessage": "Wiersze z ${source} pojawią się tutaj, gdy będą zawierać treści.",
"searchHint": "Szukaj w ${source}",
"searchEmpty": "Brak wyników dla \"${query}\"",
"searchPrompt": "Szukaj filmów i seriali w ${source}.",
"searchFailed": "Wyszukiwanie nie powiodło się. Sprawdź połączenie i spróbuj ponownie."
}, },
"liveTv": { "liveTv": {
"title": "TV na żywo", "title": "TV na żywo",
@@ -1386,9 +1433,41 @@
"watchedSync": "Synchronizuj status obejrzane", "watchedSync": "Synchronizuj status obejrzane",
"watchedSyncDescription": "Gdy oznaczysz pozycje jako obejrzane w Plezy, zostaną też oznaczone w Trakt." "watchedSyncDescription": "Gdy oznaczysz pozycje jako obejrzane w Plezy, zostaną też oznaczone w Trakt."
}, },
"trackers": { "seerr": {
"title": "Trackery", "title": "Seerr",
"hubSubtitle": "Synchronizuj postęp oglądania z Trakt i innymi usługami.", "connectTitle": "Połącz Seerr",
"serverUrl": "Adres URL serwera",
"serverUrlHelper": "Adres Twojej instancji Seerr",
"checkServer": "Kontynuuj",
"signInWithJellyfin": "Zaloguj się przez Jellyfin",
"signInWithEmby": "Zaloguj się przez Emby",
"signInWithLocal": "Użyj konta lokalnego",
"email": "E-mail",
"noSignInMethods": "Ta instancja Seerr nie oferuje metody logowania obsługiwanej przez Plezy.",
"instance": "Instancja",
"disconnectConfirm": "Odłączyć Seerr?",
"disconnectConfirmBody": "Plezy zapomni tę instancję Seerr. Połącz ponownie w dowolnym momencie.",
"request": "Zamów",
"request4k": "Zamów w 4K",
"seasons": "Sezony",
"allSeasons": "Wszystkie sezony",
"advancedOptions": "Zaawansowane",
"destinationServer": "Serwer docelowy",
"qualityProfile": "Profil jakości",
"rootFolder": "Folder główny",
"languageProfile": "Profil językowy",
"requestSubmitted": "Zamówienie wysłane",
"requestFailed": "Zamówienie nie powiodło się: ${error}",
"requestsLoadFailed": "Nie udało się wczytać opcji zamówienia",
"nothingToRequest": "Wszystko jest już dostępne lub zamówione.",
"statusAvailable": "Dostępne",
"statusPartiallyAvailable": "Częściowo dostępne",
"statusRequested": "Zamówione",
"statusProcessing": "Przetwarzanie"
},
"services": {
"title": "Usługi",
"hubSubtitle": "Synchronizuj postęp oglądania i zamawiaj nowe tytuły.",
"notConnected": "Nie połączono", "notConnected": "Nie połączono",
"connectedAs": "Połączono jako @${username}", "connectedAs": "Połączono jako @${username}",
"scrobble": "Automatycznie śledź postęp", "scrobble": "Automatycznie śledź postęp",
@@ -1396,10 +1475,11 @@
"disconnectConfirm": "Odłączyć ${service}?", "disconnectConfirm": "Odłączyć ${service}?",
"disconnectConfirmBody": "Plezy przestanie aktualizować ${service}. Połącz ponownie w dowolnym momencie.", "disconnectConfirmBody": "Plezy przestanie aktualizować ${service}. Połącz ponownie w dowolnym momencie.",
"connectFailed": "Nie udało się połączyć z ${service}. Spróbuj ponownie.", "connectFailed": "Nie udało się połączyć z ${service}. Spróbuj ponownie.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Aktywuj Plezy w ${service}", "title": "Aktywuj Plezy w ${service}",
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Mostrar o que você está assistindo no Discord", "discordRichPresenceDescription": "Mostrar o que você está assistindo no Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Sincronizar histórico de exibição com Trakt", "traktDescription": "Sincronizar histórico de exibição com Trakt",
"trackers": "Rastreadores", "services": "Serviços",
"trackersDescription": "Sincronizar progresso com Trakt, MyAnimeList, AniList e Simkl", "servicesDescription": "Conecte Trakt, MyAnimeList, Seerr e mais",
"companionRemoteServer": "Servidor de controlo remoto", "companionRemoteServer": "Servidor de controlo remoto",
"companionRemoteServerDescription": "Permitir que dispositivos móveis na sua rede controlem esta aplicação", "companionRemoteServerDescription": "Permitir que dispositivos móveis na sua rede controlem esta aplicação",
"autoPip": "Picture-in-Picture Automático", "autoPip": "Picture-in-Picture Automático",
@@ -416,7 +416,7 @@
"setScore": "Definir pontuação", "setScore": "Definir pontuação",
"saved": "Salvo", "saved": "Salvo",
"notAvailable": "Nenhuma correspondência encontrada", "notAvailable": "Nenhuma correspondência encontrada",
"noConnectedTrackers": "Conecte um rastreador em Configurações para avaliar lá." "noConnectedServices": "Conecte um serviço nas Configurações para avaliar por lá."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, filme", "mediaCardMovie": "${title}, filme",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Bibliotecas", "libraries": "Bibliotecas",
"downloads": "Downloads", "downloads": "Downloads",
"liveTv": "TV ao Vivo" "liveTv": "TV ao Vivo",
"explore": "Explorar"
},
"explore": {
"title": "Explorar",
"selectSource": "Selecionar fonte",
"rows": {
"watchlist": "Lista para ver",
"recommendedMovies": "Filmes recomendados",
"recommendedShows": "Séries recomendadas",
"trendingMovies": "Filmes em alta",
"trendingShows": "Séries em alta",
"popularMovies": "Filmes populares",
"popularShows": "Séries populares",
"suggestedAnime": "Anime sugerido",
"airingAnime": "Melhor anime em exibição",
"popularAnime": "Anime mais popular",
"trending": "Em alta",
"upcomingMovies": "Próximos filmes",
"upcomingShows": "Próximas séries"
},
"status": {
"airing": "Em exibição",
"ended": "Finalizada",
"canceled": "Cancelada",
"upcoming": "Em breve"
},
"episodeCount": {
"one": "${n} episódio",
"other": "${n} episódios"
},
"cast": "Elenco",
"characters": "Personagens",
"addToWatchlist": "Adicionar à lista para ver",
"removeFromWatchlist": "Remover da lista para ver",
"watchlistUpdateFailed": "Não foi possível atualizar a lista para ver",
"notInLibrary": "Não está na sua biblioteca",
"inTheseLibraries": "Nestas bibliotecas",
"availableOn": "Disponível em ${server}",
"checkingLibrary": "Verificando a sua biblioteca...",
"emptyTitle": "Ainda não há nada aqui",
"emptyMessage": "As linhas de ${source} aparecerão aqui quando tiverem conteúdo.",
"searchHint": "Buscar em ${source}",
"searchEmpty": "Nenhum resultado para \"${query}\"",
"searchPrompt": "Busque filmes e séries em ${source}.",
"searchFailed": "Falha na busca. Verifique sua conexão e tente novamente."
}, },
"liveTv": { "liveTv": {
"title": "TV ao Vivo", "title": "TV ao Vivo",
@@ -1384,9 +1429,41 @@
"watchedSync": "Sincronizar status de assistido", "watchedSync": "Sincronizar status de assistido",
"watchedSyncDescription": "Ao marcar itens como assistidos no Plezy, eles também serão marcados no Trakt." "watchedSyncDescription": "Ao marcar itens como assistidos no Plezy, eles também serão marcados no Trakt."
}, },
"trackers": { "seerr": {
"title": "Rastreadores", "title": "Seerr",
"hubSubtitle": "Sincronize o progresso assistido com Trakt e outros serviços.", "connectTitle": "Conectar Seerr",
"serverUrl": "URL do servidor",
"serverUrlHelper": "O endereço da sua instância do Seerr",
"checkServer": "Continuar",
"signInWithJellyfin": "Entrar com Jellyfin",
"signInWithEmby": "Entrar com Emby",
"signInWithLocal": "Usar uma conta local",
"email": "E-mail",
"noSignInMethods": "Esta instância do Seerr não oferece nenhum método de login compatível com o Plezy.",
"instance": "Instância",
"disconnectConfirm": "Desconectar Seerr?",
"disconnectConfirmBody": "O Plezy esquecerá esta instância do Seerr. Reconecte quando quiser.",
"request": "Solicitar",
"request4k": "Solicitar em 4K",
"seasons": "Temporadas",
"allSeasons": "Todas as temporadas",
"advancedOptions": "Avançado",
"destinationServer": "Servidor de destino",
"qualityProfile": "Perfil de qualidade",
"rootFolder": "Pasta raiz",
"languageProfile": "Perfil de idioma",
"requestSubmitted": "Solicitação enviada",
"requestFailed": "Falha na solicitação: ${error}",
"requestsLoadFailed": "Não foi possível carregar as opções de solicitação",
"nothingToRequest": "Tudo já está disponível ou solicitado.",
"statusAvailable": "Disponível",
"statusPartiallyAvailable": "Parcialmente disponível",
"statusRequested": "Solicitado",
"statusProcessing": "Processando"
},
"services": {
"title": "Serviços",
"hubSubtitle": "Sincronize o progresso de exibição e solicite novos títulos.",
"notConnected": "Não conectado", "notConnected": "Não conectado",
"connectedAs": "Conectado como @${username}", "connectedAs": "Conectado como @${username}",
"scrobble": "Registrar progresso automaticamente", "scrobble": "Registrar progresso automaticamente",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "Desconectar ${service}?", "disconnectConfirm": "Desconectar ${service}?",
"disconnectConfirmBody": "Plezy deixará de atualizar ${service}. Reconecte quando quiser.", "disconnectConfirmBody": "Plezy deixará de atualizar ${service}. Reconecte quando quiser.",
"connectFailed": "Não foi possível conectar ao ${service}. Tente novamente.", "connectFailed": "Não foi possível conectar ao ${service}. Tente novamente.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Ativar Plezy no ${service}", "title": "Ativar Plezy no ${service}",
+89 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Показывать, что вы смотрите, в Discord", "discordRichPresenceDescription": "Показывать, что вы смотрите, в Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Синхронизировать историю просмотров с Trakt", "traktDescription": "Синхронизировать историю просмотров с Trakt",
"trackers": "Трекеры", "services": "Сервисы",
"trackersDescription": "Синхронизировать прогресс с Trakt, MyAnimeList, AniList и Simkl", "servicesDescription": "Подключите Trakt, MyAnimeList, Seerr и другие",
"companionRemoteServer": "Сервер удалённого управления", "companionRemoteServer": "Сервер удалённого управления",
"companionRemoteServerDescription": "Разрешить мобильным устройствам в сети управлять этим приложением", "companionRemoteServerDescription": "Разрешить мобильным устройствам в сети управлять этим приложением",
"autoPip": "Автоматический «картинка в картинке»", "autoPip": "Автоматический «картинка в картинке»",
@@ -416,7 +416,7 @@
"setScore": "Установить оценку", "setScore": "Установить оценку",
"saved": "Сохранено", "saved": "Сохранено",
"notAvailable": "Совпадений не найдено", "notAvailable": "Совпадений не найдено",
"noConnectedTrackers": "Подключите трекер в настройках, чтобы оценивать там." "noConnectedServices": "Подключите сервис в настройках, чтобы оценивать здесь."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, фильм", "mediaCardMovie": "${title}, фильм",
@@ -842,7 +842,54 @@
"navigation": { "navigation": {
"libraries": "Библиотеки", "libraries": "Библиотеки",
"downloads": "Загрузки", "downloads": "Загрузки",
"liveTv": "ТВ в прямом эфире" "liveTv": "ТВ в прямом эфире",
"explore": "Исследовать"
},
"explore": {
"title": "Исследовать",
"selectSource": "Выбрать источник",
"rows": {
"watchlist": "Список для просмотра",
"recommendedMovies": "Рекомендуемые фильмы",
"recommendedShows": "Рекомендуемые сериалы",
"trendingMovies": "Фильмы в тренде",
"trendingShows": "Сериалы в тренде",
"popularMovies": "Популярные фильмы",
"popularShows": "Популярные сериалы",
"suggestedAnime": "Рекомендуемые аниме",
"airingAnime": "Топ выходящих аниме",
"popularAnime": "Самые популярные аниме",
"trending": "В тренде",
"upcomingMovies": "Ожидаемые фильмы",
"upcomingShows": "Ожидаемые сериалы"
},
"status": {
"airing": "Выходит",
"ended": "Завершён",
"canceled": "Отменён",
"upcoming": "Скоро"
},
"episodeCount": {
"one": "${n} эпизод",
"few": "${n} эпизода",
"many": "${n} эпизодов",
"other": "${n} эпизода"
},
"cast": "В ролях",
"characters": "Персонажи",
"addToWatchlist": "Добавить в список для просмотра",
"removeFromWatchlist": "Удалить из списка для просмотра",
"watchlistUpdateFailed": "Не удалось обновить список для просмотра",
"notInLibrary": "Нет в вашей библиотеке",
"inTheseLibraries": "В этих библиотеках",
"availableOn": "Доступно на ${server}",
"checkingLibrary": "Проверка вашей библиотеки...",
"emptyTitle": "Здесь пока ничего нет",
"emptyMessage": "Строки из ${source} появятся здесь, когда в них будет контент.",
"searchHint": "Поиск в ${source}",
"searchEmpty": "Нет результатов по запросу \"${query}\"",
"searchPrompt": "Ищите фильмы и сериалы в ${source}.",
"searchFailed": "Ошибка поиска. Проверьте подключение и повторите попытку."
}, },
"liveTv": { "liveTv": {
"title": "ТВ в прямом эфире", "title": "ТВ в прямом эфире",
@@ -1386,9 +1433,41 @@
"watchedSync": "Синхронизация статуса просмотра", "watchedSync": "Синхронизация статуса просмотра",
"watchedSyncDescription": "Когда вы отмечаете элементы как просмотренные в Plezy, они отмечаются и в Trakt." "watchedSyncDescription": "Когда вы отмечаете элементы как просмотренные в Plezy, они отмечаются и в Trakt."
}, },
"trackers": { "seerr": {
"title": "Трекеры", "title": "Seerr",
"hubSubtitle": "Синхронизируйте прогресс просмотра с Trakt и другими сервисами.", "connectTitle": "Подключить Seerr",
"serverUrl": "URL сервера",
"serverUrlHelper": "Адрес вашего экземпляра Seerr",
"checkServer": "Продолжить",
"signInWithJellyfin": "Войти через Jellyfin",
"signInWithEmby": "Войти через Emby",
"signInWithLocal": "Использовать локальную учётную запись",
"email": "Эл. почта",
"noSignInMethods": "Этот экземпляр Seerr не предлагает способа входа, поддерживаемого Plezy.",
"instance": "Экземпляр",
"disconnectConfirm": "Отключить Seerr?",
"disconnectConfirmBody": "Plezy забудет этот экземпляр Seerr. Подключитесь снова в любое время.",
"request": "Запросить",
"request4k": "Запросить в 4K",
"seasons": "Сезоны",
"allSeasons": "Все сезоны",
"advancedOptions": "Дополнительно",
"destinationServer": "Целевой сервер",
"qualityProfile": "Профиль качества",
"rootFolder": "Корневая папка",
"languageProfile": "Языковой профиль",
"requestSubmitted": "Запрос отправлен",
"requestFailed": "Ошибка запроса: ${error}",
"requestsLoadFailed": "Не удалось загрузить параметры запроса",
"nothingToRequest": "Всё уже доступно или запрошено.",
"statusAvailable": "Доступно",
"statusPartiallyAvailable": "Частично доступно",
"statusRequested": "Запрошено",
"statusProcessing": "Обработка"
},
"services": {
"title": "Сервисы",
"hubSubtitle": "Синхронизируйте прогресс просмотра и запрашивайте новые тайтлы.",
"notConnected": "Не подключено", "notConnected": "Не подключено",
"connectedAs": "Подключено как @${username}", "connectedAs": "Подключено как @${username}",
"scrobble": "Автоматически отслеживать прогресс", "scrobble": "Автоматически отслеживать прогресс",
@@ -1396,10 +1475,11 @@
"disconnectConfirm": "Отключить ${service}?", "disconnectConfirm": "Отключить ${service}?",
"disconnectConfirmBody": "Plezy перестанет обновлять ${service}. Подключите снова в любое время.", "disconnectConfirmBody": "Plezy перестанет обновлять ${service}. Подключите снова в любое время.",
"connectFailed": "Не удалось подключиться к ${service}. Попробуйте ещё раз.", "connectFailed": "Не удалось подключиться к ${service}. Попробуйте ещё раз.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Активируйте Plezy в ${service}", "title": "Активируйте Plezy в ${service}",
+1 -1
View File
@@ -4,7 +4,7 @@
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 16 /// Locales: 16
/// Strings: 21376 (1336 per locale) /// Strings: 22465 (1404 per locale)
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: type=lint, unused_import // ignore_for_file: type=lint, unused_import
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsBg extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsBg logs = _TranslationsLogsBg._(_root); @override late final _TranslationsLogsBg logs = _TranslationsLogsBg._(_root);
@override late final _TranslationsLicensesBg licenses = _TranslationsLicensesBg._(_root); @override late final _TranslationsLicensesBg licenses = _TranslationsLicensesBg._(_root);
@override late final _TranslationsNavigationBg navigation = _TranslationsNavigationBg._(_root); @override late final _TranslationsNavigationBg navigation = _TranslationsNavigationBg._(_root);
@override late final _TranslationsExploreBg explore = _TranslationsExploreBg._(_root);
@override late final _TranslationsLiveTvBg liveTv = _TranslationsLiveTvBg._(_root); @override late final _TranslationsLiveTvBg liveTv = _TranslationsLiveTvBg._(_root);
@override late final _TranslationsCollectionsBg collections = _TranslationsCollectionsBg._(_root); @override late final _TranslationsCollectionsBg collections = _TranslationsCollectionsBg._(_root);
@override late final _TranslationsPlaylistsBg playlists = _TranslationsPlaylistsBg._(_root); @override late final _TranslationsPlaylistsBg playlists = _TranslationsPlaylistsBg._(_root);
@@ -84,7 +85,8 @@ class TranslationsBg extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenBg matchScreen = _TranslationsMatchScreenBg._(_root); @override late final _TranslationsMatchScreenBg matchScreen = _TranslationsMatchScreenBg._(_root);
@override late final _TranslationsServerTasksBg serverTasks = _TranslationsServerTasksBg._(_root); @override late final _TranslationsServerTasksBg serverTasks = _TranslationsServerTasksBg._(_root);
@override late final _TranslationsTraktBg trakt = _TranslationsTraktBg._(_root); @override late final _TranslationsTraktBg trakt = _TranslationsTraktBg._(_root);
@override late final _TranslationsTrackersBg trackers = _TranslationsTrackersBg._(_root); @override late final _TranslationsSeerrBg seerr = _TranslationsSeerrBg._(_root);
@override late final _TranslationsServicesBg services = _TranslationsServicesBg._(_root);
@override late final _TranslationsAddServerBg addServer = _TranslationsAddServerBg._(_root); @override late final _TranslationsAddServerBg addServer = _TranslationsAddServerBg._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsBg extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Показвай какво гледате в Discord'; @override String get discordRichPresenceDescription => 'Показвай какво гледате в Discord';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Синхронизирай историята на гледане с Trakt'; @override String get traktDescription => 'Синхронизирай историята на гледане с Trakt';
@override String get trackers => 'Тракери'; @override String get services => 'Услуги';
@override String get trackersDescription => 'Синхронизирай прогреса с Trakt, MyAnimeList, AniList и Simkl'; @override String get servicesDescription => 'Свържи Trakt, MyAnimeList, Seerr и още';
@override String get companionRemoteServer => 'Сървър за дистанционно управление'; @override String get companionRemoteServer => 'Сървър за дистанционно управление';
@override String get companionRemoteServerDescription => 'Позволи на мобилни устройства във вашата мрежа да управляват това приложение'; @override String get companionRemoteServerDescription => 'Позволи на мобилни устройства във вашата мрежа да управляват това приложение';
@override String get autoPip => 'Автоматичен режим картина в картината'; @override String get autoPip => 'Автоматичен режим картина в картината';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetBg extends TranslationsRateSheetEn {
@override String get setScore => 'Задай оценка'; @override String get setScore => 'Задай оценка';
@override String get saved => 'Запазено'; @override String get saved => 'Запазено';
@override String get notAvailable => 'Няма намерено съвпадение'; @override String get notAvailable => 'Няма намерено съвпадение';
@override String get noConnectedTrackers => 'Свържете тракер в Настройки, за да оценявате там.'; @override String get noConnectedServices => 'Свържи услуга в Настройки, за да оценяваш там.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationBg extends TranslationsNavigationEn {
@override String get libraries => 'Библиотеки'; @override String get libraries => 'Библиотеки';
@override String get downloads => 'Изтегляния'; @override String get downloads => 'Изтегляния';
@override String get liveTv => 'Телевизия на живо'; @override String get liveTv => 'Телевизия на живо';
@override String get explore => 'Разгледай';
}
// Path: explore
class _TranslationsExploreBg extends TranslationsExploreEn {
_TranslationsExploreBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field
// Translations
@override String get title => 'Разгледай';
@override String get selectSource => 'Избери източник';
@override late final _TranslationsExploreRowsBg rows = _TranslationsExploreRowsBg._(_root);
@override late final _TranslationsExploreStatusBg status = _TranslationsExploreStatusBg._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('bg'))(n,
one: '${n} епизод',
other: '${n} епизода',
);
@override String get cast => 'Актьори';
@override String get characters => 'Герои';
@override String get addToWatchlist => 'Добави в списъка за гледане';
@override String get removeFromWatchlist => 'Премахни от списъка за гледане';
@override String get watchlistUpdateFailed => 'Неуспешно обновяване на списъка за гледане';
@override String get notInLibrary => 'Не е в твоята библиотека';
@override String get inTheseLibraries => 'В тези библиотеки';
@override String availableOn({required Object server}) => 'Налично на ${server}';
@override String get checkingLibrary => 'Проверка на твоята библиотека...';
@override String get emptyTitle => 'Тук все още няма нищо';
@override String emptyMessage({required Object source}) => 'Редовете от ${source} ще се появят тук, когато има съдържание.';
@override String searchHint({required Object source}) => 'Търсене в ${source}';
@override String searchEmpty({required Object query}) => 'Няма резултати за "${query}"';
@override String searchPrompt({required Object source}) => 'Търси филми и сериали в ${source}.';
@override String get searchFailed => 'Търсенето се провали. Провери връзката си и опитай отново.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktBg extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Когато маркирате елементи като гледани в Plezy, маркирай ги и в Trakt.'; @override String get watchedSyncDescription => 'Когато маркирате елементи като гледани в Plezy, маркирай ги и в Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersBg extends TranslationsTrackersEn { class _TranslationsSeerrBg extends TranslationsSeerrEn {
_TranslationsTrackersBg._(TranslationsBg root) : this._root = root, super.internal(root); _TranslationsSeerrBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field final TranslationsBg _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Тракери'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Синхронизирай прогреса на гледане с Trakt и други услуги.'; @override String get connectTitle => 'Свързване със Seerr';
@override String get serverUrl => 'URL на сървъра';
@override String get serverUrlHelper => 'Адресът на твоята Seerr инстанция';
@override String get checkServer => 'Продължи';
@override String get signInWithJellyfin => 'Вход с Jellyfin';
@override String get signInWithEmby => 'Вход с Emby';
@override String get signInWithLocal => 'Използвай локален акаунт';
@override String get email => 'Имейл';
@override String get noSignInMethods => 'Тази Seerr инстанция не предлага метод за вход, който Plezy поддържа.';
@override String get instance => 'Инстанция';
@override String get disconnectConfirm => 'Да се прекъсне ли Seerr?';
@override String get disconnectConfirmBody => 'Plezy ще забрави тази Seerr инстанция. Можете да се свържете отново по всяко време.';
@override String get request => 'Заяви';
@override String get request4k => 'Заяви в 4K';
@override String get seasons => 'Сезони';
@override String get allSeasons => 'Всички сезони';
@override String get advancedOptions => 'Разширени';
@override String get destinationServer => 'Целеви сървър';
@override String get qualityProfile => 'Профил за качество';
@override String get rootFolder => 'Основна папка';
@override String get languageProfile => 'Езиков профил';
@override String get requestSubmitted => 'Заявката е изпратена';
@override String requestFailed({required Object error}) => 'Заявката се провали: ${error}';
@override String get requestsLoadFailed => 'Неуспешно зареждане на опциите за заявка';
@override String get nothingToRequest => 'Всичко вече е налично или заявено.';
@override String get statusAvailable => 'Налично';
@override String get statusPartiallyAvailable => 'Частично налично';
@override String get statusRequested => 'Заявено';
@override String get statusProcessing => 'Обработва се';
}
// Path: services
class _TranslationsServicesBg extends TranslationsServicesEn {
_TranslationsServicesBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field
// Translations
@override String get title => 'Услуги';
@override String get hubSubtitle => 'Синхронизирай прогреса на гледане и заявявай нови заглавия.';
@override String get notConnected => 'Не е свързан'; @override String get notConnected => 'Не е свързан';
@override String connectedAs({required Object username}) => 'Свързан като @${username}'; @override String connectedAs({required Object username}) => 'Свързан като @${username}';
@override String get scrobble => 'Проследявай прогреса автоматично'; @override String get scrobble => 'Проследявай прогреса автоматично';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersBg extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Да се прекъсне ли ${service}?'; @override String disconnectConfirm({required Object service}) => 'Да се прекъсне ли ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy ще спре да обновява ${service}. Можете да се свържете отново по всяко време.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy ще спре да обновява ${service}. Можете да се свържете отново по всяко време.';
@override String connectFailed({required Object service}) => 'Неуспешно свързване с ${service}. Опитайте отново.'; @override String connectFailed({required Object service}) => 'Неуспешно свързване с ${service}. Опитайте отново.';
@override late final _TranslationsTrackersServicesBg services = _TranslationsTrackersServicesBg._(_root); @override late final _TranslationsServicesNamesBg names = _TranslationsServicesNamesBg._(_root);
@override late final _TranslationsTrackersDeviceCodeBg deviceCode = _TranslationsTrackersDeviceCodeBg._(_root); @override late final _TranslationsServicesDeviceCodeBg deviceCode = _TranslationsServicesDeviceCodeBg._(_root);
@override late final _TranslationsTrackersOauthProxyBg oauthProxy = _TranslationsTrackersOauthProxyBg._(_root); @override late final _TranslationsServicesOauthProxyBg oauthProxy = _TranslationsServicesOauthProxyBg._(_root);
@override late final _TranslationsTrackersLibraryFilterBg libraryFilter = _TranslationsTrackersLibraryFilterBg._(_root); @override late final _TranslationsServicesLibraryFilterBg libraryFilter = _TranslationsServicesLibraryFilterBg._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsBg extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Дата на добавяне на последния епизод'; @override String get lastEpisodeDateAdded => 'Дата на добавяне на последния епизод';
} }
// Path: explore.rows
class _TranslationsExploreRowsBg extends TranslationsExploreRowsEn {
_TranslationsExploreRowsBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Списък за гледане';
@override String get recommendedMovies => 'Препоръчани филми';
@override String get recommendedShows => 'Препоръчани сериали';
@override String get trendingMovies => 'Актуални филми';
@override String get trendingShows => 'Актуални сериали';
@override String get popularMovies => 'Популярни филми';
@override String get popularShows => 'Популярни сериали';
@override String get suggestedAnime => 'Препоръчани аниме';
@override String get airingAnime => 'Топ излъчвани аниме';
@override String get popularAnime => 'Най-популярни аниме';
@override String get trending => 'Актуални';
@override String get upcomingMovies => 'Предстоящи филми';
@override String get upcomingShows => 'Предстоящи сериали';
}
// Path: explore.status
class _TranslationsExploreStatusBg extends TranslationsExploreStatusEn {
_TranslationsExploreStatusBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field
// Translations
@override String get airing => 'Излъчва се';
@override String get ended => 'Приключил';
@override String get canceled => 'Отменен';
@override String get upcoming => 'Предстоящ';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionBg extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionBg extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionBg._(TranslationsBg root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionBg._(TranslationsBg root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsBg extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Връзката е загубена'; @override String get connectionLost => 'Връзката е загубена';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesBg extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesBg extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesBg._(TranslationsBg root) : this._root = root, super.internal(root); _TranslationsServicesNamesBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field final TranslationsBg _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesBg extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeBg extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeBg extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeBg._(TranslationsBg root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field final TranslationsBg _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeBg extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Кодът е копиран'; @override String get codeCopied => 'Кодът е копиран';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyBg extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyBg extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyBg._(TranslationsBg root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field final TranslationsBg _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyBg extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL адресът е копиран'; @override String get urlCopied => 'URL адресът е копиран';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterBg extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterBg extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterBg._(TranslationsBg root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterBg._(TranslationsBg root) : this._root = root, super.internal(root);
final TranslationsBg _root; // ignore: unused_field final TranslationsBg _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsBg {
'settings.discordRichPresenceDescription' => 'Показвай какво гледате в Discord', 'settings.discordRichPresenceDescription' => 'Показвай какво гледате в Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Синхронизирай историята на гледане с Trakt', 'settings.traktDescription' => 'Синхронизирай историята на гледане с Trakt',
'settings.trackers' => 'Тракери', 'settings.services' => 'Услуги',
'settings.trackersDescription' => 'Синхронизирай прогреса с Trakt, MyAnimeList, AniList и Simkl', 'settings.servicesDescription' => 'Свържи Trakt, MyAnimeList, Seerr и още',
'settings.companionRemoteServer' => 'Сървър за дистанционно управление', 'settings.companionRemoteServer' => 'Сървър за дистанционно управление',
'settings.companionRemoteServerDescription' => 'Позволи на мобилни устройства във вашата мрежа да управляват това приложение', 'settings.companionRemoteServerDescription' => 'Позволи на мобилни устройства във вашата мрежа да управляват това приложение',
'settings.autoPip' => 'Автоматичен режим картина в картината', 'settings.autoPip' => 'Автоматичен режим картина в картината',
@@ -2390,7 +2500,7 @@ extension on TranslationsBg {
'rateSheet.setScore' => 'Задай оценка', 'rateSheet.setScore' => 'Задай оценка',
'rateSheet.saved' => 'Запазено', 'rateSheet.saved' => 'Запазено',
'rateSheet.notAvailable' => 'Няма намерено съвпадение', 'rateSheet.notAvailable' => 'Няма намерено съвпадение',
'rateSheet.noConnectedTrackers' => 'Свържете тракер в Настройки, за да оценявате там.', 'rateSheet.noConnectedServices' => 'Свържи услуга в Настройки, за да оценяваш там.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, филм', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, филм',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, ТВ сериал', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, ТВ сериал',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsBg {
'navigation.libraries' => 'Библиотеки', 'navigation.libraries' => 'Библиотеки',
'navigation.downloads' => 'Изтегляния', 'navigation.downloads' => 'Изтегляния',
'navigation.liveTv' => 'Телевизия на живо', 'navigation.liveTv' => 'Телевизия на живо',
'navigation.explore' => 'Разгледай',
'explore.title' => 'Разгледай',
'explore.selectSource' => 'Избери източник',
'explore.rows.watchlist' => 'Списък за гледане',
'explore.rows.recommendedMovies' => 'Препоръчани филми',
'explore.rows.recommendedShows' => 'Препоръчани сериали',
'explore.rows.trendingMovies' => 'Актуални филми',
'explore.rows.trendingShows' => 'Актуални сериали',
'explore.rows.popularMovies' => 'Популярни филми',
'explore.rows.popularShows' => 'Популярни сериали',
'explore.rows.suggestedAnime' => 'Препоръчани аниме',
'explore.rows.airingAnime' => 'Топ излъчвани аниме',
'explore.rows.popularAnime' => 'Най-популярни аниме',
'explore.rows.trending' => 'Актуални',
'explore.rows.upcomingMovies' => 'Предстоящи филми',
'explore.rows.upcomingShows' => 'Предстоящи сериали',
'explore.status.airing' => 'Излъчва се',
'explore.status.ended' => 'Приключил',
'explore.status.canceled' => 'Отменен',
'explore.status.upcoming' => 'Предстоящ',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('bg'))(n, one: '${n} епизод', other: '${n} епизода', ),
'explore.cast' => 'Актьори',
'explore.characters' => 'Герои',
'explore.addToWatchlist' => 'Добави в списъка за гледане',
'explore.removeFromWatchlist' => 'Премахни от списъка за гледане',
'explore.watchlistUpdateFailed' => 'Неуспешно обновяване на списъка за гледане',
'explore.notInLibrary' => 'Не е в твоята библиотека',
'explore.inTheseLibraries' => 'В тези библиотеки',
'explore.availableOn' => ({required Object server}) => 'Налично на ${server}',
'explore.checkingLibrary' => 'Проверка на твоята библиотека...',
'explore.emptyTitle' => 'Тук все още няма нищо',
'explore.emptyMessage' => ({required Object source}) => 'Редовете от ${source} ще се появят тук, когато има съдържание.',
'explore.searchHint' => ({required Object source}) => 'Търсене в ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Няма резултати за "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Търси филми и сериали в ${source}.',
'explore.searchFailed' => 'Търсенето се провали. Провери връзката си и опитай отново.',
'liveTv.title' => 'Телевизия на живо', 'liveTv.title' => 'Телевизия на живо',
'liveTv.guide' => 'ТВ програма', 'liveTv.guide' => 'ТВ програма',
'liveTv.noChannels' => 'Няма налични канали', 'liveTv.noChannels' => 'Няма налични канали',
@@ -2986,6 +3132,8 @@ extension on TranslationsBg {
'downloads.cancelledDownloadMessage' => 'Това изтегляне беше отменено. Какво искате да направите?', 'downloads.cancelledDownloadMessage' => 'Това изтегляне беше отменено. Какво искате да направите?',
'downloads.allEpisodesAlreadyDownloaded' => 'Всички епизоди вече са изтеглени', 'downloads.allEpisodesAlreadyDownloaded' => 'Всички епизоди вече са изтеглени',
'downloads.resumeDownload' => 'Възобнови изтеглянето', 'downloads.resumeDownload' => 'Възобнови изтеглянето',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Отменено изтегляне', 'downloads.cancelledDownload' => 'Отменено изтегляне',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (синхронизира се ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (синхронизира се ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => 'Изтеглен ${file} — щракнете за довършване', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => 'Изтеглен ${file} — щракнете за довършване',
@@ -3022,8 +3170,6 @@ extension on TranslationsBg {
'downloads.noSyncRules' => 'Няма правила за синхронизация', 'downloads.noSyncRules' => 'Няма правила за синхронизация',
'downloads.manageSyncRule' => 'Управление на синхронизацията', 'downloads.manageSyncRule' => 'Управление на синхронизацията',
'downloads.editEpisodeCount' => 'Брой епизоди', 'downloads.editEpisodeCount' => 'Брой епизоди',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Филтър за синхронизация', 'downloads.editSyncFilter' => 'Филтър за синхронизация',
'downloads.syncAllItems' => 'Синхронизират се всички елементи', 'downloads.syncAllItems' => 'Синхронизират се всички елементи',
'downloads.syncUnwatchedItems' => 'Синхронизират се негледаните елементи', 'downloads.syncUnwatchedItems' => 'Синхронизират се негледаните елементи',
@@ -3272,39 +3418,70 @@ extension on TranslationsBg {
'trakt.scrobbleDescription' => 'Изпращай събития за пускане, пауза и спиране към Trakt по време на възпроизвеждане.', 'trakt.scrobbleDescription' => 'Изпращай събития за пускане, пауза и спиране към Trakt по време на възпроизвеждане.',
'trakt.watchedSync' => 'Синхронизирай статус гледано', 'trakt.watchedSync' => 'Синхронизирай статус гледано',
'trakt.watchedSyncDescription' => 'Когато маркирате елементи като гледани в Plezy, маркирай ги и в Trakt.', 'trakt.watchedSyncDescription' => 'Когато маркирате елементи като гледани в Plezy, маркирай ги и в Trakt.',
'trackers.title' => 'Тракери', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Синхронизирай прогреса на гледане с Trakt и други услуги.', 'seerr.connectTitle' => 'Свързване със Seerr',
'trackers.notConnected' => 'Не е свързан', 'seerr.serverUrl' => 'URL на сървъра',
'trackers.connectedAs' => ({required Object username}) => 'Свързан като @${username}', 'seerr.serverUrlHelper' => 'Адресът на твоята Seerr инстанция',
'trackers.scrobble' => 'Проследявай прогреса автоматично', 'seerr.checkServer' => 'Продължи',
'trackers.scrobbleDescription' => 'Обновявай списъка си, когато завършиш епизод или филм.', 'seerr.signInWithJellyfin' => 'Вход с Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Да се прекъсне ли ${service}?', 'seerr.signInWithEmby' => 'Вход с Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy ще спре да обновява ${service}. Можете да се свържете отново по всяко време.', 'seerr.signInWithLocal' => 'Използвай локален акаунт',
'trackers.connectFailed' => ({required Object service}) => 'Неуспешно свързване с ${service}. Опитайте отново.', 'seerr.email' => 'Имейл',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Тази Seerr инстанция не предлага метод за вход, който Plezy поддържа.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Инстанция',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Да се прекъсне ли Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Активиране на Plezy в ${service}', 'seerr.disconnectConfirmBody' => 'Plezy ще забрави тази Seerr инстанция. Можете да се свържете отново по всяко време.',
'trackers.deviceCode.body' => ({required Object url}) => 'Посетете ${url} и въведете този код:', 'seerr.request' => 'Заяви',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Отворете ${service}, за да активирате', 'seerr.request4k' => 'Заяви в 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Изчакване на оторизация…', 'seerr.seasons' => 'Сезони',
'trackers.deviceCode.codeCopied' => 'Кодът е копиран', 'seerr.allSeasons' => 'Всички сезони',
'trackers.oauthProxy.title' => ({required Object service}) => 'Вход в ${service}', 'seerr.advancedOptions' => 'Разширени',
'trackers.oauthProxy.body' => 'Сканирайте този QR код или отворете URL-а на което и да е устройство.', 'seerr.destinationServer' => 'Целеви сървър',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Отворете ${service}, за да влезете', 'seerr.qualityProfile' => 'Профил за качество',
'trackers.oauthProxy.urlCopied' => 'URL адресът е копиран', 'seerr.rootFolder' => 'Основна папка',
'trackers.libraryFilter.title' => 'Филтър на библиотеките', 'seerr.languageProfile' => 'Езиков профил',
'trackers.libraryFilter.subtitleAllSyncing' => 'Синхронизират се всички библиотеки', 'seerr.requestSubmitted' => 'Заявката е изпратена',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Нищо не се синхронизира', 'seerr.requestFailed' => ({required Object error}) => 'Заявката се провали: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} блокирани', 'seerr.requestsLoadFailed' => 'Неуспешно зареждане на опциите за заявка',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} разрешени', 'seerr.nothingToRequest' => 'Всичко вече е налично или заявено.',
'trackers.libraryFilter.mode' => 'Режим на филтъра', 'seerr.statusAvailable' => 'Налично',
'trackers.libraryFilter.modeBlacklist' => 'Черен списък', 'seerr.statusPartiallyAvailable' => 'Частично налично',
'trackers.libraryFilter.modeWhitelist' => 'Бял списък', 'seerr.statusRequested' => 'Заявено',
'trackers.libraryFilter.modeHintBlacklist' => 'Синхронизирай всяка библиотека, освен отметнатите по-долу.', 'seerr.statusProcessing' => 'Обработва се',
'trackers.libraryFilter.modeHintWhitelist' => 'Синхронизирай само отметнатите по-долу библиотеки.', 'services.title' => 'Услуги',
'trackers.libraryFilter.libraries' => 'Библиотеки', 'services.hubSubtitle' => 'Синхронизирай прогреса на гледане и заявявай нови заглавия.',
'trackers.libraryFilter.noLibraries' => 'Няма налични библиотеки', 'services.notConnected' => 'Не е свързан',
'services.connectedAs' => ({required Object username}) => 'Свързан като @${username}',
'services.scrobble' => 'Проследявай прогреса автоматично',
'services.scrobbleDescription' => 'Обновявай списъка си, когато завършиш епизод или филм.',
'services.disconnectConfirm' => ({required Object service}) => 'Да се прекъсне ли ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy ще спре да обновява ${service}. Можете да се свържете отново по всяко време.',
'services.connectFailed' => ({required Object service}) => 'Неуспешно свързване с ${service}. Опитайте отново.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Активиране на Plezy в ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Посетете ${url} и въведете този код:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Отворете ${service}, за да активирате',
'services.deviceCode.waitingForAuthorization' => 'Изчакване на оторизация…',
'services.deviceCode.codeCopied' => 'Кодът е копиран',
'services.oauthProxy.title' => ({required Object service}) => 'Вход в ${service}',
'services.oauthProxy.body' => 'Сканирайте този QR код или отворете URL-а на което и да е устройство.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Отворете ${service}, за да влезете',
'services.oauthProxy.urlCopied' => 'URL адресът е копиран',
'services.libraryFilter.title' => 'Филтър на библиотеките',
'services.libraryFilter.subtitleAllSyncing' => 'Синхронизират се всички библиотеки',
'services.libraryFilter.subtitleNoneSyncing' => 'Нищо не се синхронизира',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} блокирани',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} разрешени',
'services.libraryFilter.mode' => 'Режим на филтъра',
'services.libraryFilter.modeBlacklist' => 'Черен списък',
'services.libraryFilter.modeWhitelist' => 'Бял списък',
'services.libraryFilter.modeHintBlacklist' => 'Синхронизирай всяка библиотека, освен отметнатите по-долу.',
'services.libraryFilter.modeHintWhitelist' => 'Синхронизирай само отметнатите по-долу библиотеки.',
'services.libraryFilter.libraries' => 'Библиотеки',
'services.libraryFilter.noLibraries' => 'Няма налични библиотеки',
'addServer.addJellyfinTitle' => 'Добави Jellyfin сървър', 'addServer.addJellyfinTitle' => 'Добави Jellyfin сървър',
'addServer.serverUrls' => 'URL адреси на сървъра', 'addServer.serverUrls' => 'URL адреси на сървъра',
'addServer.serverUrlsHelper' => 'Позволени са няколко URL адреса, разделени със запетаи.', 'addServer.serverUrlsHelper' => 'Позволени са няколко URL адреса, разделени със запетаи.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsDa extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsDa logs = _TranslationsLogsDa._(_root); @override late final _TranslationsLogsDa logs = _TranslationsLogsDa._(_root);
@override late final _TranslationsLicensesDa licenses = _TranslationsLicensesDa._(_root); @override late final _TranslationsLicensesDa licenses = _TranslationsLicensesDa._(_root);
@override late final _TranslationsNavigationDa navigation = _TranslationsNavigationDa._(_root); @override late final _TranslationsNavigationDa navigation = _TranslationsNavigationDa._(_root);
@override late final _TranslationsExploreDa explore = _TranslationsExploreDa._(_root);
@override late final _TranslationsLiveTvDa liveTv = _TranslationsLiveTvDa._(_root); @override late final _TranslationsLiveTvDa liveTv = _TranslationsLiveTvDa._(_root);
@override late final _TranslationsCollectionsDa collections = _TranslationsCollectionsDa._(_root); @override late final _TranslationsCollectionsDa collections = _TranslationsCollectionsDa._(_root);
@override late final _TranslationsPlaylistsDa playlists = _TranslationsPlaylistsDa._(_root); @override late final _TranslationsPlaylistsDa playlists = _TranslationsPlaylistsDa._(_root);
@@ -84,7 +85,8 @@ class TranslationsDa extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenDa matchScreen = _TranslationsMatchScreenDa._(_root); @override late final _TranslationsMatchScreenDa matchScreen = _TranslationsMatchScreenDa._(_root);
@override late final _TranslationsServerTasksDa serverTasks = _TranslationsServerTasksDa._(_root); @override late final _TranslationsServerTasksDa serverTasks = _TranslationsServerTasksDa._(_root);
@override late final _TranslationsTraktDa trakt = _TranslationsTraktDa._(_root); @override late final _TranslationsTraktDa trakt = _TranslationsTraktDa._(_root);
@override late final _TranslationsTrackersDa trackers = _TranslationsTrackersDa._(_root); @override late final _TranslationsSeerrDa seerr = _TranslationsSeerrDa._(_root);
@override late final _TranslationsServicesDa services = _TranslationsServicesDa._(_root);
@override late final _TranslationsAddServerDa addServer = _TranslationsAddServerDa._(_root); @override late final _TranslationsAddServerDa addServer = _TranslationsAddServerDa._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsDa extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Vis hvad du ser på Discord'; @override String get discordRichPresenceDescription => 'Vis hvad du ser på Discord';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Synkroniser visningshistorik med Trakt'; @override String get traktDescription => 'Synkroniser visningshistorik med Trakt';
@override String get trackers => 'Trackere'; @override String get services => 'Tjenester';
@override String get trackersDescription => 'Synkroniser fremgang til Trakt, MyAnimeList, AniList og Simkl'; @override String get servicesDescription => 'Forbind Trakt, MyAnimeList, Seerr og mere';
@override String get companionRemoteServer => 'Companion Remote Server'; @override String get companionRemoteServer => 'Companion Remote Server';
@override String get companionRemoteServerDescription => 'Tillad mobilenheder på dit netværk at styre denne app'; @override String get companionRemoteServerDescription => 'Tillad mobilenheder på dit netværk at styre denne app';
@override String get autoPip => 'Auto billede-i-billede'; @override String get autoPip => 'Auto billede-i-billede';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetDa extends TranslationsRateSheetEn {
@override String get setScore => 'Angiv en score'; @override String get setScore => 'Angiv en score';
@override String get saved => 'Gemt'; @override String get saved => 'Gemt';
@override String get notAvailable => 'Intet match fundet'; @override String get notAvailable => 'Intet match fundet';
@override String get noConnectedTrackers => 'Forbind en tracker i Indstillinger for at bedømme der.'; @override String get noConnectedServices => 'Forbind en tjeneste i Indstillinger for at bedømme der.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationDa extends TranslationsNavigationEn {
@override String get libraries => 'Biblioteker'; @override String get libraries => 'Biblioteker';
@override String get downloads => 'Downloads'; @override String get downloads => 'Downloads';
@override String get liveTv => 'Live TV'; @override String get liveTv => 'Live TV';
@override String get explore => 'Udforsk';
}
// Path: explore
class _TranslationsExploreDa extends TranslationsExploreEn {
_TranslationsExploreDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get title => 'Udforsk';
@override String get selectSource => 'Vælg kilde';
@override late final _TranslationsExploreRowsDa rows = _TranslationsExploreRowsDa._(_root);
@override late final _TranslationsExploreStatusDa status = _TranslationsExploreStatusDa._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('da'))(n,
one: '${n} afsnit',
other: '${n} afsnit',
);
@override String get cast => 'Rollebesætning';
@override String get characters => 'Figurer';
@override String get addToWatchlist => 'Føj til ønskeliste';
@override String get removeFromWatchlist => 'Fjern fra ønskeliste';
@override String get watchlistUpdateFailed => 'Kunne ikke opdatere ønskelisten';
@override String get notInLibrary => 'Ikke i dit bibliotek';
@override String get inTheseLibraries => 'I disse biblioteker';
@override String availableOn({required Object server}) => 'Tilgængelig på ${server}';
@override String get checkingLibrary => 'Tjekker dit bibliotek...';
@override String get emptyTitle => 'Der er ikke noget her endnu';
@override String emptyMessage({required Object source}) => 'Rækker fra ${source} vises her, når de har indhold.';
@override String searchHint({required Object source}) => 'Søg i ${source}';
@override String searchEmpty({required Object query}) => 'Ingen resultater for "${query}"';
@override String searchPrompt({required Object source}) => 'Søg efter film og serier på ${source}.';
@override String get searchFailed => 'Søgningen mislykkedes. Tjek din forbindelse, og prøv igen.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktDa extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Når du markerer ting som sét i Plezy, markeres de også på Trakt.'; @override String get watchedSyncDescription => 'Når du markerer ting som sét i Plezy, markeres de også på Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersDa extends TranslationsTrackersEn { class _TranslationsSeerrDa extends TranslationsSeerrEn {
_TranslationsTrackersDa._(TranslationsDa root) : this._root = root, super.internal(root); _TranslationsSeerrDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field final TranslationsDa _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Trackere'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Synkroniser afspilningsfremskridt med Trakt og andre tjenester.'; @override String get connectTitle => 'Forbind Seerr';
@override String get serverUrl => 'Server-URL';
@override String get serverUrlHelper => 'Adressen på din Seerr-instans';
@override String get checkServer => 'Fortsæt';
@override String get signInWithJellyfin => 'Log ind med Jellyfin';
@override String get signInWithEmby => 'Log ind med Emby';
@override String get signInWithLocal => 'Brug en lokal konto';
@override String get email => 'E-mail';
@override String get noSignInMethods => 'Denne Seerr-instans tilbyder ingen loginmetode, som Plezy understøtter.';
@override String get instance => 'Instans';
@override String get disconnectConfirm => 'Afbryd Seerr?';
@override String get disconnectConfirmBody => 'Plezy glemmer denne Seerr-instans. Tilslut igen når som helst.';
@override String get request => 'Anmod';
@override String get request4k => 'Anmod i 4K';
@override String get seasons => 'Sæsoner';
@override String get allSeasons => 'Alle sæsoner';
@override String get advancedOptions => 'Avanceret';
@override String get destinationServer => 'Destinationsserver';
@override String get qualityProfile => 'Kvalitetsprofil';
@override String get rootFolder => 'Rodmappe';
@override String get languageProfile => 'Sprogprofil';
@override String get requestSubmitted => 'Anmodning sendt';
@override String requestFailed({required Object error}) => 'Anmodning mislykkedes: ${error}';
@override String get requestsLoadFailed => 'Kunne ikke indlæse anmodningsmuligheder';
@override String get nothingToRequest => 'Alt er allerede tilgængeligt eller anmodet.';
@override String get statusAvailable => 'Tilgængelig';
@override String get statusPartiallyAvailable => 'Delvist tilgængelig';
@override String get statusRequested => 'Anmodet';
@override String get statusProcessing => 'Behandler';
}
// Path: services
class _TranslationsServicesDa extends TranslationsServicesEn {
_TranslationsServicesDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get title => 'Tjenester';
@override String get hubSubtitle => 'Synkroniser dit visningsfremskridt, og anmod om nye titler.';
@override String get notConnected => 'Ikke forbundet'; @override String get notConnected => 'Ikke forbundet';
@override String connectedAs({required Object username}) => 'Forbundet som @${username}'; @override String connectedAs({required Object username}) => 'Forbundet som @${username}';
@override String get scrobble => 'Registrer fremgang automatisk'; @override String get scrobble => 'Registrer fremgang automatisk';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersDa extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Afbryd ${service}?'; @override String disconnectConfirm({required Object service}) => 'Afbryd ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy stopper med at opdatere ${service}. Tilslut igen når som helst.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy stopper med at opdatere ${service}. Tilslut igen når som helst.';
@override String connectFailed({required Object service}) => 'Kunne ikke forbinde til ${service}. Prøv igen.'; @override String connectFailed({required Object service}) => 'Kunne ikke forbinde til ${service}. Prøv igen.';
@override late final _TranslationsTrackersServicesDa services = _TranslationsTrackersServicesDa._(_root); @override late final _TranslationsServicesNamesDa names = _TranslationsServicesNamesDa._(_root);
@override late final _TranslationsTrackersDeviceCodeDa deviceCode = _TranslationsTrackersDeviceCodeDa._(_root); @override late final _TranslationsServicesDeviceCodeDa deviceCode = _TranslationsServicesDeviceCodeDa._(_root);
@override late final _TranslationsTrackersOauthProxyDa oauthProxy = _TranslationsTrackersOauthProxyDa._(_root); @override late final _TranslationsServicesOauthProxyDa oauthProxy = _TranslationsServicesOauthProxyDa._(_root);
@override late final _TranslationsTrackersLibraryFilterDa libraryFilter = _TranslationsTrackersLibraryFilterDa._(_root); @override late final _TranslationsServicesLibraryFilterDa libraryFilter = _TranslationsServicesLibraryFilterDa._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsDa extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Dato for senest tilføjede episode'; @override String get lastEpisodeDateAdded => 'Dato for senest tilføjede episode';
} }
// Path: explore.rows
class _TranslationsExploreRowsDa extends TranslationsExploreRowsEn {
_TranslationsExploreRowsDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Ønskeliste';
@override String get recommendedMovies => 'Anbefalede film';
@override String get recommendedShows => 'Anbefalede serier';
@override String get trendingMovies => 'Trending film';
@override String get trendingShows => 'Trending serier';
@override String get popularMovies => 'Populære film';
@override String get popularShows => 'Populære serier';
@override String get suggestedAnime => 'Foreslået anime';
@override String get airingAnime => 'Top igangværende anime';
@override String get popularAnime => 'Mest populære anime';
@override String get trending => 'Trending';
@override String get upcomingMovies => 'Kommende film';
@override String get upcomingShows => 'Kommende serier';
}
// Path: explore.status
class _TranslationsExploreStatusDa extends TranslationsExploreStatusEn {
_TranslationsExploreStatusDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field
// Translations
@override String get airing => 'Sendes';
@override String get ended => 'Afsluttet';
@override String get canceled => 'Aflyst';
@override String get upcoming => 'Kommende';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionDa extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionDa extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionDa._(TranslationsDa root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionDa._(TranslationsDa root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsDa extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Forbindelse mistet'; @override String get connectionLost => 'Forbindelse mistet';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesDa extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesDa extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesDa._(TranslationsDa root) : this._root = root, super.internal(root); _TranslationsServicesNamesDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field final TranslationsDa _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesDa extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeDa extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeDa extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeDa._(TranslationsDa root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field final TranslationsDa _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeDa extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Kode kopieret'; @override String get codeCopied => 'Kode kopieret';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyDa extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyDa extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyDa._(TranslationsDa root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field final TranslationsDa _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyDa extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL kopieret'; @override String get urlCopied => 'URL kopieret';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterDa extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterDa extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterDa._(TranslationsDa root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterDa._(TranslationsDa root) : this._root = root, super.internal(root);
final TranslationsDa _root; // ignore: unused_field final TranslationsDa _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsDa {
'settings.discordRichPresenceDescription' => 'Vis hvad du ser på Discord', 'settings.discordRichPresenceDescription' => 'Vis hvad du ser på Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Synkroniser visningshistorik med Trakt', 'settings.traktDescription' => 'Synkroniser visningshistorik med Trakt',
'settings.trackers' => 'Trackere', 'settings.services' => 'Tjenester',
'settings.trackersDescription' => 'Synkroniser fremgang til Trakt, MyAnimeList, AniList og Simkl', 'settings.servicesDescription' => 'Forbind Trakt, MyAnimeList, Seerr og mere',
'settings.companionRemoteServer' => 'Companion Remote Server', 'settings.companionRemoteServer' => 'Companion Remote Server',
'settings.companionRemoteServerDescription' => 'Tillad mobilenheder på dit netværk at styre denne app', 'settings.companionRemoteServerDescription' => 'Tillad mobilenheder på dit netværk at styre denne app',
'settings.autoPip' => 'Auto billede-i-billede', 'settings.autoPip' => 'Auto billede-i-billede',
@@ -2390,7 +2500,7 @@ extension on TranslationsDa {
'rateSheet.setScore' => 'Angiv en score', 'rateSheet.setScore' => 'Angiv en score',
'rateSheet.saved' => 'Gemt', 'rateSheet.saved' => 'Gemt',
'rateSheet.notAvailable' => 'Intet match fundet', 'rateSheet.notAvailable' => 'Intet match fundet',
'rateSheet.noConnectedTrackers' => 'Forbind en tracker i Indstillinger for at bedømme der.', 'rateSheet.noConnectedServices' => 'Forbind en tjeneste i Indstillinger for at bedømme der.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV-serie', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV-serie',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsDa {
'navigation.libraries' => 'Biblioteker', 'navigation.libraries' => 'Biblioteker',
'navigation.downloads' => 'Downloads', 'navigation.downloads' => 'Downloads',
'navigation.liveTv' => 'Live TV', 'navigation.liveTv' => 'Live TV',
'navigation.explore' => 'Udforsk',
'explore.title' => 'Udforsk',
'explore.selectSource' => 'Vælg kilde',
'explore.rows.watchlist' => 'Ønskeliste',
'explore.rows.recommendedMovies' => 'Anbefalede film',
'explore.rows.recommendedShows' => 'Anbefalede serier',
'explore.rows.trendingMovies' => 'Trending film',
'explore.rows.trendingShows' => 'Trending serier',
'explore.rows.popularMovies' => 'Populære film',
'explore.rows.popularShows' => 'Populære serier',
'explore.rows.suggestedAnime' => 'Foreslået anime',
'explore.rows.airingAnime' => 'Top igangværende anime',
'explore.rows.popularAnime' => 'Mest populære anime',
'explore.rows.trending' => 'Trending',
'explore.rows.upcomingMovies' => 'Kommende film',
'explore.rows.upcomingShows' => 'Kommende serier',
'explore.status.airing' => 'Sendes',
'explore.status.ended' => 'Afsluttet',
'explore.status.canceled' => 'Aflyst',
'explore.status.upcoming' => 'Kommende',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('da'))(n, one: '${n} afsnit', other: '${n} afsnit', ),
'explore.cast' => 'Rollebesætning',
'explore.characters' => 'Figurer',
'explore.addToWatchlist' => 'Føj til ønskeliste',
'explore.removeFromWatchlist' => 'Fjern fra ønskeliste',
'explore.watchlistUpdateFailed' => 'Kunne ikke opdatere ønskelisten',
'explore.notInLibrary' => 'Ikke i dit bibliotek',
'explore.inTheseLibraries' => 'I disse biblioteker',
'explore.availableOn' => ({required Object server}) => 'Tilgængelig på ${server}',
'explore.checkingLibrary' => 'Tjekker dit bibliotek...',
'explore.emptyTitle' => 'Der er ikke noget her endnu',
'explore.emptyMessage' => ({required Object source}) => 'Rækker fra ${source} vises her, når de har indhold.',
'explore.searchHint' => ({required Object source}) => 'Søg i ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Ingen resultater for "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Søg efter film og serier på ${source}.',
'explore.searchFailed' => 'Søgningen mislykkedes. Tjek din forbindelse, og prøv igen.',
'liveTv.title' => 'Live TV', 'liveTv.title' => 'Live TV',
'liveTv.guide' => 'Guide', 'liveTv.guide' => 'Guide',
'liveTv.noChannels' => 'Ingen kanaler tilgængelige', 'liveTv.noChannels' => 'Ingen kanaler tilgængelige',
@@ -2986,6 +3132,8 @@ extension on TranslationsDa {
'downloads.cancelledDownloadMessage' => 'Denne download blev annulleret. Hvad vil du gøre?', 'downloads.cancelledDownloadMessage' => 'Denne download blev annulleret. Hvad vil du gøre?',
'downloads.allEpisodesAlreadyDownloaded' => 'Alle episoder er allerede downloadet', 'downloads.allEpisodesAlreadyDownloaded' => 'Alle episoder er allerede downloadet',
'downloads.resumeDownload' => 'Genoptag download', 'downloads.resumeDownload' => 'Genoptag download',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Annulleret download', 'downloads.cancelledDownload' => 'Annulleret download',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synkroniserer ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synkroniserer ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} downloadet — klik for at fuldføre', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} downloadet — klik for at fuldføre',
@@ -3022,8 +3170,6 @@ extension on TranslationsDa {
'downloads.noSyncRules' => 'Ingen synkroniseringsregler', 'downloads.noSyncRules' => 'Ingen synkroniseringsregler',
'downloads.manageSyncRule' => 'Administrer synkronisering', 'downloads.manageSyncRule' => 'Administrer synkronisering',
'downloads.editEpisodeCount' => 'Antal episoder', 'downloads.editEpisodeCount' => 'Antal episoder',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Synkroniseringsfilter', 'downloads.editSyncFilter' => 'Synkroniseringsfilter',
'downloads.syncAllItems' => 'Synkroniserer alle elementer', 'downloads.syncAllItems' => 'Synkroniserer alle elementer',
'downloads.syncUnwatchedItems' => 'Synkroniserer usete elementer', 'downloads.syncUnwatchedItems' => 'Synkroniserer usete elementer',
@@ -3272,39 +3418,70 @@ extension on TranslationsDa {
'trakt.scrobbleDescription' => 'Send afspil-, pause- og stop-begivenheder til Trakt under afspilning.', 'trakt.scrobbleDescription' => 'Send afspil-, pause- og stop-begivenheder til Trakt under afspilning.',
'trakt.watchedSync' => 'Synkroniser sét-status', 'trakt.watchedSync' => 'Synkroniser sét-status',
'trakt.watchedSyncDescription' => 'Når du markerer ting som sét i Plezy, markeres de også på Trakt.', 'trakt.watchedSyncDescription' => 'Når du markerer ting som sét i Plezy, markeres de også på Trakt.',
'trackers.title' => 'Trackere', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Synkroniser afspilningsfremskridt med Trakt og andre tjenester.', 'seerr.connectTitle' => 'Forbind Seerr',
'trackers.notConnected' => 'Ikke forbundet', 'seerr.serverUrl' => 'Server-URL',
'trackers.connectedAs' => ({required Object username}) => 'Forbundet som @${username}', 'seerr.serverUrlHelper' => 'Adressen på din Seerr-instans',
'trackers.scrobble' => 'Registrer fremgang automatisk', 'seerr.checkServer' => 'Fortsæt',
'trackers.scrobbleDescription' => 'Opdater din liste når du er færdig med et afsnit eller en film.', 'seerr.signInWithJellyfin' => 'Log ind med Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Afbryd ${service}?', 'seerr.signInWithEmby' => 'Log ind med Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy stopper med at opdatere ${service}. Tilslut igen når som helst.', 'seerr.signInWithLocal' => 'Brug en lokal konto',
'trackers.connectFailed' => ({required Object service}) => 'Kunne ikke forbinde til ${service}. Prøv igen.', 'seerr.email' => 'E-mail',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Denne Seerr-instans tilbyder ingen loginmetode, som Plezy understøtter.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instans',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Afbryd Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Aktiver Plezy på ${service}', 'seerr.disconnectConfirmBody' => 'Plezy glemmer denne Seerr-instans. Tilslut igen når som helst.',
'trackers.deviceCode.body' => ({required Object url}) => 'Besøg ${url} og indtast denne kode:', 'seerr.request' => 'Anmod',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Åbn ${service} for at aktivere', 'seerr.request4k' => 'Anmod i 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Venter på godkendelse…', 'seerr.seasons' => 'Sæsoner',
'trackers.deviceCode.codeCopied' => 'Kode kopieret', 'seerr.allSeasons' => 'Alle sæsoner',
'trackers.oauthProxy.title' => ({required Object service}) => 'Log ind på ${service}', 'seerr.advancedOptions' => 'Avanceret',
'trackers.oauthProxy.body' => 'Scan denne QR-kode, eller åbn URL\'en på en enhed.', 'seerr.destinationServer' => 'Destinationsserver',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Åbn ${service} for at logge ind', 'seerr.qualityProfile' => 'Kvalitetsprofil',
'trackers.oauthProxy.urlCopied' => 'URL kopieret', 'seerr.rootFolder' => 'Rodmappe',
'trackers.libraryFilter.title' => 'Bibliotekfilter', 'seerr.languageProfile' => 'Sprogprofil',
'trackers.libraryFilter.subtitleAllSyncing' => 'Synkroniserer alle biblioteker', 'seerr.requestSubmitted' => 'Anmodning sendt',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Intet synkroniseres', 'seerr.requestFailed' => ({required Object error}) => 'Anmodning mislykkedes: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blokeret', 'seerr.requestsLoadFailed' => 'Kunne ikke indlæse anmodningsmuligheder',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} tilladt', 'seerr.nothingToRequest' => 'Alt er allerede tilgængeligt eller anmodet.',
'trackers.libraryFilter.mode' => 'Filtertilstand', 'seerr.statusAvailable' => 'Tilgængelig',
'trackers.libraryFilter.modeBlacklist' => 'Sortliste', 'seerr.statusPartiallyAvailable' => 'Delvist tilgængelig',
'trackers.libraryFilter.modeWhitelist' => 'Hvidliste', 'seerr.statusRequested' => 'Anmodet',
'trackers.libraryFilter.modeHintBlacklist' => 'Synkroniser alle biblioteker undtagen dem du markerer nedenfor.', 'seerr.statusProcessing' => 'Behandler',
'trackers.libraryFilter.modeHintWhitelist' => 'Synkroniser kun de biblioteker du markerer nedenfor.', 'services.title' => 'Tjenester',
'trackers.libraryFilter.libraries' => 'Biblioteker', 'services.hubSubtitle' => 'Synkroniser dit visningsfremskridt, og anmod om nye titler.',
'trackers.libraryFilter.noLibraries' => 'Ingen biblioteker tilgængelige', 'services.notConnected' => 'Ikke forbundet',
'services.connectedAs' => ({required Object username}) => 'Forbundet som @${username}',
'services.scrobble' => 'Registrer fremgang automatisk',
'services.scrobbleDescription' => 'Opdater din liste når du er færdig med et afsnit eller en film.',
'services.disconnectConfirm' => ({required Object service}) => 'Afbryd ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy stopper med at opdatere ${service}. Tilslut igen når som helst.',
'services.connectFailed' => ({required Object service}) => 'Kunne ikke forbinde til ${service}. Prøv igen.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Aktiver Plezy på ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Besøg ${url} og indtast denne kode:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Åbn ${service} for at aktivere',
'services.deviceCode.waitingForAuthorization' => 'Venter på godkendelse…',
'services.deviceCode.codeCopied' => 'Kode kopieret',
'services.oauthProxy.title' => ({required Object service}) => 'Log ind på ${service}',
'services.oauthProxy.body' => 'Scan denne QR-kode, eller åbn URL\'en på en enhed.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Åbn ${service} for at logge ind',
'services.oauthProxy.urlCopied' => 'URL kopieret',
'services.libraryFilter.title' => 'Bibliotekfilter',
'services.libraryFilter.subtitleAllSyncing' => 'Synkroniserer alle biblioteker',
'services.libraryFilter.subtitleNoneSyncing' => 'Intet synkroniseres',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blokeret',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} tilladt',
'services.libraryFilter.mode' => 'Filtertilstand',
'services.libraryFilter.modeBlacklist' => 'Sortliste',
'services.libraryFilter.modeWhitelist' => 'Hvidliste',
'services.libraryFilter.modeHintBlacklist' => 'Synkroniser alle biblioteker undtagen dem du markerer nedenfor.',
'services.libraryFilter.modeHintWhitelist' => 'Synkroniser kun de biblioteker du markerer nedenfor.',
'services.libraryFilter.libraries' => 'Biblioteker',
'services.libraryFilter.noLibraries' => 'Ingen biblioteker tilgængelige',
'addServer.addJellyfinTitle' => 'Tilføj Jellyfin-server', 'addServer.addJellyfinTitle' => 'Tilføj Jellyfin-server',
'addServer.serverUrls' => 'Server-URL\'er', 'addServer.serverUrls' => 'Server-URL\'er',
'addServer.serverUrlsHelper' => 'Flere URL\'er er tilladt, adskilt med kommaer.', 'addServer.serverUrlsHelper' => 'Flere URL\'er er tilladt, adskilt med kommaer.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsDe extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsDe logs = _TranslationsLogsDe._(_root); @override late final _TranslationsLogsDe logs = _TranslationsLogsDe._(_root);
@override late final _TranslationsLicensesDe licenses = _TranslationsLicensesDe._(_root); @override late final _TranslationsLicensesDe licenses = _TranslationsLicensesDe._(_root);
@override late final _TranslationsNavigationDe navigation = _TranslationsNavigationDe._(_root); @override late final _TranslationsNavigationDe navigation = _TranslationsNavigationDe._(_root);
@override late final _TranslationsExploreDe explore = _TranslationsExploreDe._(_root);
@override late final _TranslationsLiveTvDe liveTv = _TranslationsLiveTvDe._(_root); @override late final _TranslationsLiveTvDe liveTv = _TranslationsLiveTvDe._(_root);
@override late final _TranslationsCollectionsDe collections = _TranslationsCollectionsDe._(_root); @override late final _TranslationsCollectionsDe collections = _TranslationsCollectionsDe._(_root);
@override late final _TranslationsPlaylistsDe playlists = _TranslationsPlaylistsDe._(_root); @override late final _TranslationsPlaylistsDe playlists = _TranslationsPlaylistsDe._(_root);
@@ -84,7 +85,8 @@ class TranslationsDe extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenDe matchScreen = _TranslationsMatchScreenDe._(_root); @override late final _TranslationsMatchScreenDe matchScreen = _TranslationsMatchScreenDe._(_root);
@override late final _TranslationsServerTasksDe serverTasks = _TranslationsServerTasksDe._(_root); @override late final _TranslationsServerTasksDe serverTasks = _TranslationsServerTasksDe._(_root);
@override late final _TranslationsTraktDe trakt = _TranslationsTraktDe._(_root); @override late final _TranslationsTraktDe trakt = _TranslationsTraktDe._(_root);
@override late final _TranslationsTrackersDe trackers = _TranslationsTrackersDe._(_root); @override late final _TranslationsSeerrDe seerr = _TranslationsSeerrDe._(_root);
@override late final _TranslationsServicesDe services = _TranslationsServicesDe._(_root);
@override late final _TranslationsAddServerDe addServer = _TranslationsAddServerDe._(_root); @override late final _TranslationsAddServerDe addServer = _TranslationsAddServerDe._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsDe extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Zeige auf Discord, was du gerade schaust'; @override String get discordRichPresenceDescription => 'Zeige auf Discord, was du gerade schaust';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Wiedergabeverlauf mit Trakt synchronisieren'; @override String get traktDescription => 'Wiedergabeverlauf mit Trakt synchronisieren';
@override String get trackers => 'Tracker'; @override String get services => 'Dienste';
@override String get trackersDescription => 'Fortschritt mit Trakt, MyAnimeList, AniList und Simkl synchronisieren'; @override String get servicesDescription => 'Trakt, MyAnimeList, Seerr und mehr verbinden';
@override String get companionRemoteServer => 'Companion Remote Server'; @override String get companionRemoteServer => 'Companion Remote Server';
@override String get companionRemoteServerDescription => 'Mobilgeräten in deinem Netzwerk erlauben, diese App zu steuern'; @override String get companionRemoteServerDescription => 'Mobilgeräten in deinem Netzwerk erlauben, diese App zu steuern';
@override String get autoPip => 'Automatisches Bild-in-Bild'; @override String get autoPip => 'Automatisches Bild-in-Bild';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetDe extends TranslationsRateSheetEn {
@override String get setScore => 'Eine Wertung festlegen'; @override String get setScore => 'Eine Wertung festlegen';
@override String get saved => 'Gespeichert'; @override String get saved => 'Gespeichert';
@override String get notAvailable => 'Keine Übereinstimmung gefunden'; @override String get notAvailable => 'Keine Übereinstimmung gefunden';
@override String get noConnectedTrackers => 'Verbinde einen Tracker in den Einstellungen, um dort zu bewerten.'; @override String get noConnectedServices => 'Verbinde einen Dienst in den Einstellungen, um dort zu bewerten.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationDe extends TranslationsNavigationEn {
@override String get libraries => 'Medien'; @override String get libraries => 'Medien';
@override String get downloads => 'Downloads'; @override String get downloads => 'Downloads';
@override String get liveTv => 'Live-TV'; @override String get liveTv => 'Live-TV';
@override String get explore => 'Erkunden';
}
// Path: explore
class _TranslationsExploreDe extends TranslationsExploreEn {
_TranslationsExploreDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get title => 'Erkunden';
@override String get selectSource => 'Quelle auswählen';
@override late final _TranslationsExploreRowsDe rows = _TranslationsExploreRowsDe._(_root);
@override late final _TranslationsExploreStatusDe status = _TranslationsExploreStatusDe._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('de'))(n,
one: '${n} Folge',
other: '${n} Folgen',
);
@override String get cast => 'Besetzung';
@override String get characters => 'Charaktere';
@override String get addToWatchlist => 'Zur Merkliste hinzufügen';
@override String get removeFromWatchlist => 'Von Merkliste entfernen';
@override String get watchlistUpdateFailed => 'Merkliste konnte nicht aktualisiert werden';
@override String get notInLibrary => 'Nicht in deiner Mediathek';
@override String get inTheseLibraries => 'In diesen Mediatheken';
@override String availableOn({required Object server}) => 'Verfügbar auf ${server}';
@override String get checkingLibrary => 'Deine Mediathek wird überprüft...';
@override String get emptyTitle => 'Hier ist noch nichts';
@override String emptyMessage({required Object source}) => 'Zeilen aus ${source} erscheinen hier, sobald sie Inhalte enthalten.';
@override String searchHint({required Object source}) => '${source} durchsuchen';
@override String searchEmpty({required Object query}) => 'Keine Ergebnisse für "${query}"';
@override String searchPrompt({required Object source}) => 'Suche nach Filmen und Serien auf ${source}.';
@override String get searchFailed => 'Suche fehlgeschlagen. Prüfe deine Verbindung und versuche es erneut.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktDe extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Wenn du Inhalte in Plezy als gesehen markierst, werden sie auch auf Trakt markiert.'; @override String get watchedSyncDescription => 'Wenn du Inhalte in Plezy als gesehen markierst, werden sie auch auf Trakt markiert.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersDe extends TranslationsTrackersEn { class _TranslationsSeerrDe extends TranslationsSeerrEn {
_TranslationsTrackersDe._(TranslationsDe root) : this._root = root, super.internal(root); _TranslationsSeerrDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field final TranslationsDe _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Tracker'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Wiedergabefortschritt mit Trakt und anderen Diensten synchronisieren.'; @override String get connectTitle => 'Seerr verbinden';
@override String get serverUrl => 'Server-URL';
@override String get serverUrlHelper => 'Die Adresse deiner Seerr-Instanz';
@override String get checkServer => 'Weiter';
@override String get signInWithJellyfin => 'Mit Jellyfin anmelden';
@override String get signInWithEmby => 'Mit Emby anmelden';
@override String get signInWithLocal => 'Lokales Konto verwenden';
@override String get email => 'E-Mail';
@override String get noSignInMethods => 'Diese Seerr-Instanz bietet keine von Plezy unterstützte Anmeldemethode.';
@override String get instance => 'Instanz';
@override String get disconnectConfirm => 'Seerr trennen?';
@override String get disconnectConfirmBody => 'Plezy vergisst diese Seerr-Instanz. Jederzeit erneut verbinden.';
@override String get request => 'Anfragen';
@override String get request4k => 'In 4K anfragen';
@override String get seasons => 'Staffeln';
@override String get allSeasons => 'Alle Staffeln';
@override String get advancedOptions => 'Erweitert';
@override String get destinationServer => 'Zielserver';
@override String get qualityProfile => 'Qualitätsprofil';
@override String get rootFolder => 'Stammordner';
@override String get languageProfile => 'Sprachprofil';
@override String get requestSubmitted => 'Anfrage gesendet';
@override String requestFailed({required Object error}) => 'Anfrage fehlgeschlagen: ${error}';
@override String get requestsLoadFailed => 'Anfrageoptionen konnten nicht geladen werden';
@override String get nothingToRequest => 'Alles ist bereits verfügbar oder angefragt.';
@override String get statusAvailable => 'Verfügbar';
@override String get statusPartiallyAvailable => 'Teilweise verfügbar';
@override String get statusRequested => 'Angefragt';
@override String get statusProcessing => 'Wird verarbeitet';
}
// Path: services
class _TranslationsServicesDe extends TranslationsServicesEn {
_TranslationsServicesDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get title => 'Dienste';
@override String get hubSubtitle => 'Wiedergabefortschritt synchronisieren und neue Titel anfragen.';
@override String get notConnected => 'Nicht verbunden'; @override String get notConnected => 'Nicht verbunden';
@override String connectedAs({required Object username}) => 'Verbunden als @${username}'; @override String connectedAs({required Object username}) => 'Verbunden als @${username}';
@override String get scrobble => 'Fortschritt automatisch verfolgen'; @override String get scrobble => 'Fortschritt automatisch verfolgen';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersDe extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => '${service} trennen?'; @override String disconnectConfirm({required Object service}) => '${service} trennen?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy aktualisiert ${service} nicht mehr. Jederzeit erneut verbinden.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy aktualisiert ${service} nicht mehr. Jederzeit erneut verbinden.';
@override String connectFailed({required Object service}) => 'Verbindung zu ${service} fehlgeschlagen. Versuche es erneut.'; @override String connectFailed({required Object service}) => 'Verbindung zu ${service} fehlgeschlagen. Versuche es erneut.';
@override late final _TranslationsTrackersServicesDe services = _TranslationsTrackersServicesDe._(_root); @override late final _TranslationsServicesNamesDe names = _TranslationsServicesNamesDe._(_root);
@override late final _TranslationsTrackersDeviceCodeDe deviceCode = _TranslationsTrackersDeviceCodeDe._(_root); @override late final _TranslationsServicesDeviceCodeDe deviceCode = _TranslationsServicesDeviceCodeDe._(_root);
@override late final _TranslationsTrackersOauthProxyDe oauthProxy = _TranslationsTrackersOauthProxyDe._(_root); @override late final _TranslationsServicesOauthProxyDe oauthProxy = _TranslationsServicesOauthProxyDe._(_root);
@override late final _TranslationsTrackersLibraryFilterDe libraryFilter = _TranslationsTrackersLibraryFilterDe._(_root); @override late final _TranslationsServicesLibraryFilterDe libraryFilter = _TranslationsServicesLibraryFilterDe._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsDe extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Datum der zuletzt hinzugefügten Folge'; @override String get lastEpisodeDateAdded => 'Datum der zuletzt hinzugefügten Folge';
} }
// Path: explore.rows
class _TranslationsExploreRowsDe extends TranslationsExploreRowsEn {
_TranslationsExploreRowsDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Merkliste';
@override String get recommendedMovies => 'Empfohlene Filme';
@override String get recommendedShows => 'Empfohlene Serien';
@override String get trendingMovies => 'Angesagte Filme';
@override String get trendingShows => 'Angesagte Serien';
@override String get popularMovies => 'Beliebte Filme';
@override String get popularShows => 'Beliebte Serien';
@override String get suggestedAnime => 'Vorgeschlagene Anime';
@override String get airingAnime => 'Top laufende Anime';
@override String get popularAnime => 'Beliebteste Anime';
@override String get trending => 'Angesagt';
@override String get upcomingMovies => 'Kommende Filme';
@override String get upcomingShows => 'Kommende Serien';
}
// Path: explore.status
class _TranslationsExploreStatusDe extends TranslationsExploreStatusEn {
_TranslationsExploreStatusDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field
// Translations
@override String get airing => 'Laufend';
@override String get ended => 'Beendet';
@override String get canceled => 'Abgesetzt';
@override String get upcoming => 'Demnächst';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionDe extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionDe extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionDe._(TranslationsDe root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionDe._(TranslationsDe root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsDe extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Verbindung verloren'; @override String get connectionLost => 'Verbindung verloren';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesDe extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesDe extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesDe._(TranslationsDe root) : this._root = root, super.internal(root); _TranslationsServicesNamesDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field final TranslationsDe _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesDe extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeDe extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeDe extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeDe._(TranslationsDe root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field final TranslationsDe _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeDe extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Code kopiert'; @override String get codeCopied => 'Code kopiert';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyDe extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyDe extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyDe._(TranslationsDe root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field final TranslationsDe _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyDe extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL kopiert'; @override String get urlCopied => 'URL kopiert';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterDe extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterDe extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterDe._(TranslationsDe root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterDe._(TranslationsDe root) : this._root = root, super.internal(root);
final TranslationsDe _root; // ignore: unused_field final TranslationsDe _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsDe {
'settings.discordRichPresenceDescription' => 'Zeige auf Discord, was du gerade schaust', 'settings.discordRichPresenceDescription' => 'Zeige auf Discord, was du gerade schaust',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Wiedergabeverlauf mit Trakt synchronisieren', 'settings.traktDescription' => 'Wiedergabeverlauf mit Trakt synchronisieren',
'settings.trackers' => 'Tracker', 'settings.services' => 'Dienste',
'settings.trackersDescription' => 'Fortschritt mit Trakt, MyAnimeList, AniList und Simkl synchronisieren', 'settings.servicesDescription' => 'Trakt, MyAnimeList, Seerr und mehr verbinden',
'settings.companionRemoteServer' => 'Companion Remote Server', 'settings.companionRemoteServer' => 'Companion Remote Server',
'settings.companionRemoteServerDescription' => 'Mobilgeräten in deinem Netzwerk erlauben, diese App zu steuern', 'settings.companionRemoteServerDescription' => 'Mobilgeräten in deinem Netzwerk erlauben, diese App zu steuern',
'settings.autoPip' => 'Automatisches Bild-in-Bild', 'settings.autoPip' => 'Automatisches Bild-in-Bild',
@@ -2390,7 +2500,7 @@ extension on TranslationsDe {
'rateSheet.setScore' => 'Eine Wertung festlegen', 'rateSheet.setScore' => 'Eine Wertung festlegen',
'rateSheet.saved' => 'Gespeichert', 'rateSheet.saved' => 'Gespeichert',
'rateSheet.notAvailable' => 'Keine Übereinstimmung gefunden', 'rateSheet.notAvailable' => 'Keine Übereinstimmung gefunden',
'rateSheet.noConnectedTrackers' => 'Verbinde einen Tracker in den Einstellungen, um dort zu bewerten.', 'rateSheet.noConnectedServices' => 'Verbinde einen Dienst in den Einstellungen, um dort zu bewerten.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, Film', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, Film',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, Serie', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, Serie',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsDe {
'navigation.libraries' => 'Medien', 'navigation.libraries' => 'Medien',
'navigation.downloads' => 'Downloads', 'navigation.downloads' => 'Downloads',
'navigation.liveTv' => 'Live-TV', 'navigation.liveTv' => 'Live-TV',
'navigation.explore' => 'Erkunden',
'explore.title' => 'Erkunden',
'explore.selectSource' => 'Quelle auswählen',
'explore.rows.watchlist' => 'Merkliste',
'explore.rows.recommendedMovies' => 'Empfohlene Filme',
'explore.rows.recommendedShows' => 'Empfohlene Serien',
'explore.rows.trendingMovies' => 'Angesagte Filme',
'explore.rows.trendingShows' => 'Angesagte Serien',
'explore.rows.popularMovies' => 'Beliebte Filme',
'explore.rows.popularShows' => 'Beliebte Serien',
'explore.rows.suggestedAnime' => 'Vorgeschlagene Anime',
'explore.rows.airingAnime' => 'Top laufende Anime',
'explore.rows.popularAnime' => 'Beliebteste Anime',
'explore.rows.trending' => 'Angesagt',
'explore.rows.upcomingMovies' => 'Kommende Filme',
'explore.rows.upcomingShows' => 'Kommende Serien',
'explore.status.airing' => 'Laufend',
'explore.status.ended' => 'Beendet',
'explore.status.canceled' => 'Abgesetzt',
'explore.status.upcoming' => 'Demnächst',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('de'))(n, one: '${n} Folge', other: '${n} Folgen', ),
'explore.cast' => 'Besetzung',
'explore.characters' => 'Charaktere',
'explore.addToWatchlist' => 'Zur Merkliste hinzufügen',
'explore.removeFromWatchlist' => 'Von Merkliste entfernen',
'explore.watchlistUpdateFailed' => 'Merkliste konnte nicht aktualisiert werden',
'explore.notInLibrary' => 'Nicht in deiner Mediathek',
'explore.inTheseLibraries' => 'In diesen Mediatheken',
'explore.availableOn' => ({required Object server}) => 'Verfügbar auf ${server}',
'explore.checkingLibrary' => 'Deine Mediathek wird überprüft...',
'explore.emptyTitle' => 'Hier ist noch nichts',
'explore.emptyMessage' => ({required Object source}) => 'Zeilen aus ${source} erscheinen hier, sobald sie Inhalte enthalten.',
'explore.searchHint' => ({required Object source}) => '${source} durchsuchen',
'explore.searchEmpty' => ({required Object query}) => 'Keine Ergebnisse für "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Suche nach Filmen und Serien auf ${source}.',
'explore.searchFailed' => 'Suche fehlgeschlagen. Prüfe deine Verbindung und versuche es erneut.',
'liveTv.title' => 'Live-TV', 'liveTv.title' => 'Live-TV',
'liveTv.guide' => 'Programmführer', 'liveTv.guide' => 'Programmführer',
'liveTv.noChannels' => 'Keine Kanäle verfügbar', 'liveTv.noChannels' => 'Keine Kanäle verfügbar',
@@ -2986,6 +3132,8 @@ extension on TranslationsDe {
'downloads.cancelledDownloadMessage' => 'Dieser Download wurde abgebrochen. Was möchtest du tun?', 'downloads.cancelledDownloadMessage' => 'Dieser Download wurde abgebrochen. Was möchtest du tun?',
'downloads.allEpisodesAlreadyDownloaded' => 'Alle Episoden sind bereits heruntergeladen', 'downloads.allEpisodesAlreadyDownloaded' => 'Alle Episoden sind bereits heruntergeladen',
'downloads.resumeDownload' => 'Download fortsetzen', 'downloads.resumeDownload' => 'Download fortsetzen',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Abgebrochener Download', 'downloads.cancelledDownload' => 'Abgebrochener Download',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (${status} wird synchronisiert)', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (${status} wird synchronisiert)',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} heruntergeladen — zum Abschließen klicken', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} heruntergeladen — zum Abschließen klicken',
@@ -3022,8 +3170,6 @@ extension on TranslationsDe {
'downloads.noSyncRules' => 'Keine Sync-Regeln', 'downloads.noSyncRules' => 'Keine Sync-Regeln',
'downloads.manageSyncRule' => 'Synchronisierung verwalten', 'downloads.manageSyncRule' => 'Synchronisierung verwalten',
'downloads.editEpisodeCount' => 'Episodenanzahl', 'downloads.editEpisodeCount' => 'Episodenanzahl',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Synchronisierungsfilter', 'downloads.editSyncFilter' => 'Synchronisierungsfilter',
'downloads.syncAllItems' => 'Alle Einträge synchronisieren', 'downloads.syncAllItems' => 'Alle Einträge synchronisieren',
'downloads.syncUnwatchedItems' => 'Ungesehene Einträge synchronisieren', 'downloads.syncUnwatchedItems' => 'Ungesehene Einträge synchronisieren',
@@ -3272,39 +3418,70 @@ extension on TranslationsDe {
'trakt.scrobbleDescription' => 'Sende Play-, Pause- und Stopp-Ereignisse während der Wiedergabe an Trakt.', 'trakt.scrobbleDescription' => 'Sende Play-, Pause- und Stopp-Ereignisse während der Wiedergabe an Trakt.',
'trakt.watchedSync' => 'Gesehen-Status synchronisieren', 'trakt.watchedSync' => 'Gesehen-Status synchronisieren',
'trakt.watchedSyncDescription' => 'Wenn du Inhalte in Plezy als gesehen markierst, werden sie auch auf Trakt markiert.', 'trakt.watchedSyncDescription' => 'Wenn du Inhalte in Plezy als gesehen markierst, werden sie auch auf Trakt markiert.',
'trackers.title' => 'Tracker', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Wiedergabefortschritt mit Trakt und anderen Diensten synchronisieren.', 'seerr.connectTitle' => 'Seerr verbinden',
'trackers.notConnected' => 'Nicht verbunden', 'seerr.serverUrl' => 'Server-URL',
'trackers.connectedAs' => ({required Object username}) => 'Verbunden als @${username}', 'seerr.serverUrlHelper' => 'Die Adresse deiner Seerr-Instanz',
'trackers.scrobble' => 'Fortschritt automatisch verfolgen', 'seerr.checkServer' => 'Weiter',
'trackers.scrobbleDescription' => 'Aktualisiere deine Liste, wenn du eine Folge oder einen Film beendest.', 'seerr.signInWithJellyfin' => 'Mit Jellyfin anmelden',
'trackers.disconnectConfirm' => ({required Object service}) => '${service} trennen?', 'seerr.signInWithEmby' => 'Mit Emby anmelden',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy aktualisiert ${service} nicht mehr. Jederzeit erneut verbinden.', 'seerr.signInWithLocal' => 'Lokales Konto verwenden',
'trackers.connectFailed' => ({required Object service}) => 'Verbindung zu ${service} fehlgeschlagen. Versuche es erneut.', 'seerr.email' => 'E-Mail',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Diese Seerr-Instanz bietet keine von Plezy unterstützte Anmeldemethode.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instanz',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Seerr trennen?',
'trackers.deviceCode.title' => ({required Object service}) => 'Plezy auf ${service} aktivieren', 'seerr.disconnectConfirmBody' => 'Plezy vergisst diese Seerr-Instanz. Jederzeit erneut verbinden.',
'trackers.deviceCode.body' => ({required Object url}) => 'Gehe zu ${url} und gib diesen Code ein:', 'seerr.request' => 'Anfragen',
'trackers.deviceCode.openToActivate' => ({required Object service}) => '${service} zum Aktivieren öffnen', 'seerr.request4k' => 'In 4K anfragen',
'trackers.deviceCode.waitingForAuthorization' => 'Warte auf Autorisierung…', 'seerr.seasons' => 'Staffeln',
'trackers.deviceCode.codeCopied' => 'Code kopiert', 'seerr.allSeasons' => 'Alle Staffeln',
'trackers.oauthProxy.title' => ({required Object service}) => 'Bei ${service} anmelden', 'seerr.advancedOptions' => 'Erweitert',
'trackers.oauthProxy.body' => 'Scanne diesen QR-Code oder öffne die URL auf einem beliebigen Gerät.', 'seerr.destinationServer' => 'Zielserver',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => '${service} zum Anmelden öffnen', 'seerr.qualityProfile' => 'Qualitätsprofil',
'trackers.oauthProxy.urlCopied' => 'URL kopiert', 'seerr.rootFolder' => 'Stammordner',
'trackers.libraryFilter.title' => 'Bibliothekfilter', 'seerr.languageProfile' => 'Sprachprofil',
'trackers.libraryFilter.subtitleAllSyncing' => 'Alle Bibliotheken werden synchronisiert', 'seerr.requestSubmitted' => 'Anfrage gesendet',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Nichts wird synchronisiert', 'seerr.requestFailed' => ({required Object error}) => 'Anfrage fehlgeschlagen: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blockiert', 'seerr.requestsLoadFailed' => 'Anfrageoptionen konnten nicht geladen werden',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} erlaubt', 'seerr.nothingToRequest' => 'Alles ist bereits verfügbar oder angefragt.',
'trackers.libraryFilter.mode' => 'Filtermodus', 'seerr.statusAvailable' => 'Verfügbar',
'trackers.libraryFilter.modeBlacklist' => 'Blacklist', 'seerr.statusPartiallyAvailable' => 'Teilweise verfügbar',
'trackers.libraryFilter.modeWhitelist' => 'Whitelist', 'seerr.statusRequested' => 'Angefragt',
'trackers.libraryFilter.modeHintBlacklist' => 'Alle Bibliotheken außer den unten markierten synchronisieren.', 'seerr.statusProcessing' => 'Wird verarbeitet',
'trackers.libraryFilter.modeHintWhitelist' => 'Nur die unten markierten Bibliotheken synchronisieren.', 'services.title' => 'Dienste',
'trackers.libraryFilter.libraries' => 'Bibliotheken', 'services.hubSubtitle' => 'Wiedergabefortschritt synchronisieren und neue Titel anfragen.',
'trackers.libraryFilter.noLibraries' => 'Keine Bibliotheken verfügbar', 'services.notConnected' => 'Nicht verbunden',
'services.connectedAs' => ({required Object username}) => 'Verbunden als @${username}',
'services.scrobble' => 'Fortschritt automatisch verfolgen',
'services.scrobbleDescription' => 'Aktualisiere deine Liste, wenn du eine Folge oder einen Film beendest.',
'services.disconnectConfirm' => ({required Object service}) => '${service} trennen?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy aktualisiert ${service} nicht mehr. Jederzeit erneut verbinden.',
'services.connectFailed' => ({required Object service}) => 'Verbindung zu ${service} fehlgeschlagen. Versuche es erneut.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Plezy auf ${service} aktivieren',
'services.deviceCode.body' => ({required Object url}) => 'Gehe zu ${url} und gib diesen Code ein:',
'services.deviceCode.openToActivate' => ({required Object service}) => '${service} zum Aktivieren öffnen',
'services.deviceCode.waitingForAuthorization' => 'Warte auf Autorisierung…',
'services.deviceCode.codeCopied' => 'Code kopiert',
'services.oauthProxy.title' => ({required Object service}) => 'Bei ${service} anmelden',
'services.oauthProxy.body' => 'Scanne diesen QR-Code oder öffne die URL auf einem beliebigen Gerät.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => '${service} zum Anmelden öffnen',
'services.oauthProxy.urlCopied' => 'URL kopiert',
'services.libraryFilter.title' => 'Bibliothekfilter',
'services.libraryFilter.subtitleAllSyncing' => 'Alle Bibliotheken werden synchronisiert',
'services.libraryFilter.subtitleNoneSyncing' => 'Nichts wird synchronisiert',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blockiert',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} erlaubt',
'services.libraryFilter.mode' => 'Filtermodus',
'services.libraryFilter.modeBlacklist' => 'Blacklist',
'services.libraryFilter.modeWhitelist' => 'Whitelist',
'services.libraryFilter.modeHintBlacklist' => 'Alle Bibliotheken außer den unten markierten synchronisieren.',
'services.libraryFilter.modeHintWhitelist' => 'Nur die unten markierten Bibliotheken synchronisieren.',
'services.libraryFilter.libraries' => 'Bibliotheken',
'services.libraryFilter.noLibraries' => 'Keine Bibliotheken verfügbar',
'addServer.addJellyfinTitle' => 'Jellyfin-Server hinzufügen', 'addServer.addJellyfinTitle' => 'Jellyfin-Server hinzufügen',
'addServer.serverUrls' => 'Server-URLs', 'addServer.serverUrls' => 'Server-URLs',
'addServer.serverUrlsHelper' => 'Mehrere URLs möglich, durch Kommas getrennt.', 'addServer.serverUrlsHelper' => 'Mehrere URLs möglich, durch Kommas getrennt.',
+380 -68
View File
@@ -70,6 +70,7 @@ class Translations with BaseTranslations<AppLocale, Translations> {
late final TranslationsLogsEn logs = TranslationsLogsEn.internal(_root); late final TranslationsLogsEn logs = TranslationsLogsEn.internal(_root);
late final TranslationsLicensesEn licenses = TranslationsLicensesEn.internal(_root); late final TranslationsLicensesEn licenses = TranslationsLicensesEn.internal(_root);
late final TranslationsNavigationEn navigation = TranslationsNavigationEn.internal(_root); late final TranslationsNavigationEn navigation = TranslationsNavigationEn.internal(_root);
late final TranslationsExploreEn explore = TranslationsExploreEn.internal(_root);
late final TranslationsLiveTvEn liveTv = TranslationsLiveTvEn.internal(_root); late final TranslationsLiveTvEn liveTv = TranslationsLiveTvEn.internal(_root);
late final TranslationsCollectionsEn collections = TranslationsCollectionsEn.internal(_root); late final TranslationsCollectionsEn collections = TranslationsCollectionsEn.internal(_root);
late final TranslationsPlaylistsEn playlists = TranslationsPlaylistsEn.internal(_root); late final TranslationsPlaylistsEn playlists = TranslationsPlaylistsEn.internal(_root);
@@ -85,7 +86,8 @@ class Translations with BaseTranslations<AppLocale, Translations> {
late final TranslationsMatchScreenEn matchScreen = TranslationsMatchScreenEn.internal(_root); late final TranslationsMatchScreenEn matchScreen = TranslationsMatchScreenEn.internal(_root);
late final TranslationsServerTasksEn serverTasks = TranslationsServerTasksEn.internal(_root); late final TranslationsServerTasksEn serverTasks = TranslationsServerTasksEn.internal(_root);
late final TranslationsTraktEn trakt = TranslationsTraktEn.internal(_root); late final TranslationsTraktEn trakt = TranslationsTraktEn.internal(_root);
late final TranslationsTrackersEn trackers = TranslationsTrackersEn.internal(_root); late final TranslationsSeerrEn seerr = TranslationsSeerrEn.internal(_root);
late final TranslationsServicesEn services = TranslationsServicesEn.internal(_root);
late final TranslationsAddServerEn addServer = TranslationsAddServerEn.internal(_root); late final TranslationsAddServerEn addServer = TranslationsAddServerEn.internal(_root);
} }
@@ -871,11 +873,11 @@ class TranslationsSettingsEn {
/// en: 'Sync watch history with Trakt' /// en: 'Sync watch history with Trakt'
String get traktDescription => 'Sync watch history with Trakt'; String get traktDescription => 'Sync watch history with Trakt';
/// en: 'Trackers' /// en: 'Services'
String get trackers => 'Trackers'; String get services => 'Services';
/// en: 'Sync progress to Trakt, MyAnimeList, AniList, and Simkl' /// en: 'Connect Trakt, MyAnimeList, Seerr, and more'
String get trackersDescription => 'Sync progress to Trakt, MyAnimeList, AniList, and Simkl'; String get servicesDescription => 'Connect Trakt, MyAnimeList, Seerr, and more';
/// en: 'Reorder and hide libraries' /// en: 'Reorder and hide libraries'
String get manageLibrariesDescription => 'Reorder and hide libraries'; String get manageLibrariesDescription => 'Reorder and hide libraries';
@@ -1323,8 +1325,8 @@ class TranslationsRateSheetEn {
/// en: 'No match found' /// en: 'No match found'
String get notAvailable => 'No match found'; String get notAvailable => 'No match found';
/// en: 'Connect a tracker in Settings to rate there.' /// en: 'Connect a service in Settings to rate there.'
String get noConnectedTrackers => 'Connect a tracker in Settings to rate there.'; String get noConnectedServices => 'Connect a service in Settings to rate there.';
} }
// Path: accessibility // Path: accessibility
@@ -2502,6 +2504,78 @@ class TranslationsNavigationEn {
/// en: 'Live TV' /// en: 'Live TV'
String get liveTv => 'Live TV'; String get liveTv => 'Live TV';
/// en: 'Explore'
String get explore => 'Explore';
}
// Path: explore
class TranslationsExploreEn {
TranslationsExploreEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Explore'
String get title => 'Explore';
/// en: 'Select source'
String get selectSource => 'Select source';
late final TranslationsExploreRowsEn rows = TranslationsExploreRowsEn.internal(_root);
late final TranslationsExploreStatusEn status = TranslationsExploreStatusEn.internal(_root);
/// en: '(one) {${n} episode} (other) {${n} episodes}'
String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n,
one: '${n} episode',
other: '${n} episodes',
);
/// en: 'Cast'
String get cast => 'Cast';
/// en: 'Characters'
String get characters => 'Characters';
/// en: 'Add to Watchlist'
String get addToWatchlist => 'Add to Watchlist';
/// en: 'Remove from Watchlist'
String get removeFromWatchlist => 'Remove from Watchlist';
/// en: 'Couldn't update watchlist'
String get watchlistUpdateFailed => 'Couldn\'t update watchlist';
/// en: 'Not in your library'
String get notInLibrary => 'Not in your library';
/// en: 'In these libraries'
String get inTheseLibraries => 'In these libraries';
/// en: 'Available on ${server}'
String availableOn({required Object server}) => 'Available on ${server}';
/// en: 'Checking your library...'
String get checkingLibrary => 'Checking your library...';
/// en: 'Nothing here yet'
String get emptyTitle => 'Nothing here yet';
/// en: 'Rows from ${source} will appear here once they have content.'
String emptyMessage({required Object source}) => 'Rows from ${source} will appear here once they have content.';
/// en: 'Search ${source}'
String searchHint({required Object source}) => 'Search ${source}';
/// en: 'No results for "${query}"'
String searchEmpty({required Object query}) => 'No results for "${query}"';
/// en: 'Search for movies and shows on ${source}.'
String searchPrompt({required Object source}) => 'Search for movies and shows on ${source}.';
/// en: 'Search failed. Check your connection and try again.'
String get searchFailed => 'Search failed. Check your connection and try again.';
} }
// Path: liveTv // Path: liveTv
@@ -3973,19 +4047,118 @@ class TranslationsTraktEn {
String get watchedSyncDescription => 'When you mark items watched in Plezy, mark them on Trakt.'; String get watchedSyncDescription => 'When you mark items watched in Plezy, mark them on Trakt.';
} }
// Path: trackers // Path: seerr
class TranslationsTrackersEn { class TranslationsSeerrEn {
TranslationsTrackersEn.internal(this._root); TranslationsSeerrEn.internal(this._root);
final Translations _root; // ignore: unused_field final Translations _root; // ignore: unused_field
// Translations // Translations
/// en: 'Trackers' /// en: 'Seerr'
String get title => 'Trackers'; String get title => 'Seerr';
/// en: 'Sync watch progress with Trakt and other services.' /// en: 'Connect Seerr'
String get hubSubtitle => 'Sync watch progress with Trakt and other services.'; String get connectTitle => 'Connect Seerr';
/// en: 'Server URL'
String get serverUrl => 'Server URL';
/// en: 'The address of your Seerr instance'
String get serverUrlHelper => 'The address of your Seerr instance';
/// en: 'Continue'
String get checkServer => 'Continue';
/// en: 'Sign in with Jellyfin'
String get signInWithJellyfin => 'Sign in with Jellyfin';
/// en: 'Sign in with Emby'
String get signInWithEmby => 'Sign in with Emby';
/// en: 'Use a local account'
String get signInWithLocal => 'Use a local account';
/// en: 'Email'
String get email => 'Email';
/// en: 'This Seerr instance offers no sign-in method Plezy supports.'
String get noSignInMethods => 'This Seerr instance offers no sign-in method Plezy supports.';
/// en: 'Instance'
String get instance => 'Instance';
/// en: 'Disconnect Seerr?'
String get disconnectConfirm => 'Disconnect Seerr?';
/// en: 'Plezy will forget this Seerr instance. Reconnect any time.'
String get disconnectConfirmBody => 'Plezy will forget this Seerr instance. Reconnect any time.';
/// en: 'Request'
String get request => 'Request';
/// en: 'Request in 4K'
String get request4k => 'Request in 4K';
/// en: 'Seasons'
String get seasons => 'Seasons';
/// en: 'All seasons'
String get allSeasons => 'All seasons';
/// en: 'Advanced'
String get advancedOptions => 'Advanced';
/// en: 'Destination server'
String get destinationServer => 'Destination server';
/// en: 'Quality profile'
String get qualityProfile => 'Quality profile';
/// en: 'Root folder'
String get rootFolder => 'Root folder';
/// en: 'Language profile'
String get languageProfile => 'Language profile';
/// en: 'Request submitted'
String get requestSubmitted => 'Request submitted';
/// en: 'Request failed: ${error}'
String requestFailed({required Object error}) => 'Request failed: ${error}';
/// en: 'Couldn't load request options'
String get requestsLoadFailed => 'Couldn\'t load request options';
/// en: 'Everything is already available or requested.'
String get nothingToRequest => 'Everything is already available or requested.';
/// en: 'Available'
String get statusAvailable => 'Available';
/// en: 'Partially available'
String get statusPartiallyAvailable => 'Partially available';
/// en: 'Requested'
String get statusRequested => 'Requested';
/// en: 'Processing'
String get statusProcessing => 'Processing';
}
// Path: services
class TranslationsServicesEn {
TranslationsServicesEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Services'
String get title => 'Services';
/// en: 'Sync watch progress and request new titles.'
String get hubSubtitle => 'Sync watch progress and request new titles.';
/// en: 'Not connected' /// en: 'Not connected'
String get notConnected => 'Not connected'; String get notConnected => 'Not connected';
@@ -4008,10 +4181,10 @@ class TranslationsTrackersEn {
/// en: 'Couldn't connect to ${service}. Try again.' /// en: 'Couldn't connect to ${service}. Try again.'
String connectFailed({required Object service}) => 'Couldn\'t connect to ${service}. Try again.'; String connectFailed({required Object service}) => 'Couldn\'t connect to ${service}. Try again.';
late final TranslationsTrackersServicesEn services = TranslationsTrackersServicesEn.internal(_root); late final TranslationsServicesNamesEn names = TranslationsServicesNamesEn.internal(_root);
late final TranslationsTrackersDeviceCodeEn deviceCode = TranslationsTrackersDeviceCodeEn.internal(_root); late final TranslationsServicesDeviceCodeEn deviceCode = TranslationsServicesDeviceCodeEn.internal(_root);
late final TranslationsTrackersOauthProxyEn oauthProxy = TranslationsTrackersOauthProxyEn.internal(_root); late final TranslationsServicesOauthProxyEn oauthProxy = TranslationsServicesOauthProxyEn.internal(_root);
late final TranslationsTrackersLibraryFilterEn libraryFilter = TranslationsTrackersLibraryFilterEn.internal(_root); late final TranslationsServicesLibraryFilterEn libraryFilter = TranslationsServicesLibraryFilterEn.internal(_root);
} }
// Path: addServer // Path: addServer
@@ -4383,6 +4556,75 @@ class TranslationsLibrariesSortLabelsEn {
String get lastEpisodeDateAdded => 'Last Episode Date Added'; String get lastEpisodeDateAdded => 'Last Episode Date Added';
} }
// Path: explore.rows
class TranslationsExploreRowsEn {
TranslationsExploreRowsEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Watchlist'
String get watchlist => 'Watchlist';
/// en: 'Recommended Movies'
String get recommendedMovies => 'Recommended Movies';
/// en: 'Recommended Shows'
String get recommendedShows => 'Recommended Shows';
/// en: 'Trending Movies'
String get trendingMovies => 'Trending Movies';
/// en: 'Trending Shows'
String get trendingShows => 'Trending Shows';
/// en: 'Popular Movies'
String get popularMovies => 'Popular Movies';
/// en: 'Popular Shows'
String get popularShows => 'Popular Shows';
/// en: 'Suggested Anime'
String get suggestedAnime => 'Suggested Anime';
/// en: 'Top Airing Anime'
String get airingAnime => 'Top Airing Anime';
/// en: 'Most Popular Anime'
String get popularAnime => 'Most Popular Anime';
/// en: 'Trending'
String get trending => 'Trending';
/// en: 'Upcoming Movies'
String get upcomingMovies => 'Upcoming Movies';
/// en: 'Upcoming Shows'
String get upcomingShows => 'Upcoming Shows';
}
// Path: explore.status
class TranslationsExploreStatusEn {
TranslationsExploreStatusEn.internal(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Airing'
String get airing => 'Airing';
/// en: 'Ended'
String get ended => 'Ended';
/// en: 'Canceled'
String get canceled => 'Canceled';
/// en: 'Upcoming'
String get upcoming => 'Upcoming';
}
// Path: companionRemote.session // Path: companionRemote.session
class TranslationsCompanionRemoteSessionEn { class TranslationsCompanionRemoteSessionEn {
TranslationsCompanionRemoteSessionEn.internal(this._root); TranslationsCompanionRemoteSessionEn.internal(this._root);
@@ -4599,9 +4841,9 @@ class TranslationsCompanionRemoteErrorsEn {
String get connectionLost => 'Connection lost'; String get connectionLost => 'Connection lost';
} }
// Path: trackers.services // Path: services.names
class TranslationsTrackersServicesEn { class TranslationsServicesNamesEn {
TranslationsTrackersServicesEn.internal(this._root); TranslationsServicesNamesEn.internal(this._root);
final Translations _root; // ignore: unused_field final Translations _root; // ignore: unused_field
@@ -4615,11 +4857,14 @@ class TranslationsTrackersServicesEn {
/// en: 'Simkl' /// en: 'Simkl'
String get simkl => 'Simkl'; String get simkl => 'Simkl';
/// en: 'Seerr'
String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class TranslationsTrackersDeviceCodeEn { class TranslationsServicesDeviceCodeEn {
TranslationsTrackersDeviceCodeEn.internal(this._root); TranslationsServicesDeviceCodeEn.internal(this._root);
final Translations _root; // ignore: unused_field final Translations _root; // ignore: unused_field
@@ -4641,9 +4886,9 @@ class TranslationsTrackersDeviceCodeEn {
String get codeCopied => 'Code copied'; String get codeCopied => 'Code copied';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class TranslationsTrackersOauthProxyEn { class TranslationsServicesOauthProxyEn {
TranslationsTrackersOauthProxyEn.internal(this._root); TranslationsServicesOauthProxyEn.internal(this._root);
final Translations _root; // ignore: unused_field final Translations _root; // ignore: unused_field
@@ -4662,9 +4907,9 @@ class TranslationsTrackersOauthProxyEn {
String get urlCopied => 'URL copied'; String get urlCopied => 'URL copied';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class TranslationsTrackersLibraryFilterEn { class TranslationsServicesLibraryFilterEn {
TranslationsTrackersLibraryFilterEn.internal(this._root); TranslationsServicesLibraryFilterEn.internal(this._root);
final Translations _root; // ignore: unused_field final Translations _root; // ignore: unused_field
@@ -4958,8 +5203,8 @@ extension on Translations {
'settings.discordRichPresenceDescription' => 'Show what you\'re watching on Discord', 'settings.discordRichPresenceDescription' => 'Show what you\'re watching on Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Sync watch history with Trakt', 'settings.traktDescription' => 'Sync watch history with Trakt',
'settings.trackers' => 'Trackers', 'settings.services' => 'Services',
'settings.trackersDescription' => 'Sync progress to Trakt, MyAnimeList, AniList, and Simkl', 'settings.servicesDescription' => 'Connect Trakt, MyAnimeList, Seerr, and more',
'settings.manageLibrariesDescription' => 'Reorder and hide libraries', 'settings.manageLibrariesDescription' => 'Reorder and hide libraries',
'settings.companionRemoteServer' => 'Companion Remote Server', 'settings.companionRemoteServer' => 'Companion Remote Server',
'settings.companionRemoteServerDescription' => 'Allow mobile devices on your network to control this app', 'settings.companionRemoteServerDescription' => 'Allow mobile devices on your network to control this app',
@@ -5118,7 +5363,7 @@ extension on Translations {
'rateSheet.favorited' => 'Favorited', 'rateSheet.favorited' => 'Favorited',
'rateSheet.saved' => 'Saved', 'rateSheet.saved' => 'Saved',
'rateSheet.notAvailable' => 'No match found', 'rateSheet.notAvailable' => 'No match found',
'rateSheet.noConnectedTrackers' => 'Connect a tracker in Settings to rate there.', 'rateSheet.noConnectedServices' => 'Connect a service in Settings to rate there.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, movie', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, movie',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV show', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV show',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -5502,6 +5747,42 @@ extension on Translations {
'navigation.libraries' => 'Libraries', 'navigation.libraries' => 'Libraries',
'navigation.downloads' => 'Downloads', 'navigation.downloads' => 'Downloads',
'navigation.liveTv' => 'Live TV', 'navigation.liveTv' => 'Live TV',
'navigation.explore' => 'Explore',
'explore.title' => 'Explore',
'explore.selectSource' => 'Select source',
'explore.rows.watchlist' => 'Watchlist',
'explore.rows.recommendedMovies' => 'Recommended Movies',
'explore.rows.recommendedShows' => 'Recommended Shows',
'explore.rows.trendingMovies' => 'Trending Movies',
'explore.rows.trendingShows' => 'Trending Shows',
'explore.rows.popularMovies' => 'Popular Movies',
'explore.rows.popularShows' => 'Popular Shows',
'explore.rows.suggestedAnime' => 'Suggested Anime',
'explore.rows.airingAnime' => 'Top Airing Anime',
'explore.rows.popularAnime' => 'Most Popular Anime',
'explore.rows.trending' => 'Trending',
'explore.rows.upcomingMovies' => 'Upcoming Movies',
'explore.rows.upcomingShows' => 'Upcoming Shows',
'explore.status.airing' => 'Airing',
'explore.status.ended' => 'Ended',
'explore.status.canceled' => 'Canceled',
'explore.status.upcoming' => 'Upcoming',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} episode', other: '${n} episodes', ),
'explore.cast' => 'Cast',
'explore.characters' => 'Characters',
'explore.addToWatchlist' => 'Add to Watchlist',
'explore.removeFromWatchlist' => 'Remove from Watchlist',
'explore.watchlistUpdateFailed' => 'Couldn\'t update watchlist',
'explore.notInLibrary' => 'Not in your library',
'explore.inTheseLibraries' => 'In these libraries',
'explore.availableOn' => ({required Object server}) => 'Available on ${server}',
'explore.checkingLibrary' => 'Checking your library...',
'explore.emptyTitle' => 'Nothing here yet',
'explore.emptyMessage' => ({required Object source}) => 'Rows from ${source} will appear here once they have content.',
'explore.searchHint' => ({required Object source}) => 'Search ${source}',
'explore.searchEmpty' => ({required Object query}) => 'No results for "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Search for movies and shows on ${source}.',
'explore.searchFailed' => 'Search failed. Check your connection and try again.',
'liveTv.title' => 'Live TV', 'liveTv.title' => 'Live TV',
'liveTv.guide' => 'Guide', 'liveTv.guide' => 'Guide',
'liveTv.noChannels' => 'No channels available', 'liveTv.noChannels' => 'No channels available',
@@ -5705,6 +5986,8 @@ extension on Translations {
'downloads.movies' => 'Movies', 'downloads.movies' => 'Movies',
'downloads.music' => 'Music', 'downloads.music' => 'Music',
'downloads.tracksQueued' => ({required Object count}) => '${count} tracks queued for download', 'downloads.tracksQueued' => ({required Object count}) => '${count} tracks queued for download',
_ => null,
} ?? switch (path) {
'downloads.noDownloads' => 'No downloads yet', 'downloads.noDownloads' => 'No downloads yet',
'downloads.noDownloadsDescription' => 'Downloaded content will appear here for offline viewing', 'downloads.noDownloadsDescription' => 'Downloaded content will appear here for offline viewing',
'downloads.downloadNow' => 'Download', 'downloads.downloadNow' => 'Download',
@@ -5741,8 +6024,6 @@ extension on Translations {
'downloads.customAmount' => 'Custom amount...', 'downloads.customAmount' => 'Custom amount...',
'downloads.includeSpecials' => 'Include Specials', 'downloads.includeSpecials' => 'Include Specials',
'downloads.howManyEpisodes' => 'How many episodes?', 'downloads.howManyEpisodes' => 'How many episodes?',
_ => null,
} ?? switch (path) {
'downloads.itemsQueued' => ({required Object count}) => '${count} items queued for download', 'downloads.itemsQueued' => ({required Object count}) => '${count} items queued for download',
'downloads.keepSynced' => 'Keep synced', 'downloads.keepSynced' => 'Keep synced',
'downloads.downloadOnce' => 'Download once', 'downloads.downloadOnce' => 'Download once',
@@ -6006,39 +6287,70 @@ extension on Translations {
'trakt.scrobbleDescription' => 'Send play, pause, and stop events to Trakt during playback.', 'trakt.scrobbleDescription' => 'Send play, pause, and stop events to Trakt during playback.',
'trakt.watchedSync' => 'Sync watched status', 'trakt.watchedSync' => 'Sync watched status',
'trakt.watchedSyncDescription' => 'When you mark items watched in Plezy, mark them on Trakt.', 'trakt.watchedSyncDescription' => 'When you mark items watched in Plezy, mark them on Trakt.',
'trackers.title' => 'Trackers', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Sync watch progress with Trakt and other services.', 'seerr.connectTitle' => 'Connect Seerr',
'trackers.notConnected' => 'Not connected', 'seerr.serverUrl' => 'Server URL',
'trackers.connectedAs' => ({required Object username}) => 'Connected as @${username}', 'seerr.serverUrlHelper' => 'The address of your Seerr instance',
'trackers.scrobble' => 'Track progress automatically', 'seerr.checkServer' => 'Continue',
'trackers.scrobbleDescription' => 'Update your list when you finish an episode or movie.', 'seerr.signInWithJellyfin' => 'Sign in with Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Disconnect ${service}?', 'seerr.signInWithEmby' => 'Sign in with Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy will stop updating ${service}. Reconnect any time.', 'seerr.signInWithLocal' => 'Use a local account',
'trackers.connectFailed' => ({required Object service}) => 'Couldn\'t connect to ${service}. Try again.', 'seerr.email' => 'Email',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'This Seerr instance offers no sign-in method Plezy supports.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instance',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Disconnect Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Activate Plezy on ${service}', 'seerr.disconnectConfirmBody' => 'Plezy will forget this Seerr instance. Reconnect any time.',
'trackers.deviceCode.body' => ({required Object url}) => 'Visit ${url} and enter this code:', 'seerr.request' => 'Request',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Open ${service} to activate', 'seerr.request4k' => 'Request in 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Waiting for authorization…', 'seerr.seasons' => 'Seasons',
'trackers.deviceCode.codeCopied' => 'Code copied', 'seerr.allSeasons' => 'All seasons',
'trackers.oauthProxy.title' => ({required Object service}) => 'Sign in to ${service}', 'seerr.advancedOptions' => 'Advanced',
'trackers.oauthProxy.body' => 'Scan this QR code or open the URL on any device.', 'seerr.destinationServer' => 'Destination server',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Open ${service} to sign in', 'seerr.qualityProfile' => 'Quality profile',
'trackers.oauthProxy.urlCopied' => 'URL copied', 'seerr.rootFolder' => 'Root folder',
'trackers.libraryFilter.title' => 'Library filter', 'seerr.languageProfile' => 'Language profile',
'trackers.libraryFilter.subtitleAllSyncing' => 'Syncing all libraries', 'seerr.requestSubmitted' => 'Request submitted',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Nothing syncing', 'seerr.requestFailed' => ({required Object error}) => 'Request failed: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blocked', 'seerr.requestsLoadFailed' => 'Couldn\'t load request options',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} allowed', 'seerr.nothingToRequest' => 'Everything is already available or requested.',
'trackers.libraryFilter.mode' => 'Filter mode', 'seerr.statusAvailable' => 'Available',
'trackers.libraryFilter.modeBlacklist' => 'Blacklist', 'seerr.statusPartiallyAvailable' => 'Partially available',
'trackers.libraryFilter.modeWhitelist' => 'Whitelist', 'seerr.statusRequested' => 'Requested',
'trackers.libraryFilter.modeHintBlacklist' => 'Sync every library except the ones checked below.', 'seerr.statusProcessing' => 'Processing',
'trackers.libraryFilter.modeHintWhitelist' => 'Sync only the libraries checked below.', 'services.title' => 'Services',
'trackers.libraryFilter.libraries' => 'Libraries', 'services.hubSubtitle' => 'Sync watch progress and request new titles.',
'trackers.libraryFilter.noLibraries' => 'No libraries available', 'services.notConnected' => 'Not connected',
'services.connectedAs' => ({required Object username}) => 'Connected as @${username}',
'services.scrobble' => 'Track progress automatically',
'services.scrobbleDescription' => 'Update your list when you finish an episode or movie.',
'services.disconnectConfirm' => ({required Object service}) => 'Disconnect ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy will stop updating ${service}. Reconnect any time.',
'services.connectFailed' => ({required Object service}) => 'Couldn\'t connect to ${service}. Try again.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Activate Plezy on ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Visit ${url} and enter this code:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Open ${service} to activate',
'services.deviceCode.waitingForAuthorization' => 'Waiting for authorization…',
'services.deviceCode.codeCopied' => 'Code copied',
'services.oauthProxy.title' => ({required Object service}) => 'Sign in to ${service}',
'services.oauthProxy.body' => 'Scan this QR code or open the URL on any device.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Open ${service} to sign in',
'services.oauthProxy.urlCopied' => 'URL copied',
'services.libraryFilter.title' => 'Library filter',
'services.libraryFilter.subtitleAllSyncing' => 'Syncing all libraries',
'services.libraryFilter.subtitleNoneSyncing' => 'Nothing syncing',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blocked',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} allowed',
'services.libraryFilter.mode' => 'Filter mode',
'services.libraryFilter.modeBlacklist' => 'Blacklist',
'services.libraryFilter.modeWhitelist' => 'Whitelist',
'services.libraryFilter.modeHintBlacklist' => 'Sync every library except the ones checked below.',
'services.libraryFilter.modeHintWhitelist' => 'Sync only the libraries checked below.',
'services.libraryFilter.libraries' => 'Libraries',
'services.libraryFilter.noLibraries' => 'No libraries available',
'addServer.addJellyfinTitle' => 'Add Jellyfin server', 'addServer.addJellyfinTitle' => 'Add Jellyfin server',
'addServer.serverUrls' => 'Server URLs', 'addServer.serverUrls' => 'Server URLs',
'addServer.serverUrlsHelper' => 'Multiple URLs allowed, separated by commas.', 'addServer.serverUrlsHelper' => 'Multiple URLs allowed, separated by commas.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsEs extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsEs logs = _TranslationsLogsEs._(_root); @override late final _TranslationsLogsEs logs = _TranslationsLogsEs._(_root);
@override late final _TranslationsLicensesEs licenses = _TranslationsLicensesEs._(_root); @override late final _TranslationsLicensesEs licenses = _TranslationsLicensesEs._(_root);
@override late final _TranslationsNavigationEs navigation = _TranslationsNavigationEs._(_root); @override late final _TranslationsNavigationEs navigation = _TranslationsNavigationEs._(_root);
@override late final _TranslationsExploreEs explore = _TranslationsExploreEs._(_root);
@override late final _TranslationsLiveTvEs liveTv = _TranslationsLiveTvEs._(_root); @override late final _TranslationsLiveTvEs liveTv = _TranslationsLiveTvEs._(_root);
@override late final _TranslationsCollectionsEs collections = _TranslationsCollectionsEs._(_root); @override late final _TranslationsCollectionsEs collections = _TranslationsCollectionsEs._(_root);
@override late final _TranslationsPlaylistsEs playlists = _TranslationsPlaylistsEs._(_root); @override late final _TranslationsPlaylistsEs playlists = _TranslationsPlaylistsEs._(_root);
@@ -84,7 +85,8 @@ class TranslationsEs extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenEs matchScreen = _TranslationsMatchScreenEs._(_root); @override late final _TranslationsMatchScreenEs matchScreen = _TranslationsMatchScreenEs._(_root);
@override late final _TranslationsServerTasksEs serverTasks = _TranslationsServerTasksEs._(_root); @override late final _TranslationsServerTasksEs serverTasks = _TranslationsServerTasksEs._(_root);
@override late final _TranslationsTraktEs trakt = _TranslationsTraktEs._(_root); @override late final _TranslationsTraktEs trakt = _TranslationsTraktEs._(_root);
@override late final _TranslationsTrackersEs trackers = _TranslationsTrackersEs._(_root); @override late final _TranslationsSeerrEs seerr = _TranslationsSeerrEs._(_root);
@override late final _TranslationsServicesEs services = _TranslationsServicesEs._(_root);
@override late final _TranslationsAddServerEs addServer = _TranslationsAddServerEs._(_root); @override late final _TranslationsAddServerEs addServer = _TranslationsAddServerEs._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsEs extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Mostrar lo que estás viendo en Discord'; @override String get discordRichPresenceDescription => 'Mostrar lo que estás viendo en Discord';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Sincronizar historial de visualización con Trakt'; @override String get traktDescription => 'Sincronizar historial de visualización con Trakt';
@override String get trackers => 'Rastreadores'; @override String get services => 'Servicios';
@override String get trackersDescription => 'Sincronizar progreso con Trakt, MyAnimeList, AniList y Simkl'; @override String get servicesDescription => 'Conecta Trakt, MyAnimeList, Seerr y más';
@override String get companionRemoteServer => 'Servidor de control remoto'; @override String get companionRemoteServer => 'Servidor de control remoto';
@override String get companionRemoteServerDescription => 'Permitir que dispositivos móviles en tu red controlen esta aplicación'; @override String get companionRemoteServerDescription => 'Permitir que dispositivos móviles en tu red controlen esta aplicación';
@override String get autoPip => 'Imagen en imagen automática'; @override String get autoPip => 'Imagen en imagen automática';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetEs extends TranslationsRateSheetEn {
@override String get setScore => 'Establecer puntuación'; @override String get setScore => 'Establecer puntuación';
@override String get saved => 'Guardado'; @override String get saved => 'Guardado';
@override String get notAvailable => 'No se encontró coincidencia'; @override String get notAvailable => 'No se encontró coincidencia';
@override String get noConnectedTrackers => 'Conecta un tracker en Ajustes para calificar allí.'; @override String get noConnectedServices => 'Conecta un servicio en Configuración para calificar ahí.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationEs extends TranslationsNavigationEn {
@override String get libraries => 'Medios'; @override String get libraries => 'Medios';
@override String get downloads => 'Descargas'; @override String get downloads => 'Descargas';
@override String get liveTv => 'TV en vivo'; @override String get liveTv => 'TV en vivo';
@override String get explore => 'Explorar';
}
// Path: explore
class _TranslationsExploreEs extends TranslationsExploreEn {
_TranslationsExploreEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Explorar';
@override String get selectSource => 'Seleccionar fuente';
@override late final _TranslationsExploreRowsEs rows = _TranslationsExploreRowsEs._(_root);
@override late final _TranslationsExploreStatusEs status = _TranslationsExploreStatusEs._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('es'))(n,
one: '${n} episodio',
other: '${n} episodios',
);
@override String get cast => 'Reparto';
@override String get characters => 'Personajes';
@override String get addToWatchlist => 'Añadir a la lista de seguimiento';
@override String get removeFromWatchlist => 'Quitar de la lista de seguimiento';
@override String get watchlistUpdateFailed => 'No se pudo actualizar la lista de seguimiento';
@override String get notInLibrary => 'No está en tu biblioteca';
@override String get inTheseLibraries => 'En estas bibliotecas';
@override String availableOn({required Object server}) => 'Disponible en ${server}';
@override String get checkingLibrary => 'Comprobando tu biblioteca...';
@override String get emptyTitle => 'Aquí no hay nada todavía';
@override String emptyMessage({required Object source}) => 'Las filas de ${source} aparecerán aquí cuando tengan contenido.';
@override String searchHint({required Object source}) => 'Buscar en ${source}';
@override String searchEmpty({required Object query}) => 'Sin resultados para "${query}"';
@override String searchPrompt({required Object source}) => 'Busca películas y series en ${source}.';
@override String get searchFailed => 'La búsqueda falló. Comprueba tu conexión e inténtalo de nuevo.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktEs extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Cuando marques elementos como vistos en Plezy, también se marcarán en Trakt.'; @override String get watchedSyncDescription => 'Cuando marques elementos como vistos en Plezy, también se marcarán en Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersEs extends TranslationsTrackersEn { class _TranslationsSeerrEs extends TranslationsSeerrEn {
_TranslationsTrackersEs._(TranslationsEs root) : this._root = root, super.internal(root); _TranslationsSeerrEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field final TranslationsEs _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Rastreadores'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Sincroniza el progreso de visualización con Trakt y otros servicios.'; @override String get connectTitle => 'Conectar Seerr';
@override String get serverUrl => 'URL del servidor';
@override String get serverUrlHelper => 'La dirección de tu instancia de Seerr';
@override String get checkServer => 'Continuar';
@override String get signInWithJellyfin => 'Iniciar sesión con Jellyfin';
@override String get signInWithEmby => 'Iniciar sesión con Emby';
@override String get signInWithLocal => 'Usar una cuenta local';
@override String get email => 'Correo electrónico';
@override String get noSignInMethods => 'Esta instancia de Seerr no ofrece ningún método de inicio de sesión compatible con Plezy.';
@override String get instance => 'Instancia';
@override String get disconnectConfirm => '¿Desconectar Seerr?';
@override String get disconnectConfirmBody => 'Plezy olvidará esta instancia de Seerr. Reconecta cuando quieras.';
@override String get request => 'Solicitar';
@override String get request4k => 'Solicitar en 4K';
@override String get seasons => 'Temporadas';
@override String get allSeasons => 'Todas las temporadas';
@override String get advancedOptions => 'Avanzado';
@override String get destinationServer => 'Servidor de destino';
@override String get qualityProfile => 'Perfil de calidad';
@override String get rootFolder => 'Carpeta raíz';
@override String get languageProfile => 'Perfil de idioma';
@override String get requestSubmitted => 'Solicitud enviada';
@override String requestFailed({required Object error}) => 'La solicitud falló: ${error}';
@override String get requestsLoadFailed => 'No se pudieron cargar las opciones de solicitud';
@override String get nothingToRequest => 'Todo ya está disponible o solicitado.';
@override String get statusAvailable => 'Disponible';
@override String get statusPartiallyAvailable => 'Parcialmente disponible';
@override String get statusRequested => 'Solicitado';
@override String get statusProcessing => 'Procesando';
}
// Path: services
class _TranslationsServicesEs extends TranslationsServicesEn {
_TranslationsServicesEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Servicios';
@override String get hubSubtitle => 'Sincroniza tu progreso de visualización y solicita nuevos títulos.';
@override String get notConnected => 'No conectado'; @override String get notConnected => 'No conectado';
@override String connectedAs({required Object username}) => 'Conectado como @${username}'; @override String connectedAs({required Object username}) => 'Conectado como @${username}';
@override String get scrobble => 'Registrar progreso automáticamente'; @override String get scrobble => 'Registrar progreso automáticamente';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersEs extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => '¿Desconectar ${service}?'; @override String disconnectConfirm({required Object service}) => '¿Desconectar ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy dejará de actualizar ${service}. Reconecta cuando quieras.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy dejará de actualizar ${service}. Reconecta cuando quieras.';
@override String connectFailed({required Object service}) => 'No se pudo conectar a ${service}. Inténtalo de nuevo.'; @override String connectFailed({required Object service}) => 'No se pudo conectar a ${service}. Inténtalo de nuevo.';
@override late final _TranslationsTrackersServicesEs services = _TranslationsTrackersServicesEs._(_root); @override late final _TranslationsServicesNamesEs names = _TranslationsServicesNamesEs._(_root);
@override late final _TranslationsTrackersDeviceCodeEs deviceCode = _TranslationsTrackersDeviceCodeEs._(_root); @override late final _TranslationsServicesDeviceCodeEs deviceCode = _TranslationsServicesDeviceCodeEs._(_root);
@override late final _TranslationsTrackersOauthProxyEs oauthProxy = _TranslationsTrackersOauthProxyEs._(_root); @override late final _TranslationsServicesOauthProxyEs oauthProxy = _TranslationsServicesOauthProxyEs._(_root);
@override late final _TranslationsTrackersLibraryFilterEs libraryFilter = _TranslationsTrackersLibraryFilterEs._(_root); @override late final _TranslationsServicesLibraryFilterEs libraryFilter = _TranslationsServicesLibraryFilterEs._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsEs extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Fecha de adición del último episodio'; @override String get lastEpisodeDateAdded => 'Fecha de adición del último episodio';
} }
// Path: explore.rows
class _TranslationsExploreRowsEs extends TranslationsExploreRowsEn {
_TranslationsExploreRowsEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Lista de seguimiento';
@override String get recommendedMovies => 'Películas recomendadas';
@override String get recommendedShows => 'Series recomendadas';
@override String get trendingMovies => 'Películas en tendencia';
@override String get trendingShows => 'Series en tendencia';
@override String get popularMovies => 'Películas populares';
@override String get popularShows => 'Series populares';
@override String get suggestedAnime => 'Anime sugerido';
@override String get airingAnime => 'Mejor anime en emisión';
@override String get popularAnime => 'Anime más popular';
@override String get trending => 'Tendencias';
@override String get upcomingMovies => 'Próximas películas';
@override String get upcomingShows => 'Próximas series';
}
// Path: explore.status
class _TranslationsExploreStatusEs extends TranslationsExploreStatusEn {
_TranslationsExploreStatusEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get airing => 'En emisión';
@override String get ended => 'Finalizada';
@override String get canceled => 'Cancelada';
@override String get upcoming => 'Próximamente';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionEs extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionEs extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionEs._(TranslationsEs root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionEs._(TranslationsEs root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsEs extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Conexión perdida'; @override String get connectionLost => 'Conexión perdida';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesEs extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesEs extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesEs._(TranslationsEs root) : this._root = root, super.internal(root); _TranslationsServicesNamesEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field final TranslationsEs _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesEs extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeEs extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeEs extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeEs._(TranslationsEs root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field final TranslationsEs _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeEs extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Código copiado'; @override String get codeCopied => 'Código copiado';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyEs extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyEs extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyEs._(TranslationsEs root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field final TranslationsEs _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyEs extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL copiada'; @override String get urlCopied => 'URL copiada';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterEs extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterEs extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterEs._(TranslationsEs root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterEs._(TranslationsEs root) : this._root = root, super.internal(root);
final TranslationsEs _root; // ignore: unused_field final TranslationsEs _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsEs {
'settings.discordRichPresenceDescription' => 'Mostrar lo que estás viendo en Discord', 'settings.discordRichPresenceDescription' => 'Mostrar lo que estás viendo en Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Sincronizar historial de visualización con Trakt', 'settings.traktDescription' => 'Sincronizar historial de visualización con Trakt',
'settings.trackers' => 'Rastreadores', 'settings.services' => 'Servicios',
'settings.trackersDescription' => 'Sincronizar progreso con Trakt, MyAnimeList, AniList y Simkl', 'settings.servicesDescription' => 'Conecta Trakt, MyAnimeList, Seerr y más',
'settings.companionRemoteServer' => 'Servidor de control remoto', 'settings.companionRemoteServer' => 'Servidor de control remoto',
'settings.companionRemoteServerDescription' => 'Permitir que dispositivos móviles en tu red controlen esta aplicación', 'settings.companionRemoteServerDescription' => 'Permitir que dispositivos móviles en tu red controlen esta aplicación',
'settings.autoPip' => 'Imagen en imagen automática', 'settings.autoPip' => 'Imagen en imagen automática',
@@ -2390,7 +2500,7 @@ extension on TranslationsEs {
'rateSheet.setScore' => 'Establecer puntuación', 'rateSheet.setScore' => 'Establecer puntuación',
'rateSheet.saved' => 'Guardado', 'rateSheet.saved' => 'Guardado',
'rateSheet.notAvailable' => 'No se encontró coincidencia', 'rateSheet.notAvailable' => 'No se encontró coincidencia',
'rateSheet.noConnectedTrackers' => 'Conecta un tracker en Ajustes para calificar allí.', 'rateSheet.noConnectedServices' => 'Conecta un servicio en Configuración para calificar ahí.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, película', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, película',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, serie de TV', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, serie de TV',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsEs {
'navigation.libraries' => 'Medios', 'navigation.libraries' => 'Medios',
'navigation.downloads' => 'Descargas', 'navigation.downloads' => 'Descargas',
'navigation.liveTv' => 'TV en vivo', 'navigation.liveTv' => 'TV en vivo',
'navigation.explore' => 'Explorar',
'explore.title' => 'Explorar',
'explore.selectSource' => 'Seleccionar fuente',
'explore.rows.watchlist' => 'Lista de seguimiento',
'explore.rows.recommendedMovies' => 'Películas recomendadas',
'explore.rows.recommendedShows' => 'Series recomendadas',
'explore.rows.trendingMovies' => 'Películas en tendencia',
'explore.rows.trendingShows' => 'Series en tendencia',
'explore.rows.popularMovies' => 'Películas populares',
'explore.rows.popularShows' => 'Series populares',
'explore.rows.suggestedAnime' => 'Anime sugerido',
'explore.rows.airingAnime' => 'Mejor anime en emisión',
'explore.rows.popularAnime' => 'Anime más popular',
'explore.rows.trending' => 'Tendencias',
'explore.rows.upcomingMovies' => 'Próximas películas',
'explore.rows.upcomingShows' => 'Próximas series',
'explore.status.airing' => 'En emisión',
'explore.status.ended' => 'Finalizada',
'explore.status.canceled' => 'Cancelada',
'explore.status.upcoming' => 'Próximamente',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('es'))(n, one: '${n} episodio', other: '${n} episodios', ),
'explore.cast' => 'Reparto',
'explore.characters' => 'Personajes',
'explore.addToWatchlist' => 'Añadir a la lista de seguimiento',
'explore.removeFromWatchlist' => 'Quitar de la lista de seguimiento',
'explore.watchlistUpdateFailed' => 'No se pudo actualizar la lista de seguimiento',
'explore.notInLibrary' => 'No está en tu biblioteca',
'explore.inTheseLibraries' => 'En estas bibliotecas',
'explore.availableOn' => ({required Object server}) => 'Disponible en ${server}',
'explore.checkingLibrary' => 'Comprobando tu biblioteca...',
'explore.emptyTitle' => 'Aquí no hay nada todavía',
'explore.emptyMessage' => ({required Object source}) => 'Las filas de ${source} aparecerán aquí cuando tengan contenido.',
'explore.searchHint' => ({required Object source}) => 'Buscar en ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Sin resultados para "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Busca películas y series en ${source}.',
'explore.searchFailed' => 'La búsqueda falló. Comprueba tu conexión e inténtalo de nuevo.',
'liveTv.title' => 'TV en vivo', 'liveTv.title' => 'TV en vivo',
'liveTv.guide' => 'Guía', 'liveTv.guide' => 'Guía',
'liveTv.noChannels' => 'No hay canales disponibles', 'liveTv.noChannels' => 'No hay canales disponibles',
@@ -2986,6 +3132,8 @@ extension on TranslationsEs {
'downloads.cancelledDownloadMessage' => 'Esta descarga se canceló. ¿Qué quieres hacer?', 'downloads.cancelledDownloadMessage' => 'Esta descarga se canceló. ¿Qué quieres hacer?',
'downloads.allEpisodesAlreadyDownloaded' => 'Todos los episodios ya están descargados', 'downloads.allEpisodesAlreadyDownloaded' => 'Todos los episodios ya están descargados',
'downloads.resumeDownload' => 'Reanudar descarga', 'downloads.resumeDownload' => 'Reanudar descarga',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Descarga cancelada', 'downloads.cancelledDownload' => 'Descarga cancelada',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (sincronizando ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (sincronizando ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} descargado — haz clic para completar', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} descargado — haz clic para completar',
@@ -3022,8 +3170,6 @@ extension on TranslationsEs {
'downloads.noSyncRules' => 'Sin reglas de sincronización', 'downloads.noSyncRules' => 'Sin reglas de sincronización',
'downloads.manageSyncRule' => 'Gestionar sincronización', 'downloads.manageSyncRule' => 'Gestionar sincronización',
'downloads.editEpisodeCount' => 'Número de episodios', 'downloads.editEpisodeCount' => 'Número de episodios',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Filtro de sincronización', 'downloads.editSyncFilter' => 'Filtro de sincronización',
'downloads.syncAllItems' => 'Sincronizando todos los elementos', 'downloads.syncAllItems' => 'Sincronizando todos los elementos',
'downloads.syncUnwatchedItems' => 'Sincronizando elementos no vistos', 'downloads.syncUnwatchedItems' => 'Sincronizando elementos no vistos',
@@ -3272,39 +3418,70 @@ extension on TranslationsEs {
'trakt.scrobbleDescription' => 'Enviar eventos de reproducción, pausa y parada a Trakt durante la reproducción.', 'trakt.scrobbleDescription' => 'Enviar eventos de reproducción, pausa y parada a Trakt durante la reproducción.',
'trakt.watchedSync' => 'Sincronizar estado de visto', 'trakt.watchedSync' => 'Sincronizar estado de visto',
'trakt.watchedSyncDescription' => 'Cuando marques elementos como vistos en Plezy, también se marcarán en Trakt.', 'trakt.watchedSyncDescription' => 'Cuando marques elementos como vistos en Plezy, también se marcarán en Trakt.',
'trackers.title' => 'Rastreadores', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Sincroniza el progreso de visualización con Trakt y otros servicios.', 'seerr.connectTitle' => 'Conectar Seerr',
'trackers.notConnected' => 'No conectado', 'seerr.serverUrl' => 'URL del servidor',
'trackers.connectedAs' => ({required Object username}) => 'Conectado como @${username}', 'seerr.serverUrlHelper' => 'La dirección de tu instancia de Seerr',
'trackers.scrobble' => 'Registrar progreso automáticamente', 'seerr.checkServer' => 'Continuar',
'trackers.scrobbleDescription' => 'Actualiza tu lista cuando termines un episodio o película.', 'seerr.signInWithJellyfin' => 'Iniciar sesión con Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => '¿Desconectar ${service}?', 'seerr.signInWithEmby' => 'Iniciar sesión con Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy dejará de actualizar ${service}. Reconecta cuando quieras.', 'seerr.signInWithLocal' => 'Usar una cuenta local',
'trackers.connectFailed' => ({required Object service}) => 'No se pudo conectar a ${service}. Inténtalo de nuevo.', 'seerr.email' => 'Correo electrónico',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Esta instancia de Seerr no ofrece ningún método de inicio de sesión compatible con Plezy.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instancia',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => '¿Desconectar Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Activar Plezy en ${service}', 'seerr.disconnectConfirmBody' => 'Plezy olvidará esta instancia de Seerr. Reconecta cuando quieras.',
'trackers.deviceCode.body' => ({required Object url}) => 'Visita ${url} e introduce este código:', 'seerr.request' => 'Solicitar',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Abrir ${service} para activar', 'seerr.request4k' => 'Solicitar en 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Esperando autorización…', 'seerr.seasons' => 'Temporadas',
'trackers.deviceCode.codeCopied' => 'Código copiado', 'seerr.allSeasons' => 'Todas las temporadas',
'trackers.oauthProxy.title' => ({required Object service}) => 'Inicia sesión en ${service}', 'seerr.advancedOptions' => 'Avanzado',
'trackers.oauthProxy.body' => 'Escanea este código QR o abre la URL en cualquier dispositivo.', 'seerr.destinationServer' => 'Servidor de destino',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Abrir ${service} para iniciar sesión', 'seerr.qualityProfile' => 'Perfil de calidad',
'trackers.oauthProxy.urlCopied' => 'URL copiada', 'seerr.rootFolder' => 'Carpeta raíz',
'trackers.libraryFilter.title' => 'Filtro de bibliotecas', 'seerr.languageProfile' => 'Perfil de idioma',
'trackers.libraryFilter.subtitleAllSyncing' => 'Sincronizando todas las bibliotecas', 'seerr.requestSubmitted' => 'Solicitud enviada',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Nada se sincroniza', 'seerr.requestFailed' => ({required Object error}) => 'La solicitud falló: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} bloqueadas', 'seerr.requestsLoadFailed' => 'No se pudieron cargar las opciones de solicitud',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} permitidas', 'seerr.nothingToRequest' => 'Todo ya está disponible o solicitado.',
'trackers.libraryFilter.mode' => 'Modo de filtro', 'seerr.statusAvailable' => 'Disponible',
'trackers.libraryFilter.modeBlacklist' => 'Lista negra', 'seerr.statusPartiallyAvailable' => 'Parcialmente disponible',
'trackers.libraryFilter.modeWhitelist' => 'Lista blanca', 'seerr.statusRequested' => 'Solicitado',
'trackers.libraryFilter.modeHintBlacklist' => 'Sincronizar todas las bibliotecas excepto las marcadas abajo.', 'seerr.statusProcessing' => 'Procesando',
'trackers.libraryFilter.modeHintWhitelist' => 'Sincronizar solo las bibliotecas marcadas abajo.', 'services.title' => 'Servicios',
'trackers.libraryFilter.libraries' => 'Bibliotecas', 'services.hubSubtitle' => 'Sincroniza tu progreso de visualización y solicita nuevos títulos.',
'trackers.libraryFilter.noLibraries' => 'No hay bibliotecas disponibles', 'services.notConnected' => 'No conectado',
'services.connectedAs' => ({required Object username}) => 'Conectado como @${username}',
'services.scrobble' => 'Registrar progreso automáticamente',
'services.scrobbleDescription' => 'Actualiza tu lista cuando termines un episodio o película.',
'services.disconnectConfirm' => ({required Object service}) => '¿Desconectar ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy dejará de actualizar ${service}. Reconecta cuando quieras.',
'services.connectFailed' => ({required Object service}) => 'No se pudo conectar a ${service}. Inténtalo de nuevo.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Activar Plezy en ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Visita ${url} e introduce este código:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Abrir ${service} para activar',
'services.deviceCode.waitingForAuthorization' => 'Esperando autorización…',
'services.deviceCode.codeCopied' => 'Código copiado',
'services.oauthProxy.title' => ({required Object service}) => 'Inicia sesión en ${service}',
'services.oauthProxy.body' => 'Escanea este código QR o abre la URL en cualquier dispositivo.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Abrir ${service} para iniciar sesión',
'services.oauthProxy.urlCopied' => 'URL copiada',
'services.libraryFilter.title' => 'Filtro de bibliotecas',
'services.libraryFilter.subtitleAllSyncing' => 'Sincronizando todas las bibliotecas',
'services.libraryFilter.subtitleNoneSyncing' => 'Nada se sincroniza',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} bloqueadas',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} permitidas',
'services.libraryFilter.mode' => 'Modo de filtro',
'services.libraryFilter.modeBlacklist' => 'Lista negra',
'services.libraryFilter.modeWhitelist' => 'Lista blanca',
'services.libraryFilter.modeHintBlacklist' => 'Sincronizar todas las bibliotecas excepto las marcadas abajo.',
'services.libraryFilter.modeHintWhitelist' => 'Sincronizar solo las bibliotecas marcadas abajo.',
'services.libraryFilter.libraries' => 'Bibliotecas',
'services.libraryFilter.noLibraries' => 'No hay bibliotecas disponibles',
'addServer.addJellyfinTitle' => 'Añadir servidor Jellyfin', 'addServer.addJellyfinTitle' => 'Añadir servidor Jellyfin',
'addServer.serverUrls' => 'URL del servidor', 'addServer.serverUrls' => 'URL del servidor',
'addServer.serverUrlsHelper' => 'Se permiten varias URL, separadas por comas.', 'addServer.serverUrlsHelper' => 'Se permiten varias URL, separadas por comas.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsFr extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsFr logs = _TranslationsLogsFr._(_root); @override late final _TranslationsLogsFr logs = _TranslationsLogsFr._(_root);
@override late final _TranslationsLicensesFr licenses = _TranslationsLicensesFr._(_root); @override late final _TranslationsLicensesFr licenses = _TranslationsLicensesFr._(_root);
@override late final _TranslationsNavigationFr navigation = _TranslationsNavigationFr._(_root); @override late final _TranslationsNavigationFr navigation = _TranslationsNavigationFr._(_root);
@override late final _TranslationsExploreFr explore = _TranslationsExploreFr._(_root);
@override late final _TranslationsLiveTvFr liveTv = _TranslationsLiveTvFr._(_root); @override late final _TranslationsLiveTvFr liveTv = _TranslationsLiveTvFr._(_root);
@override late final _TranslationsCollectionsFr collections = _TranslationsCollectionsFr._(_root); @override late final _TranslationsCollectionsFr collections = _TranslationsCollectionsFr._(_root);
@override late final _TranslationsPlaylistsFr playlists = _TranslationsPlaylistsFr._(_root); @override late final _TranslationsPlaylistsFr playlists = _TranslationsPlaylistsFr._(_root);
@@ -84,7 +85,8 @@ class TranslationsFr extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenFr matchScreen = _TranslationsMatchScreenFr._(_root); @override late final _TranslationsMatchScreenFr matchScreen = _TranslationsMatchScreenFr._(_root);
@override late final _TranslationsServerTasksFr serverTasks = _TranslationsServerTasksFr._(_root); @override late final _TranslationsServerTasksFr serverTasks = _TranslationsServerTasksFr._(_root);
@override late final _TranslationsTraktFr trakt = _TranslationsTraktFr._(_root); @override late final _TranslationsTraktFr trakt = _TranslationsTraktFr._(_root);
@override late final _TranslationsTrackersFr trackers = _TranslationsTrackersFr._(_root); @override late final _TranslationsSeerrFr seerr = _TranslationsSeerrFr._(_root);
@override late final _TranslationsServicesFr services = _TranslationsServicesFr._(_root);
@override late final _TranslationsAddServerFr addServer = _TranslationsAddServerFr._(_root); @override late final _TranslationsAddServerFr addServer = _TranslationsAddServerFr._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsFr extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Montrez ce que vous regardez sur Discord'; @override String get discordRichPresenceDescription => 'Montrez ce que vous regardez sur Discord';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Synchroniser l\'historique de visionnage avec Trakt'; @override String get traktDescription => 'Synchroniser l\'historique de visionnage avec Trakt';
@override String get trackers => 'Trackers'; @override String get services => 'Services';
@override String get trackersDescription => 'Synchroniser la progression avec Trakt, MyAnimeList, AniList et Simkl'; @override String get servicesDescription => 'Connectez Trakt, MyAnimeList, Seerr et plus';
@override String get companionRemoteServer => 'Serveur de télécommande'; @override String get companionRemoteServer => 'Serveur de télécommande';
@override String get companionRemoteServerDescription => 'Autoriser les appareils mobiles de votre réseau à contrôler cette application'; @override String get companionRemoteServerDescription => 'Autoriser les appareils mobiles de votre réseau à contrôler cette application';
@override String get autoPip => 'Image dans l\'image automatique'; @override String get autoPip => 'Image dans l\'image automatique';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetFr extends TranslationsRateSheetEn {
@override String get setScore => 'Définir une note'; @override String get setScore => 'Définir une note';
@override String get saved => 'Enregistré'; @override String get saved => 'Enregistré';
@override String get notAvailable => 'Aucune correspondance trouvée'; @override String get notAvailable => 'Aucune correspondance trouvée';
@override String get noConnectedTrackers => 'Connectez un tracker dans Paramètres pour y noter.'; @override String get noConnectedServices => 'Connectez un service dans les Réglages pour noter ici.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationFr extends TranslationsNavigationEn {
@override String get libraries => 'Medias'; @override String get libraries => 'Medias';
@override String get downloads => 'Téléch.'; @override String get downloads => 'Téléch.';
@override String get liveTv => 'TV direct'; @override String get liveTv => 'TV direct';
@override String get explore => 'Explorer';
}
// Path: explore
class _TranslationsExploreFr extends TranslationsExploreEn {
_TranslationsExploreFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get title => 'Explorer';
@override String get selectSource => 'Sélectionner la source';
@override late final _TranslationsExploreRowsFr rows = _TranslationsExploreRowsFr._(_root);
@override late final _TranslationsExploreStatusFr status = _TranslationsExploreStatusFr._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fr'))(n,
one: '${n} épisode',
other: '${n} épisodes',
);
@override String get cast => 'Cast';
@override String get characters => 'Personnages';
@override String get addToWatchlist => 'Ajouter à la liste de suivi';
@override String get removeFromWatchlist => 'Retirer de la liste de suivi';
@override String get watchlistUpdateFailed => 'Impossible de mettre à jour la liste de suivi';
@override String get notInLibrary => 'Absent de votre bibliothèque';
@override String get inTheseLibraries => 'Dans ces bibliothèques';
@override String availableOn({required Object server}) => 'Disponible sur ${server}';
@override String get checkingLibrary => 'Vérification de votre bibliothèque...';
@override String get emptyTitle => 'Rien ici pour l\'instant';
@override String emptyMessage({required Object source}) => 'Les rangées de ${source} apparaîtront ici une fois qu\'elles auront du contenu.';
@override String searchHint({required Object source}) => 'Rechercher dans ${source}';
@override String searchEmpty({required Object query}) => 'Aucun résultat pour "${query}"';
@override String searchPrompt({required Object source}) => 'Recherchez des films et des séries sur ${source}.';
@override String get searchFailed => 'Échec de la recherche. Vérifiez votre connexion et réessayez.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktFr extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Lorsque vous marquez un élément comme vu dans Plezy, il l\'est aussi sur Trakt.'; @override String get watchedSyncDescription => 'Lorsque vous marquez un élément comme vu dans Plezy, il l\'est aussi sur Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersFr extends TranslationsTrackersEn { class _TranslationsSeerrFr extends TranslationsSeerrEn {
_TranslationsTrackersFr._(TranslationsFr root) : this._root = root, super.internal(root); _TranslationsSeerrFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field final TranslationsFr _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Trackers'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Synchronisez la progression de visionnage avec Trakt et d\'autres services.'; @override String get connectTitle => 'Connecter Seerr';
@override String get serverUrl => 'URL du serveur';
@override String get serverUrlHelper => 'L\'adresse de votre instance Seerr';
@override String get checkServer => 'Continuer';
@override String get signInWithJellyfin => 'Se connecter avec Jellyfin';
@override String get signInWithEmby => 'Se connecter avec Emby';
@override String get signInWithLocal => 'Utiliser un compte local';
@override String get email => 'E-mail';
@override String get noSignInMethods => 'Cette instance Seerr ne propose aucune méthode de connexion prise en charge par Plezy.';
@override String get instance => 'Instance';
@override String get disconnectConfirm => 'Déconnecter Seerr ?';
@override String get disconnectConfirmBody => 'Plezy oubliera cette instance Seerr. Reconnectez à tout moment.';
@override String get request => 'Demander';
@override String get request4k => 'Demander en 4K';
@override String get seasons => 'Saisons';
@override String get allSeasons => 'Toutes les saisons';
@override String get advancedOptions => 'Avancé';
@override String get destinationServer => 'Serveur de destination';
@override String get qualityProfile => 'Profil de qualité';
@override String get rootFolder => 'Dossier racine';
@override String get languageProfile => 'Profil de langue';
@override String get requestSubmitted => 'Demande envoyée';
@override String requestFailed({required Object error}) => 'Échec de la demande : ${error}';
@override String get requestsLoadFailed => 'Impossible de charger les options de demande';
@override String get nothingToRequest => 'Tout est déjà disponible ou demandé.';
@override String get statusAvailable => 'Disponible';
@override String get statusPartiallyAvailable => 'Partiellement disponible';
@override String get statusRequested => 'Demandé';
@override String get statusProcessing => 'En cours de traitement';
}
// Path: services
class _TranslationsServicesFr extends TranslationsServicesEn {
_TranslationsServicesFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get title => 'Services';
@override String get hubSubtitle => 'Synchronisez votre progression et demandez de nouveaux titres.';
@override String get notConnected => 'Non connecté'; @override String get notConnected => 'Non connecté';
@override String connectedAs({required Object username}) => 'Connecté en tant que @${username}'; @override String connectedAs({required Object username}) => 'Connecté en tant que @${username}';
@override String get scrobble => 'Suivre la progression automatiquement'; @override String get scrobble => 'Suivre la progression automatiquement';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersFr extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Déconnecter ${service} ?'; @override String disconnectConfirm({required Object service}) => 'Déconnecter ${service} ?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy cessera de mettre à jour ${service}. Reconnectez à tout moment.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy cessera de mettre à jour ${service}. Reconnectez à tout moment.';
@override String connectFailed({required Object service}) => 'Échec de la connexion à ${service}. Réessayez.'; @override String connectFailed({required Object service}) => 'Échec de la connexion à ${service}. Réessayez.';
@override late final _TranslationsTrackersServicesFr services = _TranslationsTrackersServicesFr._(_root); @override late final _TranslationsServicesNamesFr names = _TranslationsServicesNamesFr._(_root);
@override late final _TranslationsTrackersDeviceCodeFr deviceCode = _TranslationsTrackersDeviceCodeFr._(_root); @override late final _TranslationsServicesDeviceCodeFr deviceCode = _TranslationsServicesDeviceCodeFr._(_root);
@override late final _TranslationsTrackersOauthProxyFr oauthProxy = _TranslationsTrackersOauthProxyFr._(_root); @override late final _TranslationsServicesOauthProxyFr oauthProxy = _TranslationsServicesOauthProxyFr._(_root);
@override late final _TranslationsTrackersLibraryFilterFr libraryFilter = _TranslationsTrackersLibraryFilterFr._(_root); @override late final _TranslationsServicesLibraryFilterFr libraryFilter = _TranslationsServicesLibraryFilterFr._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsFr extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Date d\'ajout du dernier épisode'; @override String get lastEpisodeDateAdded => 'Date d\'ajout du dernier épisode';
} }
// Path: explore.rows
class _TranslationsExploreRowsFr extends TranslationsExploreRowsEn {
_TranslationsExploreRowsFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Liste de suivi';
@override String get recommendedMovies => 'Films recommandés';
@override String get recommendedShows => 'Show TV recommandés';
@override String get trendingMovies => 'Films tendance';
@override String get trendingShows => 'Show TV tendance';
@override String get popularMovies => 'Films populaires';
@override String get popularShows => 'Show TV populaires';
@override String get suggestedAnime => 'Anime suggérés';
@override String get airingAnime => 'Meilleurs anime en diffusion';
@override String get popularAnime => 'Anime les plus populaires';
@override String get trending => 'Tendances';
@override String get upcomingMovies => 'Films à venir';
@override String get upcomingShows => 'Show TV à venir';
}
// Path: explore.status
class _TranslationsExploreStatusFr extends TranslationsExploreStatusEn {
_TranslationsExploreStatusFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field
// Translations
@override String get airing => 'En cours';
@override String get ended => 'Terminée';
@override String get canceled => 'Annulée';
@override String get upcoming => 'À venir';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionFr extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionFr extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionFr._(TranslationsFr root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionFr._(TranslationsFr root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsFr extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Connexion perdue'; @override String get connectionLost => 'Connexion perdue';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesFr extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesFr extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesFr._(TranslationsFr root) : this._root = root, super.internal(root); _TranslationsServicesNamesFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field final TranslationsFr _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesFr extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeFr extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeFr extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeFr._(TranslationsFr root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field final TranslationsFr _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeFr extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Code copié'; @override String get codeCopied => 'Code copié';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyFr extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyFr extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyFr._(TranslationsFr root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field final TranslationsFr _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyFr extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL copiée'; @override String get urlCopied => 'URL copiée';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterFr extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterFr extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterFr._(TranslationsFr root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterFr._(TranslationsFr root) : this._root = root, super.internal(root);
final TranslationsFr _root; // ignore: unused_field final TranslationsFr _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsFr {
'settings.discordRichPresenceDescription' => 'Montrez ce que vous regardez sur Discord', 'settings.discordRichPresenceDescription' => 'Montrez ce que vous regardez sur Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Synchroniser l\'historique de visionnage avec Trakt', 'settings.traktDescription' => 'Synchroniser l\'historique de visionnage avec Trakt',
'settings.trackers' => 'Trackers', 'settings.services' => 'Services',
'settings.trackersDescription' => 'Synchroniser la progression avec Trakt, MyAnimeList, AniList et Simkl', 'settings.servicesDescription' => 'Connectez Trakt, MyAnimeList, Seerr et plus',
'settings.companionRemoteServer' => 'Serveur de télécommande', 'settings.companionRemoteServer' => 'Serveur de télécommande',
'settings.companionRemoteServerDescription' => 'Autoriser les appareils mobiles de votre réseau à contrôler cette application', 'settings.companionRemoteServerDescription' => 'Autoriser les appareils mobiles de votre réseau à contrôler cette application',
'settings.autoPip' => 'Image dans l\'image automatique', 'settings.autoPip' => 'Image dans l\'image automatique',
@@ -2390,7 +2500,7 @@ extension on TranslationsFr {
'rateSheet.setScore' => 'Définir une note', 'rateSheet.setScore' => 'Définir une note',
'rateSheet.saved' => 'Enregistré', 'rateSheet.saved' => 'Enregistré',
'rateSheet.notAvailable' => 'Aucune correspondance trouvée', 'rateSheet.notAvailable' => 'Aucune correspondance trouvée',
'rateSheet.noConnectedTrackers' => 'Connectez un tracker dans Paramètres pour y noter.', 'rateSheet.noConnectedServices' => 'Connectez un service dans les Réglages pour noter ici.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, show TV', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, show TV',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsFr {
'navigation.libraries' => 'Medias', 'navigation.libraries' => 'Medias',
'navigation.downloads' => 'Téléch.', 'navigation.downloads' => 'Téléch.',
'navigation.liveTv' => 'TV direct', 'navigation.liveTv' => 'TV direct',
'navigation.explore' => 'Explorer',
'explore.title' => 'Explorer',
'explore.selectSource' => 'Sélectionner la source',
'explore.rows.watchlist' => 'Liste de suivi',
'explore.rows.recommendedMovies' => 'Films recommandés',
'explore.rows.recommendedShows' => 'Show TV recommandés',
'explore.rows.trendingMovies' => 'Films tendance',
'explore.rows.trendingShows' => 'Show TV tendance',
'explore.rows.popularMovies' => 'Films populaires',
'explore.rows.popularShows' => 'Show TV populaires',
'explore.rows.suggestedAnime' => 'Anime suggérés',
'explore.rows.airingAnime' => 'Meilleurs anime en diffusion',
'explore.rows.popularAnime' => 'Anime les plus populaires',
'explore.rows.trending' => 'Tendances',
'explore.rows.upcomingMovies' => 'Films à venir',
'explore.rows.upcomingShows' => 'Show TV à venir',
'explore.status.airing' => 'En cours',
'explore.status.ended' => 'Terminée',
'explore.status.canceled' => 'Annulée',
'explore.status.upcoming' => 'À venir',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('fr'))(n, one: '${n} épisode', other: '${n} épisodes', ),
'explore.cast' => 'Cast',
'explore.characters' => 'Personnages',
'explore.addToWatchlist' => 'Ajouter à la liste de suivi',
'explore.removeFromWatchlist' => 'Retirer de la liste de suivi',
'explore.watchlistUpdateFailed' => 'Impossible de mettre à jour la liste de suivi',
'explore.notInLibrary' => 'Absent de votre bibliothèque',
'explore.inTheseLibraries' => 'Dans ces bibliothèques',
'explore.availableOn' => ({required Object server}) => 'Disponible sur ${server}',
'explore.checkingLibrary' => 'Vérification de votre bibliothèque...',
'explore.emptyTitle' => 'Rien ici pour l\'instant',
'explore.emptyMessage' => ({required Object source}) => 'Les rangées de ${source} apparaîtront ici une fois qu\'elles auront du contenu.',
'explore.searchHint' => ({required Object source}) => 'Rechercher dans ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Aucun résultat pour "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Recherchez des films et des séries sur ${source}.',
'explore.searchFailed' => 'Échec de la recherche. Vérifiez votre connexion et réessayez.',
'liveTv.title' => 'TV en direct', 'liveTv.title' => 'TV en direct',
'liveTv.guide' => 'Guide', 'liveTv.guide' => 'Guide',
'liveTv.noChannels' => 'Aucune chaîne disponible', 'liveTv.noChannels' => 'Aucune chaîne disponible',
@@ -2986,6 +3132,8 @@ extension on TranslationsFr {
'downloads.cancelledDownloadMessage' => 'Ce téléchargement a été annulé. Que voulez-vous faire ?', 'downloads.cancelledDownloadMessage' => 'Ce téléchargement a été annulé. Que voulez-vous faire ?',
'downloads.allEpisodesAlreadyDownloaded' => 'Tous les épisodes sont déjà téléchargés', 'downloads.allEpisodesAlreadyDownloaded' => 'Tous les épisodes sont déjà téléchargés',
'downloads.resumeDownload' => 'Reprendre le téléchargement', 'downloads.resumeDownload' => 'Reprendre le téléchargement',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Téléchargement annulé', 'downloads.cancelledDownload' => 'Téléchargement annulé',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synchronisation ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synchronisation ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} téléchargé — cliquez pour terminer', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} téléchargé — cliquez pour terminer',
@@ -3022,8 +3170,6 @@ extension on TranslationsFr {
'downloads.noSyncRules' => 'Aucune règle de synchronisation', 'downloads.noSyncRules' => 'Aucune règle de synchronisation',
'downloads.manageSyncRule' => 'Gérer la synchronisation', 'downloads.manageSyncRule' => 'Gérer la synchronisation',
'downloads.editEpisodeCount' => 'Nombre d’épisodes', 'downloads.editEpisodeCount' => 'Nombre d’épisodes',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Filtre de synchronisation', 'downloads.editSyncFilter' => 'Filtre de synchronisation',
'downloads.syncAllItems' => 'Synchronisation de tous les éléments', 'downloads.syncAllItems' => 'Synchronisation de tous les éléments',
'downloads.syncUnwatchedItems' => 'Synchronisation des éléments non vus', 'downloads.syncUnwatchedItems' => 'Synchronisation des éléments non vus',
@@ -3272,39 +3418,70 @@ extension on TranslationsFr {
'trakt.scrobbleDescription' => 'Envoyer les événements de lecture, pause et arrêt à Trakt pendant la lecture.', 'trakt.scrobbleDescription' => 'Envoyer les événements de lecture, pause et arrêt à Trakt pendant la lecture.',
'trakt.watchedSync' => 'Synchroniser le statut « vu »', 'trakt.watchedSync' => 'Synchroniser le statut « vu »',
'trakt.watchedSyncDescription' => 'Lorsque vous marquez un élément comme vu dans Plezy, il l\'est aussi sur Trakt.', 'trakt.watchedSyncDescription' => 'Lorsque vous marquez un élément comme vu dans Plezy, il l\'est aussi sur Trakt.',
'trackers.title' => 'Trackers', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Synchronisez la progression de visionnage avec Trakt et d\'autres services.', 'seerr.connectTitle' => 'Connecter Seerr',
'trackers.notConnected' => 'Non connecté', 'seerr.serverUrl' => 'URL du serveur',
'trackers.connectedAs' => ({required Object username}) => 'Connecté en tant que @${username}', 'seerr.serverUrlHelper' => 'L\'adresse de votre instance Seerr',
'trackers.scrobble' => 'Suivre la progression automatiquement', 'seerr.checkServer' => 'Continuer',
'trackers.scrobbleDescription' => 'Mettre à jour votre liste lorsque vous terminez un épisode ou un film.', 'seerr.signInWithJellyfin' => 'Se connecter avec Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'connecter ${service} ?', 'seerr.signInWithEmby' => 'Se connecter avec Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy cessera de mettre à jour ${service}. Reconnectez à tout moment.', 'seerr.signInWithLocal' => 'Utiliser un compte local',
'trackers.connectFailed' => ({required Object service}) => 'Échec de la connexion à ${service}. Réessayez.', 'seerr.email' => 'E-mail',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Cette instance Seerr ne propose aucune méthode de connexion prise en charge par Plezy.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instance',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Déconnecter Seerr ?',
'trackers.deviceCode.title' => ({required Object service}) => 'Activer Plezy sur ${service}', 'seerr.disconnectConfirmBody' => 'Plezy oubliera cette instance Seerr. Reconnectez à tout moment.',
'trackers.deviceCode.body' => ({required Object url}) => 'Rendez-vous sur ${url} et entrez ce code :', 'seerr.request' => 'Demander',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Ouvrir ${service} pour activer', 'seerr.request4k' => 'Demander en 4K',
'trackers.deviceCode.waitingForAuthorization' => 'En attente d\'autorisation…', 'seerr.seasons' => 'Saisons',
'trackers.deviceCode.codeCopied' => 'Code copié', 'seerr.allSeasons' => 'Toutes les saisons',
'trackers.oauthProxy.title' => ({required Object service}) => 'Se connecter à ${service}', 'seerr.advancedOptions' => 'Avancé',
'trackers.oauthProxy.body' => 'Scannez ce code QR ou ouvrez l\'URL sur n\'importe quel appareil.', 'seerr.destinationServer' => 'Serveur de destination',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Ouvrir ${service} pour se connecter', 'seerr.qualityProfile' => 'Profil de qualité',
'trackers.oauthProxy.urlCopied' => 'URL copiée', 'seerr.rootFolder' => 'Dossier racine',
'trackers.libraryFilter.title' => 'Filtre de bibliothèques', 'seerr.languageProfile' => 'Profil de langue',
'trackers.libraryFilter.subtitleAllSyncing' => 'Synchronisation de toutes les bibliothèques', 'seerr.requestSubmitted' => 'Demande envoyée',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Aucune synchronisation', 'seerr.requestFailed' => ({required Object error}) => 'Échec de la demande : ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} bloquées', 'seerr.requestsLoadFailed' => 'Impossible de charger les options de demande',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} autorisées', 'seerr.nothingToRequest' => 'Tout est déjà disponible ou demandé.',
'trackers.libraryFilter.mode' => 'Mode de filtrage', 'seerr.statusAvailable' => 'Disponible',
'trackers.libraryFilter.modeBlacklist' => 'Liste noire', 'seerr.statusPartiallyAvailable' => 'Partiellement disponible',
'trackers.libraryFilter.modeWhitelist' => 'Liste blanche', 'seerr.statusRequested' => 'Demandé',
'trackers.libraryFilter.modeHintBlacklist' => 'Synchroniser toutes les bibliothèques sauf celles cochées ci-dessous.', 'seerr.statusProcessing' => 'En cours de traitement',
'trackers.libraryFilter.modeHintWhitelist' => 'Synchroniser uniquement les bibliothèques cochées ci-dessous.', 'services.title' => 'Services',
'trackers.libraryFilter.libraries' => 'Bibliothèques', 'services.hubSubtitle' => 'Synchronisez votre progression et demandez de nouveaux titres.',
'trackers.libraryFilter.noLibraries' => 'Aucune bibliothèque disponible', 'services.notConnected' => 'Non connecté',
'services.connectedAs' => ({required Object username}) => 'Connecté en tant que @${username}',
'services.scrobble' => 'Suivre la progression automatiquement',
'services.scrobbleDescription' => 'Mettre à jour votre liste lorsque vous terminez un épisode ou un film.',
'services.disconnectConfirm' => ({required Object service}) => 'Déconnecter ${service} ?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy cessera de mettre à jour ${service}. Reconnectez à tout moment.',
'services.connectFailed' => ({required Object service}) => 'Échec de la connexion à ${service}. Réessayez.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Activer Plezy sur ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Rendez-vous sur ${url} et entrez ce code :',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Ouvrir ${service} pour activer',
'services.deviceCode.waitingForAuthorization' => 'En attente d\'autorisation…',
'services.deviceCode.codeCopied' => 'Code copié',
'services.oauthProxy.title' => ({required Object service}) => 'Se connecter à ${service}',
'services.oauthProxy.body' => 'Scannez ce code QR ou ouvrez l\'URL sur n\'importe quel appareil.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Ouvrir ${service} pour se connecter',
'services.oauthProxy.urlCopied' => 'URL copiée',
'services.libraryFilter.title' => 'Filtre de bibliothèques',
'services.libraryFilter.subtitleAllSyncing' => 'Synchronisation de toutes les bibliothèques',
'services.libraryFilter.subtitleNoneSyncing' => 'Aucune synchronisation',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} bloquées',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} autorisées',
'services.libraryFilter.mode' => 'Mode de filtrage',
'services.libraryFilter.modeBlacklist' => 'Liste noire',
'services.libraryFilter.modeWhitelist' => 'Liste blanche',
'services.libraryFilter.modeHintBlacklist' => 'Synchroniser toutes les bibliothèques sauf celles cochées ci-dessous.',
'services.libraryFilter.modeHintWhitelist' => 'Synchroniser uniquement les bibliothèques cochées ci-dessous.',
'services.libraryFilter.libraries' => 'Bibliothèques',
'services.libraryFilter.noLibraries' => 'Aucune bibliothèque disponible',
'addServer.addJellyfinTitle' => 'Ajouter un serveur Jellyfin', 'addServer.addJellyfinTitle' => 'Ajouter un serveur Jellyfin',
'addServer.serverUrls' => 'URL du serveur', 'addServer.serverUrls' => 'URL du serveur',
'addServer.serverUrlsHelper' => 'Plusieurs URL possibles, séparées par des virgules.', 'addServer.serverUrlsHelper' => 'Plusieurs URL possibles, séparées par des virgules.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsIt extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsIt logs = _TranslationsLogsIt._(_root); @override late final _TranslationsLogsIt logs = _TranslationsLogsIt._(_root);
@override late final _TranslationsLicensesIt licenses = _TranslationsLicensesIt._(_root); @override late final _TranslationsLicensesIt licenses = _TranslationsLicensesIt._(_root);
@override late final _TranslationsNavigationIt navigation = _TranslationsNavigationIt._(_root); @override late final _TranslationsNavigationIt navigation = _TranslationsNavigationIt._(_root);
@override late final _TranslationsExploreIt explore = _TranslationsExploreIt._(_root);
@override late final _TranslationsLiveTvIt liveTv = _TranslationsLiveTvIt._(_root); @override late final _TranslationsLiveTvIt liveTv = _TranslationsLiveTvIt._(_root);
@override late final _TranslationsCollectionsIt collections = _TranslationsCollectionsIt._(_root); @override late final _TranslationsCollectionsIt collections = _TranslationsCollectionsIt._(_root);
@override late final _TranslationsPlaylistsIt playlists = _TranslationsPlaylistsIt._(_root); @override late final _TranslationsPlaylistsIt playlists = _TranslationsPlaylistsIt._(_root);
@@ -84,7 +85,8 @@ class TranslationsIt extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenIt matchScreen = _TranslationsMatchScreenIt._(_root); @override late final _TranslationsMatchScreenIt matchScreen = _TranslationsMatchScreenIt._(_root);
@override late final _TranslationsServerTasksIt serverTasks = _TranslationsServerTasksIt._(_root); @override late final _TranslationsServerTasksIt serverTasks = _TranslationsServerTasksIt._(_root);
@override late final _TranslationsTraktIt trakt = _TranslationsTraktIt._(_root); @override late final _TranslationsTraktIt trakt = _TranslationsTraktIt._(_root);
@override late final _TranslationsTrackersIt trackers = _TranslationsTrackersIt._(_root); @override late final _TranslationsSeerrIt seerr = _TranslationsSeerrIt._(_root);
@override late final _TranslationsServicesIt services = _TranslationsServicesIt._(_root);
@override late final _TranslationsAddServerIt addServer = _TranslationsAddServerIt._(_root); @override late final _TranslationsAddServerIt addServer = _TranslationsAddServerIt._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsIt extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Mostra su Discord cosa stai guardando'; @override String get discordRichPresenceDescription => 'Mostra su Discord cosa stai guardando';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Sincronizza la cronologia di visione con Trakt'; @override String get traktDescription => 'Sincronizza la cronologia di visione con Trakt';
@override String get trackers => 'Tracker'; @override String get services => 'Servizi';
@override String get trackersDescription => 'Sincronizza i progressi con Trakt, MyAnimeList, AniList e Simkl'; @override String get servicesDescription => 'Connetti Trakt, MyAnimeList, Seerr e altro';
@override String get companionRemoteServer => 'Server telecomando'; @override String get companionRemoteServer => 'Server telecomando';
@override String get companionRemoteServerDescription => 'Consenti ai dispositivi mobili nella tua rete di controllare questa app'; @override String get companionRemoteServerDescription => 'Consenti ai dispositivi mobili nella tua rete di controllare questa app';
@override String get autoPip => 'Picture-in-Picture automatico'; @override String get autoPip => 'Picture-in-Picture automatico';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetIt extends TranslationsRateSheetEn {
@override String get setScore => 'Imposta un punteggio'; @override String get setScore => 'Imposta un punteggio';
@override String get saved => 'Salvato'; @override String get saved => 'Salvato';
@override String get notAvailable => 'Nessuna corrispondenza trovata'; @override String get notAvailable => 'Nessuna corrispondenza trovata';
@override String get noConnectedTrackers => 'Collega un tracker in Impostazioni per valutarlo lì.'; @override String get noConnectedServices => 'Connetti un servizio nelle Impostazioni per valutare lì.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationIt extends TranslationsNavigationEn {
@override String get libraries => 'Librerie'; @override String get libraries => 'Librerie';
@override String get downloads => 'Download'; @override String get downloads => 'Download';
@override String get liveTv => 'TV Live'; @override String get liveTv => 'TV Live';
@override String get explore => 'Scopri';
}
// Path: explore
class _TranslationsExploreIt extends TranslationsExploreEn {
_TranslationsExploreIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get title => 'Scopri';
@override String get selectSource => 'Seleziona fonte';
@override late final _TranslationsExploreRowsIt rows = _TranslationsExploreRowsIt._(_root);
@override String searchHint({required Object source}) => 'Cerca su ${source}';
@override String searchEmpty({required Object query}) => 'Nessun risultato per "${query}"';
@override String searchPrompt({required Object source}) => 'Cerca film e serie TV su ${source}.';
@override String get searchFailed => 'Ricerca fallita. Controlla la connessione e riprova.';
@override late final _TranslationsExploreStatusIt status = _TranslationsExploreStatusIt._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('it'))(n,
one: '${n} episodio',
other: '${n} episodi',
);
@override String get cast => 'Attori';
@override String get characters => 'Personaggi';
@override String get addToWatchlist => 'Aggiungi alla Watchlist';
@override String get removeFromWatchlist => 'Rimuovi dalla Watchlist';
@override String get watchlistUpdateFailed => 'Impossibile aggiornare la Watchlist';
@override String get notInLibrary => 'Non è nella tua libreria';
@override String get inTheseLibraries => 'In queste librerie';
@override String availableOn({required Object server}) => 'Disponibile su ${server}';
@override String get checkingLibrary => 'Controllo della tua libreria...';
@override String get emptyTitle => 'Ancora niente qui';
@override String emptyMessage({required Object source}) => 'Le righe da ${source} appariranno qui una volta che avranno dei contenuti.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktIt extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Quando segni elementi come visti in Plezy, vengono segnati anche su Trakt.'; @override String get watchedSyncDescription => 'Quando segni elementi come visti in Plezy, vengono segnati anche su Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersIt extends TranslationsTrackersEn { class _TranslationsSeerrIt extends TranslationsSeerrEn {
_TranslationsTrackersIt._(TranslationsIt root) : this._root = root, super.internal(root); _TranslationsSeerrIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field final TranslationsIt _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Tracker'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Sincronizza l\'avanzamento di visione con Trakt e altri servizi.'; @override String get connectTitle => 'Connetti Seerr';
@override String get serverUrl => 'URL del server';
@override String get serverUrlHelper => 'L\'indirizzo della tua istanza Seerr';
@override String get checkServer => 'Continua';
@override String get signInWithJellyfin => 'Accedi con Jellyfin';
@override String get signInWithEmby => 'Accedi con Emby';
@override String get signInWithLocal => 'Usa un account locale';
@override String get email => 'Email';
@override String get noSignInMethods => 'Questa istanza Seerr non offre alcun metodo di accesso supportato da Plezy.';
@override String get instance => 'Istanza';
@override String get disconnectConfirm => 'Disconnettere Seerr?';
@override String get disconnectConfirmBody => 'Plezy dimenticherà questa istanza Seerr. Riconnetti quando vuoi.';
@override String get request => 'Richiedi';
@override String get request4k => 'Richiedi in 4K';
@override String get seasons => 'Stagioni';
@override String get allSeasons => 'Tutte le stagioni';
@override String get advancedOptions => 'Avanzate';
@override String get destinationServer => 'Server di destinazione';
@override String get qualityProfile => 'Profilo qualità';
@override String get rootFolder => 'Cartella radice';
@override String get languageProfile => 'Profilo lingua';
@override String get requestSubmitted => 'Richiesta inviata';
@override String requestFailed({required Object error}) => 'Richiesta non riuscita: ${error}';
@override String get requestsLoadFailed => 'Impossibile caricare le opzioni di richiesta';
@override String get nothingToRequest => 'Tutto è già disponibile o richiesto.';
@override String get statusAvailable => 'Disponibile';
@override String get statusPartiallyAvailable => 'Parzialmente disponibile';
@override String get statusRequested => 'Richiesto';
@override String get statusProcessing => 'In elaborazione';
}
// Path: services
class _TranslationsServicesIt extends TranslationsServicesEn {
_TranslationsServicesIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get title => 'Servizi';
@override String get hubSubtitle => 'Sincronizza i progressi di visione e richiedi nuovi titoli.';
@override String get notConnected => 'Non connesso'; @override String get notConnected => 'Non connesso';
@override String connectedAs({required Object username}) => 'Connesso come @${username}'; @override String connectedAs({required Object username}) => 'Connesso come @${username}';
@override String get scrobble => 'Traccia i progressi automaticamente'; @override String get scrobble => 'Traccia i progressi automaticamente';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersIt extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Disconnettere ${service}?'; @override String disconnectConfirm({required Object service}) => 'Disconnettere ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy smetterà di aggiornare ${service}. Riconnetti quando vuoi.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy smetterà di aggiornare ${service}. Riconnetti quando vuoi.';
@override String connectFailed({required Object service}) => 'Impossibile connettersi a ${service}. Riprova.'; @override String connectFailed({required Object service}) => 'Impossibile connettersi a ${service}. Riprova.';
@override late final _TranslationsTrackersServicesIt services = _TranslationsTrackersServicesIt._(_root); @override late final _TranslationsServicesNamesIt names = _TranslationsServicesNamesIt._(_root);
@override late final _TranslationsTrackersDeviceCodeIt deviceCode = _TranslationsTrackersDeviceCodeIt._(_root); @override late final _TranslationsServicesDeviceCodeIt deviceCode = _TranslationsServicesDeviceCodeIt._(_root);
@override late final _TranslationsTrackersOauthProxyIt oauthProxy = _TranslationsTrackersOauthProxyIt._(_root); @override late final _TranslationsServicesOauthProxyIt oauthProxy = _TranslationsServicesOauthProxyIt._(_root);
@override late final _TranslationsTrackersLibraryFilterIt libraryFilter = _TranslationsTrackersLibraryFilterIt._(_root); @override late final _TranslationsServicesLibraryFilterIt libraryFilter = _TranslationsServicesLibraryFilterIt._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsIt extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Data aggiunta ultimo episodio'; @override String get lastEpisodeDateAdded => 'Data aggiunta ultimo episodio';
} }
// Path: explore.rows
class _TranslationsExploreRowsIt extends TranslationsExploreRowsEn {
_TranslationsExploreRowsIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Watchlist';
@override String get recommendedMovies => 'Film consigliati';
@override String get recommendedShows => 'Serie TV consigliate';
@override String get trendingMovies => 'Film di tendenza';
@override String get trendingShows => 'Serie TV di tendenza';
@override String get popularMovies => 'Film popolari';
@override String get popularShows => 'Serie TV popolari';
@override String get suggestedAnime => 'Anime suggeriti';
@override String get airingAnime => 'Migliori anime in onda';
@override String get popularAnime => 'Anime più popolari';
@override String get trending => 'Di tendenza';
@override String get upcomingMovies => 'Film in arrivo';
@override String get upcomingShows => 'Serie TV in arrivo';
}
// Path: explore.status
class _TranslationsExploreStatusIt extends TranslationsExploreStatusEn {
_TranslationsExploreStatusIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field
// Translations
@override String get airing => 'In onda';
@override String get ended => 'Conclusa';
@override String get canceled => 'Cancellata';
@override String get upcoming => 'In arrivo';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionIt extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionIt extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionIt._(TranslationsIt root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionIt._(TranslationsIt root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsIt extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Connessione persa'; @override String get connectionLost => 'Connessione persa';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesIt extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesIt extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesIt._(TranslationsIt root) : this._root = root, super.internal(root); _TranslationsServicesNamesIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field final TranslationsIt _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesIt extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeIt extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeIt extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeIt._(TranslationsIt root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field final TranslationsIt _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeIt extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Codice copiato'; @override String get codeCopied => 'Codice copiato';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyIt extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyIt extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyIt._(TranslationsIt root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field final TranslationsIt _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyIt extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL copiato'; @override String get urlCopied => 'URL copiato';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterIt extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterIt extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterIt._(TranslationsIt root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterIt._(TranslationsIt root) : this._root = root, super.internal(root);
final TranslationsIt _root; // ignore: unused_field final TranslationsIt _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsIt {
'settings.discordRichPresenceDescription' => 'Mostra su Discord cosa stai guardando', 'settings.discordRichPresenceDescription' => 'Mostra su Discord cosa stai guardando',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Sincronizza la cronologia di visione con Trakt', 'settings.traktDescription' => 'Sincronizza la cronologia di visione con Trakt',
'settings.trackers' => 'Tracker', 'settings.services' => 'Servizi',
'settings.trackersDescription' => 'Sincronizza i progressi con Trakt, MyAnimeList, AniList e Simkl', 'settings.servicesDescription' => 'Connetti Trakt, MyAnimeList, Seerr e altro',
'settings.companionRemoteServer' => 'Server telecomando', 'settings.companionRemoteServer' => 'Server telecomando',
'settings.companionRemoteServerDescription' => 'Consenti ai dispositivi mobili nella tua rete di controllare questa app', 'settings.companionRemoteServerDescription' => 'Consenti ai dispositivi mobili nella tua rete di controllare questa app',
'settings.autoPip' => 'Picture-in-Picture automatico', 'settings.autoPip' => 'Picture-in-Picture automatico',
@@ -2390,7 +2500,7 @@ extension on TranslationsIt {
'rateSheet.setScore' => 'Imposta un punteggio', 'rateSheet.setScore' => 'Imposta un punteggio',
'rateSheet.saved' => 'Salvato', 'rateSheet.saved' => 'Salvato',
'rateSheet.notAvailable' => 'Nessuna corrispondenza trovata', 'rateSheet.notAvailable' => 'Nessuna corrispondenza trovata',
'rateSheet.noConnectedTrackers' => 'Collega un tracker in Impostazioni per valutarlo lì.', 'rateSheet.noConnectedServices' => 'Connetti un servizio nelle Impostazioni per valutare lì.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, serie TV', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, serie TV',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsIt {
'navigation.libraries' => 'Librerie', 'navigation.libraries' => 'Librerie',
'navigation.downloads' => 'Download', 'navigation.downloads' => 'Download',
'navigation.liveTv' => 'TV Live', 'navigation.liveTv' => 'TV Live',
'navigation.explore' => 'Scopri',
'explore.title' => 'Scopri',
'explore.selectSource' => 'Seleziona fonte',
'explore.rows.watchlist' => 'Watchlist',
'explore.rows.recommendedMovies' => 'Film consigliati',
'explore.rows.recommendedShows' => 'Serie TV consigliate',
'explore.rows.trendingMovies' => 'Film di tendenza',
'explore.rows.trendingShows' => 'Serie TV di tendenza',
'explore.rows.popularMovies' => 'Film popolari',
'explore.rows.popularShows' => 'Serie TV popolari',
'explore.rows.suggestedAnime' => 'Anime suggeriti',
'explore.rows.airingAnime' => 'Migliori anime in onda',
'explore.rows.popularAnime' => 'Anime più popolari',
'explore.rows.trending' => 'Di tendenza',
'explore.rows.upcomingMovies' => 'Film in arrivo',
'explore.rows.upcomingShows' => 'Serie TV in arrivo',
'explore.searchHint' => ({required Object source}) => 'Cerca su ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Nessun risultato per "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Cerca film e serie TV su ${source}.',
'explore.searchFailed' => 'Ricerca fallita. Controlla la connessione e riprova.',
'explore.status.airing' => 'In onda',
'explore.status.ended' => 'Conclusa',
'explore.status.canceled' => 'Cancellata',
'explore.status.upcoming' => 'In arrivo',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('it'))(n, one: '${n} episodio', other: '${n} episodi', ),
'explore.cast' => 'Attori',
'explore.characters' => 'Personaggi',
'explore.addToWatchlist' => 'Aggiungi alla Watchlist',
'explore.removeFromWatchlist' => 'Rimuovi dalla Watchlist',
'explore.watchlistUpdateFailed' => 'Impossibile aggiornare la Watchlist',
'explore.notInLibrary' => 'Non è nella tua libreria',
'explore.inTheseLibraries' => 'In queste librerie',
'explore.availableOn' => ({required Object server}) => 'Disponibile su ${server}',
'explore.checkingLibrary' => 'Controllo della tua libreria...',
'explore.emptyTitle' => 'Ancora niente qui',
'explore.emptyMessage' => ({required Object source}) => 'Le righe da ${source} appariranno qui una volta che avranno dei contenuti.',
'liveTv.title' => 'TV in diretta', 'liveTv.title' => 'TV in diretta',
'liveTv.guide' => 'Guida', 'liveTv.guide' => 'Guida',
'liveTv.noChannels' => 'Nessun canale disponibile', 'liveTv.noChannels' => 'Nessun canale disponibile',
@@ -2986,6 +3132,8 @@ extension on TranslationsIt {
'downloads.cancelledDownloadMessage' => 'Questo download è stato annullato. Cosa vuoi fare?', 'downloads.cancelledDownloadMessage' => 'Questo download è stato annullato. Cosa vuoi fare?',
'downloads.allEpisodesAlreadyDownloaded' => 'Tutti gli episodi sono già stati scaricati', 'downloads.allEpisodesAlreadyDownloaded' => 'Tutti gli episodi sono già stati scaricati',
'downloads.resumeDownload' => 'Riprendi download', 'downloads.resumeDownload' => 'Riprendi download',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Download annullato', 'downloads.cancelledDownload' => 'Download annullato',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (sincronizzazione ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (sincronizzazione ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} scaricato — fai clic per completare', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} scaricato — fai clic per completare',
@@ -3022,8 +3170,6 @@ extension on TranslationsIt {
'downloads.noSyncRules' => 'Nessuna regola di sincronizzazione', 'downloads.noSyncRules' => 'Nessuna regola di sincronizzazione',
'downloads.manageSyncRule' => 'Gestisci sincronizzazione', 'downloads.manageSyncRule' => 'Gestisci sincronizzazione',
'downloads.editEpisodeCount' => 'Numero di episodi', 'downloads.editEpisodeCount' => 'Numero di episodi',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Filtro di sincronizzazione', 'downloads.editSyncFilter' => 'Filtro di sincronizzazione',
'downloads.syncAllItems' => 'Sincronizzazione di tutti gli elementi', 'downloads.syncAllItems' => 'Sincronizzazione di tutti gli elementi',
'downloads.syncUnwatchedItems' => 'Sincronizzazione degli elementi non visti', 'downloads.syncUnwatchedItems' => 'Sincronizzazione degli elementi non visti',
@@ -3272,39 +3418,70 @@ extension on TranslationsIt {
'trakt.scrobbleDescription' => 'Invia eventi di riproduzione, pausa e arresto a Trakt durante la riproduzione.', 'trakt.scrobbleDescription' => 'Invia eventi di riproduzione, pausa e arresto a Trakt durante la riproduzione.',
'trakt.watchedSync' => 'Sincronizza stato visualizzato', 'trakt.watchedSync' => 'Sincronizza stato visualizzato',
'trakt.watchedSyncDescription' => 'Quando segni elementi come visti in Plezy, vengono segnati anche su Trakt.', 'trakt.watchedSyncDescription' => 'Quando segni elementi come visti in Plezy, vengono segnati anche su Trakt.',
'trackers.title' => 'Tracker', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Sincronizza l\'avanzamento di visione con Trakt e altri servizi.', 'seerr.connectTitle' => 'Connetti Seerr',
'trackers.notConnected' => 'Non connesso', 'seerr.serverUrl' => 'URL del server',
'trackers.connectedAs' => ({required Object username}) => 'Connesso come @${username}', 'seerr.serverUrlHelper' => 'L\'indirizzo della tua istanza Seerr',
'trackers.scrobble' => 'Traccia i progressi automaticamente', 'seerr.checkServer' => 'Continua',
'trackers.scrobbleDescription' => 'Aggiorna la tua lista quando finisci un episodio o un film.', 'seerr.signInWithJellyfin' => 'Accedi con Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Disconnettere ${service}?', 'seerr.signInWithEmby' => 'Accedi con Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy smetterà di aggiornare ${service}. Riconnetti quando vuoi.', 'seerr.signInWithLocal' => 'Usa un account locale',
'trackers.connectFailed' => ({required Object service}) => 'Impossibile connettersi a ${service}. Riprova.', 'seerr.email' => 'Email',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Questa istanza Seerr non offre alcun metodo di accesso supportato da Plezy.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Istanza',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Disconnettere Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Attiva Plezy su ${service}', 'seerr.disconnectConfirmBody' => 'Plezy dimenticherà questa istanza Seerr. Riconnetti quando vuoi.',
'trackers.deviceCode.body' => ({required Object url}) => 'Visita ${url} e inserisci questo codice:', 'seerr.request' => 'Richiedi',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Apri ${service} per attivare', 'seerr.request4k' => 'Richiedi in 4K',
'trackers.deviceCode.waitingForAuthorization' => 'In attesa di autorizzazione…', 'seerr.seasons' => 'Stagioni',
'trackers.deviceCode.codeCopied' => 'Codice copiato', 'seerr.allSeasons' => 'Tutte le stagioni',
'trackers.oauthProxy.title' => ({required Object service}) => 'Accedi a ${service}', 'seerr.advancedOptions' => 'Avanzate',
'trackers.oauthProxy.body' => 'Scansiona questo codice QR o apri l\'URL su qualsiasi dispositivo.', 'seerr.destinationServer' => 'Server di destinazione',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Apri ${service} per accedere', 'seerr.qualityProfile' => 'Profilo qualità',
'trackers.oauthProxy.urlCopied' => 'URL copiato', 'seerr.rootFolder' => 'Cartella radice',
'trackers.libraryFilter.title' => 'Filtro librerie', 'seerr.languageProfile' => 'Profilo lingua',
'trackers.libraryFilter.subtitleAllSyncing' => 'Sincronizzazione di tutte le librerie', 'seerr.requestSubmitted' => 'Richiesta inviata',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Nulla da sincronizzare', 'seerr.requestFailed' => ({required Object error}) => 'Richiesta non riuscita: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} bloccate', 'seerr.requestsLoadFailed' => 'Impossibile caricare le opzioni di richiesta',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} consentite', 'seerr.nothingToRequest' => 'Tutto è già disponibile o richiesto.',
'trackers.libraryFilter.mode' => 'Modalità filtro', 'seerr.statusAvailable' => 'Disponibile',
'trackers.libraryFilter.modeBlacklist' => 'Lista nera', 'seerr.statusPartiallyAvailable' => 'Parzialmente disponibile',
'trackers.libraryFilter.modeWhitelist' => 'Lista bianca', 'seerr.statusRequested' => 'Richiesto',
'trackers.libraryFilter.modeHintBlacklist' => 'Sincronizza tutte le librerie tranne quelle selezionate sotto.', 'seerr.statusProcessing' => 'In elaborazione',
'trackers.libraryFilter.modeHintWhitelist' => 'Sincronizza solo le librerie selezionate sotto.', 'services.title' => 'Servizi',
'trackers.libraryFilter.libraries' => 'Librerie', 'services.hubSubtitle' => 'Sincronizza i progressi di visione e richiedi nuovi titoli.',
'trackers.libraryFilter.noLibraries' => 'Nessuna libreria disponibile', 'services.notConnected' => 'Non connesso',
'services.connectedAs' => ({required Object username}) => 'Connesso come @${username}',
'services.scrobble' => 'Traccia i progressi automaticamente',
'services.scrobbleDescription' => 'Aggiorna la tua lista quando finisci un episodio o un film.',
'services.disconnectConfirm' => ({required Object service}) => 'Disconnettere ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy smetterà di aggiornare ${service}. Riconnetti quando vuoi.',
'services.connectFailed' => ({required Object service}) => 'Impossibile connettersi a ${service}. Riprova.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Attiva Plezy su ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Visita ${url} e inserisci questo codice:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Apri ${service} per attivare',
'services.deviceCode.waitingForAuthorization' => 'In attesa di autorizzazione…',
'services.deviceCode.codeCopied' => 'Codice copiato',
'services.oauthProxy.title' => ({required Object service}) => 'Accedi a ${service}',
'services.oauthProxy.body' => 'Scansiona questo codice QR o apri l\'URL su qualsiasi dispositivo.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Apri ${service} per accedere',
'services.oauthProxy.urlCopied' => 'URL copiato',
'services.libraryFilter.title' => 'Filtro librerie',
'services.libraryFilter.subtitleAllSyncing' => 'Sincronizzazione di tutte le librerie',
'services.libraryFilter.subtitleNoneSyncing' => 'Nulla da sincronizzare',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} bloccate',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} consentite',
'services.libraryFilter.mode' => 'Modalità filtro',
'services.libraryFilter.modeBlacklist' => 'Lista nera',
'services.libraryFilter.modeWhitelist' => 'Lista bianca',
'services.libraryFilter.modeHintBlacklist' => 'Sincronizza tutte le librerie tranne quelle selezionate sotto.',
'services.libraryFilter.modeHintWhitelist' => 'Sincronizza solo le librerie selezionate sotto.',
'services.libraryFilter.libraries' => 'Librerie',
'services.libraryFilter.noLibraries' => 'Nessuna libreria disponibile',
'addServer.addJellyfinTitle' => 'Aggiungi server Jellyfin', 'addServer.addJellyfinTitle' => 'Aggiungi server Jellyfin',
'addServer.serverUrls' => 'URL del server', 'addServer.serverUrls' => 'URL del server',
'addServer.serverUrlsHelper' => 'Sono consentiti più URL, separati da virgole.', 'addServer.serverUrlsHelper' => 'Sono consentiti più URL, separati da virgole.',
+239 -63
View File
@@ -69,6 +69,7 @@ class TranslationsJa extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsJa logs = _TranslationsLogsJa._(_root); @override late final _TranslationsLogsJa logs = _TranslationsLogsJa._(_root);
@override late final _TranslationsLicensesJa licenses = _TranslationsLicensesJa._(_root); @override late final _TranslationsLicensesJa licenses = _TranslationsLicensesJa._(_root);
@override late final _TranslationsNavigationJa navigation = _TranslationsNavigationJa._(_root); @override late final _TranslationsNavigationJa navigation = _TranslationsNavigationJa._(_root);
@override late final _TranslationsExploreJa explore = _TranslationsExploreJa._(_root);
@override late final _TranslationsLiveTvJa liveTv = _TranslationsLiveTvJa._(_root); @override late final _TranslationsLiveTvJa liveTv = _TranslationsLiveTvJa._(_root);
@override late final _TranslationsCollectionsJa collections = _TranslationsCollectionsJa._(_root); @override late final _TranslationsCollectionsJa collections = _TranslationsCollectionsJa._(_root);
@override late final _TranslationsPlaylistsJa playlists = _TranslationsPlaylistsJa._(_root); @override late final _TranslationsPlaylistsJa playlists = _TranslationsPlaylistsJa._(_root);
@@ -84,7 +85,8 @@ class TranslationsJa extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenJa matchScreen = _TranslationsMatchScreenJa._(_root); @override late final _TranslationsMatchScreenJa matchScreen = _TranslationsMatchScreenJa._(_root);
@override late final _TranslationsServerTasksJa serverTasks = _TranslationsServerTasksJa._(_root); @override late final _TranslationsServerTasksJa serverTasks = _TranslationsServerTasksJa._(_root);
@override late final _TranslationsTraktJa trakt = _TranslationsTraktJa._(_root); @override late final _TranslationsTraktJa trakt = _TranslationsTraktJa._(_root);
@override late final _TranslationsTrackersJa trackers = _TranslationsTrackersJa._(_root); @override late final _TranslationsSeerrJa seerr = _TranslationsSeerrJa._(_root);
@override late final _TranslationsServicesJa services = _TranslationsServicesJa._(_root);
@override late final _TranslationsAddServerJa addServer = _TranslationsAddServerJa._(_root); @override late final _TranslationsAddServerJa addServer = _TranslationsAddServerJa._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsJa extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Discordで視聴中の内容を表示'; @override String get discordRichPresenceDescription => 'Discordで視聴中の内容を表示';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => '視聴履歴を Trakt と同期'; @override String get traktDescription => '視聴履歴を Trakt と同期';
@override String get trackers => 'トラッカー'; @override String get services => 'サービス';
@override String get trackersDescription => '進捗を Trakt、MyAnimeList、AniList、Simkl と同期'; @override String get servicesDescription => 'Trakt、MyAnimeList、Seerr などを接続';
@override String get companionRemoteServer => 'コンパニオンリモートサーバー'; @override String get companionRemoteServer => 'コンパニオンリモートサーバー';
@override String get companionRemoteServerDescription => 'ネットワーク上のモバイルデバイスからこのアプリを操作できるようにする'; @override String get companionRemoteServerDescription => 'ネットワーク上のモバイルデバイスからこのアプリを操作できるようにする';
@override String get autoPip => '自動ピクチャーインピクチャー'; @override String get autoPip => '自動ピクチャーインピクチャー';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetJa extends TranslationsRateSheetEn {
@override String get setScore => 'スコアを設定'; @override String get setScore => 'スコアを設定';
@override String get saved => '保存済み'; @override String get saved => '保存済み';
@override String get notAvailable => '一致なし'; @override String get notAvailable => '一致なし';
@override String get noConnectedTrackers => '設定でトラッカーを接続すると、そこで評価できます'; @override String get noConnectedServices => '評価するには、設定でサービスを接続してください';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,38 @@ class _TranslationsNavigationJa extends TranslationsNavigationEn {
@override String get libraries => 'ライブラリ'; @override String get libraries => 'ライブラリ';
@override String get downloads => 'ダウンロード'; @override String get downloads => 'ダウンロード';
@override String get liveTv => 'ライブTV'; @override String get liveTv => 'ライブTV';
@override String get explore => '探索';
}
// Path: explore
class _TranslationsExploreJa extends TranslationsExploreEn {
_TranslationsExploreJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get title => '探索';
@override String get selectSource => 'ソースを選択';
@override late final _TranslationsExploreRowsJa rows = _TranslationsExploreRowsJa._(_root);
@override String searchHint({required Object source}) => '${source} で検索';
@override String searchEmpty({required Object query}) => '${query}」の結果が見つかりません';
@override String searchPrompt({required Object source}) => '${source} で映画やテレビ番組を検索します。';
@override String get searchFailed => '検索に失敗しました。接続を確認してもう一度お試しください。';
@override late final _TranslationsExploreStatusJa status = _TranslationsExploreStatusJa._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ja'))(n,
other: '${n}',
);
@override String get cast => 'キャスト';
@override String get characters => 'キャラクター';
@override String get addToWatchlist => 'ウォッチリストに追加';
@override String get removeFromWatchlist => 'ウォッチリストから削除';
@override String get watchlistUpdateFailed => 'ウォッチリストを更新できませんでした';
@override String get notInLibrary => 'ライブラリにありません';
@override String get inTheseLibraries => 'これらのライブラリにあります';
@override String availableOn({required Object server}) => '${server}で視聴可能';
@override String get checkingLibrary => 'ライブラリを確認中...';
@override String get emptyTitle => 'まだ何もありません';
@override String emptyMessage({required Object source}) => '${source}にコンテンツが追加されると、ここに表示されます。';
} }
// Path: liveTv // Path: liveTv
@@ -1645,15 +1679,54 @@ class _TranslationsTraktJa extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Plezy で項目を視聴済みにすると、Trakt でも視聴済みになります。'; @override String get watchedSyncDescription => 'Plezy で項目を視聴済みにすると、Trakt でも視聴済みになります。';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersJa extends TranslationsTrackersEn { class _TranslationsSeerrJa extends TranslationsSeerrEn {
_TranslationsTrackersJa._(TranslationsJa root) : this._root = root, super.internal(root); _TranslationsSeerrJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field final TranslationsJa _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'トラッカー'; @override String get title => 'Seerr';
@override String get hubSubtitle => '視聴進捗をTraktや他のサービスと同期します。'; @override String get connectTitle => 'Seerrに接続';
@override String get serverUrl => 'サーバー URL';
@override String get serverUrlHelper => 'Seerr インスタンスのアドレス';
@override String get checkServer => '続ける';
@override String get signInWithJellyfin => 'Jellyfinでサインイン';
@override String get signInWithEmby => 'Embyでサインイン';
@override String get signInWithLocal => 'ローカルアカウントを使う';
@override String get email => 'メールアドレス';
@override String get noSignInMethods => 'この Seerr インスタンスには Plezy が対応しているサインイン方法がありません。';
@override String get instance => 'インスタンス';
@override String get disconnectConfirm => 'Seerr の接続を解除しますか?';
@override String get disconnectConfirmBody => 'Plezy はこの Seerr インスタンスの情報を削除します。いつでも再接続できます。';
@override String get request => 'リクエスト';
@override String get request4k => '4K でリクエスト';
@override String get seasons => 'シーズン';
@override String get allSeasons => '全シーズン';
@override String get advancedOptions => '詳細';
@override String get destinationServer => '宛先サーバー';
@override String get qualityProfile => '画質プロファイル';
@override String get rootFolder => 'ルートフォルダ';
@override String get languageProfile => '言語プロファイル';
@override String get requestSubmitted => 'リクエストを送信しました';
@override String requestFailed({required Object error}) => 'リクエストに失敗しました: ${error}';
@override String get requestsLoadFailed => 'リクエストオプションを読み込めませんでした';
@override String get nothingToRequest => 'すべてすでに利用可能またはリクエスト済みです。';
@override String get statusAvailable => '利用可能';
@override String get statusPartiallyAvailable => '一部利用可能';
@override String get statusRequested => 'リクエスト済み';
@override String get statusProcessing => '処理中';
}
// Path: services
class _TranslationsServicesJa extends TranslationsServicesEn {
_TranslationsServicesJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get title => 'サービス';
@override String get hubSubtitle => '視聴の進捗を同期して、新しいタイトルをリクエストします。';
@override String get notConnected => '未接続'; @override String get notConnected => '未接続';
@override String connectedAs({required Object username}) => '@${username} として接続済み'; @override String connectedAs({required Object username}) => '@${username} として接続済み';
@override String get scrobble => '進捗を自動で記録'; @override String get scrobble => '進捗を自動で記録';
@@ -1661,10 +1734,10 @@ class _TranslationsTrackersJa extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => '${service} の接続を解除しますか?'; @override String disconnectConfirm({required Object service}) => '${service} の接続を解除しますか?';
@override String disconnectConfirmBody({required Object service}) => 'Plezyは${service}の更新を停止します。いつでも再接続できます。'; @override String disconnectConfirmBody({required Object service}) => 'Plezyは${service}の更新を停止します。いつでも再接続できます。';
@override String connectFailed({required Object service}) => '${service} に接続できませんでした。もう一度お試しください。'; @override String connectFailed({required Object service}) => '${service} に接続できませんでした。もう一度お試しください。';
@override late final _TranslationsTrackersServicesJa services = _TranslationsTrackersServicesJa._(_root); @override late final _TranslationsServicesNamesJa names = _TranslationsServicesNamesJa._(_root);
@override late final _TranslationsTrackersDeviceCodeJa deviceCode = _TranslationsTrackersDeviceCodeJa._(_root); @override late final _TranslationsServicesDeviceCodeJa deviceCode = _TranslationsServicesDeviceCodeJa._(_root);
@override late final _TranslationsTrackersOauthProxyJa oauthProxy = _TranslationsTrackersOauthProxyJa._(_root); @override late final _TranslationsServicesOauthProxyJa oauthProxy = _TranslationsServicesOauthProxyJa._(_root);
@override late final _TranslationsTrackersLibraryFilterJa libraryFilter = _TranslationsTrackersLibraryFilterJa._(_root); @override late final _TranslationsServicesLibraryFilterJa libraryFilter = _TranslationsServicesLibraryFilterJa._(_root);
} }
// Path: addServer // Path: addServer
@@ -1831,6 +1904,41 @@ class _TranslationsLibrariesSortLabelsJa extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => '最新エピソード追加日'; @override String get lastEpisodeDateAdded => '最新エピソード追加日';
} }
// Path: explore.rows
class _TranslationsExploreRowsJa extends TranslationsExploreRowsEn {
_TranslationsExploreRowsJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get watchlist => 'ウォッチリスト';
@override String get recommendedMovies => 'おすすめの映画';
@override String get recommendedShows => 'おすすめのテレビ番組';
@override String get trendingMovies => 'トレンドの映画';
@override String get trendingShows => 'トレンドのテレビ番組';
@override String get popularMovies => '人気の映画';
@override String get popularShows => '人気のテレビ番組';
@override String get suggestedAnime => 'おすすめのアニメ';
@override String get airingAnime => '放送中の注目アニメ';
@override String get popularAnime => '人気のアニメ';
@override String get trending => 'トレンド';
@override String get upcomingMovies => '近日公開の映画';
@override String get upcomingShows => '放送予定の番組';
}
// Path: explore.status
class _TranslationsExploreStatusJa extends TranslationsExploreStatusEn {
_TranslationsExploreStatusJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field
// Translations
@override String get airing => '放送中';
@override String get ended => '放送終了';
@override String get canceled => '打ち切り';
@override String get upcoming => '放送予定';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionJa extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionJa extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionJa._(TranslationsJa root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionJa._(TranslationsJa root) : this._root = root, super.internal(root);
@@ -1927,9 +2035,9 @@ class _TranslationsCompanionRemoteErrorsJa extends TranslationsCompanionRemoteEr
@override String get connectionLost => '接続が切断されました'; @override String get connectionLost => '接続が切断されました';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesJa extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesJa extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesJa._(TranslationsJa root) : this._root = root, super.internal(root); _TranslationsServicesNamesJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field final TranslationsJa _root; // ignore: unused_field
@@ -1937,11 +2045,12 @@ class _TranslationsTrackersServicesJa extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeJa extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeJa extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeJa._(TranslationsJa root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field final TranslationsJa _root; // ignore: unused_field
@@ -1953,9 +2062,9 @@ class _TranslationsTrackersDeviceCodeJa extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'コードをコピーしました'; @override String get codeCopied => 'コードをコピーしました';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyJa extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyJa extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyJa._(TranslationsJa root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field final TranslationsJa _root; // ignore: unused_field
@@ -1966,9 +2075,9 @@ class _TranslationsTrackersOauthProxyJa extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URLをコピーしました'; @override String get urlCopied => 'URLをコピーしました';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterJa extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterJa extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterJa._(TranslationsJa root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterJa._(TranslationsJa root) : this._root = root, super.internal(root);
final TranslationsJa _root; // ignore: unused_field final TranslationsJa _root; // ignore: unused_field
@@ -2232,8 +2341,8 @@ extension on TranslationsJa {
'settings.discordRichPresenceDescription' => 'Discordで視聴中の内容を表示', 'settings.discordRichPresenceDescription' => 'Discordで視聴中の内容を表示',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => '視聴履歴を Trakt と同期', 'settings.traktDescription' => '視聴履歴を Trakt と同期',
'settings.trackers' => 'トラッカー', 'settings.services' => 'サービス',
'settings.trackersDescription' => '進捗を Trakt、MyAnimeList、AniList、Simkl と同期', 'settings.servicesDescription' => 'Trakt、MyAnimeList、Seerr などを接続',
'settings.companionRemoteServer' => 'コンパニオンリモートサーバー', 'settings.companionRemoteServer' => 'コンパニオンリモートサーバー',
'settings.companionRemoteServerDescription' => 'ネットワーク上のモバイルデバイスからこのアプリを操作できるようにする', 'settings.companionRemoteServerDescription' => 'ネットワーク上のモバイルデバイスからこのアプリを操作できるようにする',
'settings.autoPip' => '自動ピクチャーインピクチャー', 'settings.autoPip' => '自動ピクチャーインピクチャー',
@@ -2389,7 +2498,7 @@ extension on TranslationsJa {
'rateSheet.setScore' => 'スコアを設定', 'rateSheet.setScore' => 'スコアを設定',
'rateSheet.saved' => '保存済み', 'rateSheet.saved' => '保存済み',
'rateSheet.notAvailable' => '一致なし', 'rateSheet.notAvailable' => '一致なし',
'rateSheet.noConnectedTrackers' => '設定でトラッカーを接続すると、そこで評価できます', 'rateSheet.noConnectedServices' => '評価するには、設定でサービスを接続してください',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}、映画', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}、映画',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}、テレビ番組', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}、テレビ番組',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}${episodeInfo}',
@@ -2770,6 +2879,42 @@ extension on TranslationsJa {
'navigation.libraries' => 'ライブラリ', 'navigation.libraries' => 'ライブラリ',
'navigation.downloads' => 'ダウンロード', 'navigation.downloads' => 'ダウンロード',
'navigation.liveTv' => 'ライブTV', 'navigation.liveTv' => 'ライブTV',
'navigation.explore' => '探索',
'explore.title' => '探索',
'explore.selectSource' => 'ソースを選択',
'explore.rows.watchlist' => 'ウォッチリスト',
'explore.rows.recommendedMovies' => 'おすすめの映画',
'explore.rows.recommendedShows' => 'おすすめのテレビ番組',
'explore.rows.trendingMovies' => 'トレンドの映画',
'explore.rows.trendingShows' => 'トレンドのテレビ番組',
'explore.rows.popularMovies' => '人気の映画',
'explore.rows.popularShows' => '人気のテレビ番組',
'explore.rows.suggestedAnime' => 'おすすめのアニメ',
'explore.rows.airingAnime' => '放送中の注目アニメ',
'explore.rows.popularAnime' => '人気のアニメ',
'explore.rows.trending' => 'トレンド',
'explore.rows.upcomingMovies' => '近日公開の映画',
'explore.rows.upcomingShows' => '放送予定の番組',
'explore.searchHint' => ({required Object source}) => '${source} で検索',
'explore.searchEmpty' => ({required Object query}) => '${query}」の結果が見つかりません',
'explore.searchPrompt' => ({required Object source}) => '${source} で映画やテレビ番組を検索します。',
'explore.searchFailed' => '検索に失敗しました。接続を確認してもう一度お試しください。',
'explore.status.airing' => '放送中',
'explore.status.ended' => '放送終了',
'explore.status.canceled' => '打ち切り',
'explore.status.upcoming' => '放送予定',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ja'))(n, other: '${n}', ),
'explore.cast' => 'キャスト',
'explore.characters' => 'キャラクター',
'explore.addToWatchlist' => 'ウォッチリストに追加',
'explore.removeFromWatchlist' => 'ウォッチリストから削除',
'explore.watchlistUpdateFailed' => 'ウォッチリストを更新できませんでした',
'explore.notInLibrary' => 'ライブラリにありません',
'explore.inTheseLibraries' => 'これらのライブラリにあります',
'explore.availableOn' => ({required Object server}) => '${server}で視聴可能',
'explore.checkingLibrary' => 'ライブラリを確認中...',
'explore.emptyTitle' => 'まだ何もありません',
'explore.emptyMessage' => ({required Object source}) => '${source}にコンテンツが追加されると、ここに表示されます。',
'liveTv.title' => 'ライブTV', 'liveTv.title' => 'ライブTV',
'liveTv.guide' => '番組表', 'liveTv.guide' => '番組表',
'liveTv.noChannels' => 'チャンネルがありません', 'liveTv.noChannels' => 'チャンネルがありません',
@@ -2985,6 +3130,8 @@ extension on TranslationsJa {
'downloads.cancelledDownloadMessage' => 'このダウンロードはキャンセルされました。どうしますか?', 'downloads.cancelledDownloadMessage' => 'このダウンロードはキャンセルされました。どうしますか?',
'downloads.allEpisodesAlreadyDownloaded' => 'すべてのエピソードはすでにダウンロード済みです', 'downloads.allEpisodesAlreadyDownloaded' => 'すべてのエピソードはすでにダウンロード済みです',
'downloads.resumeDownload' => 'ダウンロードを再開', 'downloads.resumeDownload' => 'ダウンロードを再開',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'キャンセルされたダウンロード', 'downloads.cancelledDownload' => 'キャンセルされたダウンロード',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file}${status}を同期中)', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file}${status}を同期中)',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} をダウンロード済み — クリックして完了', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} をダウンロード済み — クリックして完了',
@@ -3021,8 +3168,6 @@ extension on TranslationsJa {
'downloads.noSyncRules' => '同期ルールなし', 'downloads.noSyncRules' => '同期ルールなし',
'downloads.manageSyncRule' => '同期を管理', 'downloads.manageSyncRule' => '同期を管理',
'downloads.editEpisodeCount' => 'エピソード数', 'downloads.editEpisodeCount' => 'エピソード数',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => '同期フィルター', 'downloads.editSyncFilter' => '同期フィルター',
'downloads.syncAllItems' => 'すべてのアイテムを同期中', 'downloads.syncAllItems' => 'すべてのアイテムを同期中',
'downloads.syncUnwatchedItems' => '未視聴のアイテムを同期中', 'downloads.syncUnwatchedItems' => '未視聴のアイテムを同期中',
@@ -3271,39 +3416,70 @@ extension on TranslationsJa {
'trakt.scrobbleDescription' => '再生中に再生・一時停止・停止イベントを Trakt に送信します。', 'trakt.scrobbleDescription' => '再生中に再生・一時停止・停止イベントを Trakt に送信します。',
'trakt.watchedSync' => '視聴済みステータスを同期', 'trakt.watchedSync' => '視聴済みステータスを同期',
'trakt.watchedSyncDescription' => 'Plezy で項目を視聴済みにすると、Trakt でも視聴済みになります。', 'trakt.watchedSyncDescription' => 'Plezy で項目を視聴済みにすると、Trakt でも視聴済みになります。',
'trackers.title' => 'トラッカー', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => '視聴進捗をTraktや他のサービスと同期します。', 'seerr.connectTitle' => 'Seerrに接続',
'trackers.notConnected' => '未接続', 'seerr.serverUrl' => 'サーバー URL',
'trackers.connectedAs' => ({required Object username}) => '@${username} として接続済み', 'seerr.serverUrlHelper' => 'Seerr インスタンスのアドレス',
'trackers.scrobble' => '進捗を自動で記録', 'seerr.checkServer' => '続ける',
'trackers.scrobbleDescription' => 'エピソードや映画を見終えたときにリストを更新します。', 'seerr.signInWithJellyfin' => 'Jellyfinでサインイン',
'trackers.disconnectConfirm' => ({required Object service}) => '${service} の接続を解除しますか?', 'seerr.signInWithEmby' => 'Embyでサインイン',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezyは${service}の更新を停止します。いつでも再接続できます。', 'seerr.signInWithLocal' => 'ローカルアカウントを使う',
'trackers.connectFailed' => ({required Object service}) => '${service} に接続できませんでした。もう一度お試しください。', 'seerr.email' => 'メールアドレス',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'この Seerr インスタンスには Plezy が対応しているサインイン方法がありません。',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'インスタンス',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Seerr の接続を解除しますか?',
'trackers.deviceCode.title' => ({required Object service}) => '${service} で Plezy を有効化', 'seerr.disconnectConfirmBody' => 'Plezy はこの Seerr インスタンスの情報を削除します。いつでも再接続できます。',
'trackers.deviceCode.body' => ({required Object url}) => '${url} にアクセスしてこのコードを入力:', 'seerr.request' => 'リクエスト',
'trackers.deviceCode.openToActivate' => ({required Object service}) => '${service} を開いて有効化', 'seerr.request4k' => '4K でリクエスト',
'trackers.deviceCode.waitingForAuthorization' => '認証を待っています…', 'seerr.seasons' => 'シーズン',
'trackers.deviceCode.codeCopied' => 'コードをコピーしました', 'seerr.allSeasons' => '全シーズン',
'trackers.oauthProxy.title' => ({required Object service}) => '${service} にサインイン', 'seerr.advancedOptions' => '詳細',
'trackers.oauthProxy.body' => 'このQRコードをスキャンするか、任意のデバイスでURLを開いてください。', 'seerr.destinationServer' => '宛先サーバー',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => '${service} を開いてサインイン', 'seerr.qualityProfile' => '画質プロファイル',
'trackers.oauthProxy.urlCopied' => 'URLをコピーしました', 'seerr.rootFolder' => 'ルートフォルダ',
'trackers.libraryFilter.title' => 'ライブラリフィルター', 'seerr.languageProfile' => '言語プロファイル',
'trackers.libraryFilter.subtitleAllSyncing' => 'すべてのライブラリを同期中', 'seerr.requestSubmitted' => 'リクエストを送信しました',
'trackers.libraryFilter.subtitleNoneSyncing' => '同期なし', 'seerr.requestFailed' => ({required Object error}) => 'リクエストに失敗しました: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} 件をブロック', 'seerr.requestsLoadFailed' => 'リクエストオプションを読み込めませんでした',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} 件を許可', 'seerr.nothingToRequest' => 'すべてすでに利用可能またはリクエスト済みです。',
'trackers.libraryFilter.mode' => 'フィルターモード', 'seerr.statusAvailable' => '利用可能',
'trackers.libraryFilter.modeBlacklist' => 'ブロックリスト', 'seerr.statusPartiallyAvailable' => '一部利用可能',
'trackers.libraryFilter.modeWhitelist' => '許可リスト', 'seerr.statusRequested' => 'リクエスト済み',
'trackers.libraryFilter.modeHintBlacklist' => '下でチェックしたライブラリ以外をすべて同期します。', 'seerr.statusProcessing' => '処理中',
'trackers.libraryFilter.modeHintWhitelist' => '下でチェックしたライブラリのみ同期します。', 'services.title' => 'サービス',
'trackers.libraryFilter.libraries' => 'ライブラリ', 'services.hubSubtitle' => '視聴の進捗を同期して、新しいタイトルをリクエストします。',
'trackers.libraryFilter.noLibraries' => '利用できるライブラリがありません', 'services.notConnected' => '未接続',
'services.connectedAs' => ({required Object username}) => '@${username} として接続済み',
'services.scrobble' => '進捗を自動で記録',
'services.scrobbleDescription' => 'エピソードや映画を見終えたときにリストを更新します。',
'services.disconnectConfirm' => ({required Object service}) => '${service} の接続を解除しますか?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezyは${service}の更新を停止します。いつでも再接続できます。',
'services.connectFailed' => ({required Object service}) => '${service} に接続できませんでした。もう一度お試しください。',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => '${service} で Plezy を有効化',
'services.deviceCode.body' => ({required Object url}) => '${url} にアクセスしてこのコードを入力:',
'services.deviceCode.openToActivate' => ({required Object service}) => '${service} を開いて有効化',
'services.deviceCode.waitingForAuthorization' => '認証を待っています…',
'services.deviceCode.codeCopied' => 'コードをコピーしました',
'services.oauthProxy.title' => ({required Object service}) => '${service} にサインイン',
'services.oauthProxy.body' => 'このQRコードをスキャンするか、任意のデバイスでURLを開いてください。',
'services.oauthProxy.openToSignIn' => ({required Object service}) => '${service} を開いてサインイン',
'services.oauthProxy.urlCopied' => 'URLをコピーしました',
'services.libraryFilter.title' => 'ライブラリフィルター',
'services.libraryFilter.subtitleAllSyncing' => 'すべてのライブラリを同期中',
'services.libraryFilter.subtitleNoneSyncing' => '同期なし',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} 件をブロック',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} 件を許可',
'services.libraryFilter.mode' => 'フィルターモード',
'services.libraryFilter.modeBlacklist' => 'ブロックリスト',
'services.libraryFilter.modeWhitelist' => '許可リスト',
'services.libraryFilter.modeHintBlacklist' => '下でチェックしたライブラリ以外をすべて同期します。',
'services.libraryFilter.modeHintWhitelist' => '下でチェックしたライブラリのみ同期します。',
'services.libraryFilter.libraries' => 'ライブラリ',
'services.libraryFilter.noLibraries' => '利用できるライブラリがありません',
'addServer.addJellyfinTitle' => 'Jellyfinサーバーを追加', 'addServer.addJellyfinTitle' => 'Jellyfinサーバーを追加',
'addServer.serverUrls' => 'サーバーURL', 'addServer.serverUrls' => 'サーバーURL',
'addServer.serverUrlsHelper' => '複数のURLをカンマ区切りで入力できます。', 'addServer.serverUrlsHelper' => '複数のURLをカンマ区切りで入力できます。',
+239 -63
View File
@@ -69,6 +69,7 @@ class TranslationsKo extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsKo logs = _TranslationsLogsKo._(_root); @override late final _TranslationsLogsKo logs = _TranslationsLogsKo._(_root);
@override late final _TranslationsLicensesKo licenses = _TranslationsLicensesKo._(_root); @override late final _TranslationsLicensesKo licenses = _TranslationsLicensesKo._(_root);
@override late final _TranslationsNavigationKo navigation = _TranslationsNavigationKo._(_root); @override late final _TranslationsNavigationKo navigation = _TranslationsNavigationKo._(_root);
@override late final _TranslationsExploreKo explore = _TranslationsExploreKo._(_root);
@override late final _TranslationsLiveTvKo liveTv = _TranslationsLiveTvKo._(_root); @override late final _TranslationsLiveTvKo liveTv = _TranslationsLiveTvKo._(_root);
@override late final _TranslationsCollectionsKo collections = _TranslationsCollectionsKo._(_root); @override late final _TranslationsCollectionsKo collections = _TranslationsCollectionsKo._(_root);
@override late final _TranslationsPlaylistsKo playlists = _TranslationsPlaylistsKo._(_root); @override late final _TranslationsPlaylistsKo playlists = _TranslationsPlaylistsKo._(_root);
@@ -84,7 +85,8 @@ class TranslationsKo extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenKo matchScreen = _TranslationsMatchScreenKo._(_root); @override late final _TranslationsMatchScreenKo matchScreen = _TranslationsMatchScreenKo._(_root);
@override late final _TranslationsServerTasksKo serverTasks = _TranslationsServerTasksKo._(_root); @override late final _TranslationsServerTasksKo serverTasks = _TranslationsServerTasksKo._(_root);
@override late final _TranslationsTraktKo trakt = _TranslationsTraktKo._(_root); @override late final _TranslationsTraktKo trakt = _TranslationsTraktKo._(_root);
@override late final _TranslationsTrackersKo trackers = _TranslationsTrackersKo._(_root); @override late final _TranslationsSeerrKo seerr = _TranslationsSeerrKo._(_root);
@override late final _TranslationsServicesKo services = _TranslationsServicesKo._(_root);
@override late final _TranslationsAddServerKo addServer = _TranslationsAddServerKo._(_root); @override late final _TranslationsAddServerKo addServer = _TranslationsAddServerKo._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsKo extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Discord에서 시청 중인 콘텐츠 표시'; @override String get discordRichPresenceDescription => 'Discord에서 시청 중인 콘텐츠 표시';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Trakt와 시청 기록 동기화'; @override String get traktDescription => 'Trakt와 시청 기록 동기화';
@override String get trackers => '트래커'; @override String get services => '서비스';
@override String get trackersDescription => 'Trakt, MyAnimeList, AniList 및 Simkl에 진행률 동기화'; @override String get servicesDescription => 'Trakt, MyAnimeList, Seerr 등 연결';
@override String get companionRemoteServer => '컴패니언 리모트 서버'; @override String get companionRemoteServer => '컴패니언 리모트 서버';
@override String get companionRemoteServerDescription => '네트워크의 모바일 기기가 이 앱을 제어할 수 있도록 허용'; @override String get companionRemoteServerDescription => '네트워크의 모바일 기기가 이 앱을 제어할 수 있도록 허용';
@override String get autoPip => '자동 PIP 모드'; @override String get autoPip => '자동 PIP 모드';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetKo extends TranslationsRateSheetEn {
@override String get setScore => '점수 설정'; @override String get setScore => '점수 설정';
@override String get saved => '저장됨'; @override String get saved => '저장됨';
@override String get notAvailable => '일치 항목 없음'; @override String get notAvailable => '일치 항목 없음';
@override String get noConnectedTrackers => '설정에서 트래커를 연결하면 거기에도 평가할 수 있습니다.'; @override String get noConnectedServices => '평가하려면 설정에서 서비스를 연결하세요.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,38 @@ class _TranslationsNavigationKo extends TranslationsNavigationEn {
@override String get libraries => '미디어 라이브러리'; @override String get libraries => '미디어 라이브러리';
@override String get downloads => '다운로드'; @override String get downloads => '다운로드';
@override String get liveTv => '실시간 TV'; @override String get liveTv => '실시간 TV';
@override String get explore => '탐색';
}
// Path: explore
class _TranslationsExploreKo extends TranslationsExploreEn {
_TranslationsExploreKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get title => '탐색';
@override String get selectSource => '소스 선택';
@override late final _TranslationsExploreRowsKo rows = _TranslationsExploreRowsKo._(_root);
@override String searchHint({required Object source}) => '${source}에서 검색';
@override String searchEmpty({required Object query}) => '${query}」에 대한 결과가 없습니다';
@override String searchPrompt({required Object source}) => '${source}에서 영화와 TV 프로그램을 검색하세요.';
@override String get searchFailed => '검색에 실패했습니다. 연결을 확인하고 다시 시도하세요.';
@override late final _TranslationsExploreStatusKo status = _TranslationsExploreStatusKo._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ko'))(n,
other: '${n}',
);
@override String get cast => '출연진';
@override String get characters => '캐릭터';
@override String get addToWatchlist => '관심 목록에 추가';
@override String get removeFromWatchlist => '관심 목록에서 제거';
@override String get watchlistUpdateFailed => '관심 목록을 업데이트하지 못했습니다';
@override String get notInLibrary => '라이브러리에 없음';
@override String get inTheseLibraries => '이 라이브러리에 있음';
@override String availableOn({required Object server}) => '${server}에서 이용 가능';
@override String get checkingLibrary => '라이브러리 확인 중...';
@override String get emptyTitle => '아직 아무것도 없습니다';
@override String emptyMessage({required Object source}) => '${source}에 콘텐츠가 추가되면 여기에 표시됩니다.';
} }
// Path: liveTv // Path: liveTv
@@ -1645,15 +1679,54 @@ class _TranslationsTraktKo extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Plezy에서 시청 완료로 표시한 항목이 Trakt에도 시청 완료로 표시됩니다.'; @override String get watchedSyncDescription => 'Plezy에서 시청 완료로 표시한 항목이 Trakt에도 시청 완료로 표시됩니다.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersKo extends TranslationsTrackersEn { class _TranslationsSeerrKo extends TranslationsSeerrEn {
_TranslationsTrackersKo._(TranslationsKo root) : this._root = root, super.internal(root); _TranslationsSeerrKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field final TranslationsKo _root; // ignore: unused_field
// Translations // Translations
@override String get title => '트래커'; @override String get title => 'Seerr';
@override String get hubSubtitle => '시청 진행률을 Trakt 및 다른 서비스와 동기화합니다.'; @override String get connectTitle => 'Seerr에 연결';
@override String get serverUrl => '서버 URL';
@override String get serverUrlHelper => 'Seerr 인스턴스의 주소';
@override String get checkServer => '계속';
@override String get signInWithJellyfin => 'Jellyfin으로 로그인';
@override String get signInWithEmby => 'Emby로 로그인';
@override String get signInWithLocal => '로컬 계정 사용';
@override String get email => '이메일';
@override String get noSignInMethods => '이 Seerr 인스턴스에는 Plezy가 지원하는 로그인 방법이 없습니다.';
@override String get instance => '인스턴스';
@override String get disconnectConfirm => 'Seerr 연결을 해제하시겠습니까?';
@override String get disconnectConfirmBody => 'Plezy가 이 Seerr 인스턴스를 삭제합니다. 언제든 다시 연결할 수 있습니다.';
@override String get request => '요청';
@override String get request4k => '4K로 요청';
@override String get seasons => '시즌';
@override String get allSeasons => '모든 시즌';
@override String get advancedOptions => '고급';
@override String get destinationServer => '대상 서버';
@override String get qualityProfile => '화질 프로파일';
@override String get rootFolder => '루트 폴더';
@override String get languageProfile => '언어 프로파일';
@override String get requestSubmitted => '요청을 제출했습니다';
@override String requestFailed({required Object error}) => '요청 실패: ${error}';
@override String get requestsLoadFailed => '요청 옵션을 불러올 수 없습니다';
@override String get nothingToRequest => '모두 이미 사용 가능하거나 요청되었습니다.';
@override String get statusAvailable => '사용 가능';
@override String get statusPartiallyAvailable => '일부 사용 가능';
@override String get statusRequested => '요청됨';
@override String get statusProcessing => '처리 중';
}
// Path: services
class _TranslationsServicesKo extends TranslationsServicesEn {
_TranslationsServicesKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get title => '서비스';
@override String get hubSubtitle => '시청 진행률을 동기화하고 새 작품을 요청하세요.';
@override String get notConnected => '연결되지 않음'; @override String get notConnected => '연결되지 않음';
@override String connectedAs({required Object username}) => '@${username} 로 연결됨'; @override String connectedAs({required Object username}) => '@${username} 로 연결됨';
@override String get scrobble => '진행률 자동 추적'; @override String get scrobble => '진행률 자동 추적';
@@ -1661,10 +1734,10 @@ class _TranslationsTrackersKo extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => '${service} 연결을 해제하시겠습니까?'; @override String disconnectConfirm({required Object service}) => '${service} 연결을 해제하시겠습니까?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy가 ${service} 업데이트를 중지합니다. 언제든 다시 연결할 수 있습니다.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy가 ${service} 업데이트를 중지합니다. 언제든 다시 연결할 수 있습니다.';
@override String connectFailed({required Object service}) => '${service}에 연결할 수 없습니다. 다시 시도하세요.'; @override String connectFailed({required Object service}) => '${service}에 연결할 수 없습니다. 다시 시도하세요.';
@override late final _TranslationsTrackersServicesKo services = _TranslationsTrackersServicesKo._(_root); @override late final _TranslationsServicesNamesKo names = _TranslationsServicesNamesKo._(_root);
@override late final _TranslationsTrackersDeviceCodeKo deviceCode = _TranslationsTrackersDeviceCodeKo._(_root); @override late final _TranslationsServicesDeviceCodeKo deviceCode = _TranslationsServicesDeviceCodeKo._(_root);
@override late final _TranslationsTrackersOauthProxyKo oauthProxy = _TranslationsTrackersOauthProxyKo._(_root); @override late final _TranslationsServicesOauthProxyKo oauthProxy = _TranslationsServicesOauthProxyKo._(_root);
@override late final _TranslationsTrackersLibraryFilterKo libraryFilter = _TranslationsTrackersLibraryFilterKo._(_root); @override late final _TranslationsServicesLibraryFilterKo libraryFilter = _TranslationsServicesLibraryFilterKo._(_root);
} }
// Path: addServer // Path: addServer
@@ -1831,6 +1904,41 @@ class _TranslationsLibrariesSortLabelsKo extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => '최신 에피소드 추가일'; @override String get lastEpisodeDateAdded => '최신 에피소드 추가일';
} }
// Path: explore.rows
class _TranslationsExploreRowsKo extends TranslationsExploreRowsEn {
_TranslationsExploreRowsKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get watchlist => '관심 목록';
@override String get recommendedMovies => '추천 영화';
@override String get recommendedShows => '추천 TV 프로그램';
@override String get trendingMovies => '지금 뜨는 영화';
@override String get trendingShows => '지금 뜨는 TV 프로그램';
@override String get popularMovies => '인기 영화';
@override String get popularShows => '인기 TV 프로그램';
@override String get suggestedAnime => '추천 애니메이션';
@override String get airingAnime => '방영 중인 인기 애니메이션';
@override String get popularAnime => '가장 인기 있는 애니메이션';
@override String get trending => '지금 뜨는 콘텐츠';
@override String get upcomingMovies => '개봉 예정 영화';
@override String get upcomingShows => '방영 예정 TV 프로그램';
}
// Path: explore.status
class _TranslationsExploreStatusKo extends TranslationsExploreStatusEn {
_TranslationsExploreStatusKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field
// Translations
@override String get airing => '방영 중';
@override String get ended => '종영';
@override String get canceled => '취소됨';
@override String get upcoming => '방영 예정';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionKo extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionKo extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionKo._(TranslationsKo root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionKo._(TranslationsKo root) : this._root = root, super.internal(root);
@@ -1927,9 +2035,9 @@ class _TranslationsCompanionRemoteErrorsKo extends TranslationsCompanionRemoteEr
@override String get connectionLost => '연결이 끊어졌습니다'; @override String get connectionLost => '연결이 끊어졌습니다';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesKo extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesKo extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesKo._(TranslationsKo root) : this._root = root, super.internal(root); _TranslationsServicesNamesKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field final TranslationsKo _root; // ignore: unused_field
@@ -1937,11 +2045,12 @@ class _TranslationsTrackersServicesKo extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeKo extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeKo extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeKo._(TranslationsKo root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field final TranslationsKo _root; // ignore: unused_field
@@ -1953,9 +2062,9 @@ class _TranslationsTrackersDeviceCodeKo extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => '코드가 복사되었습니다'; @override String get codeCopied => '코드가 복사되었습니다';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyKo extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyKo extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyKo._(TranslationsKo root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field final TranslationsKo _root; // ignore: unused_field
@@ -1966,9 +2075,9 @@ class _TranslationsTrackersOauthProxyKo extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL이 복사되었습니다'; @override String get urlCopied => 'URL이 복사되었습니다';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterKo extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterKo extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterKo._(TranslationsKo root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterKo._(TranslationsKo root) : this._root = root, super.internal(root);
final TranslationsKo _root; // ignore: unused_field final TranslationsKo _root; // ignore: unused_field
@@ -2232,8 +2341,8 @@ extension on TranslationsKo {
'settings.discordRichPresenceDescription' => 'Discord에서 시청 중인 콘텐츠 표시', 'settings.discordRichPresenceDescription' => 'Discord에서 시청 중인 콘텐츠 표시',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Trakt와 시청 기록 동기화', 'settings.traktDescription' => 'Trakt와 시청 기록 동기화',
'settings.trackers' => '트래커', 'settings.services' => '서비스',
'settings.trackersDescription' => 'Trakt, MyAnimeList, AniList 및 Simkl에 진행률 동기화', 'settings.servicesDescription' => 'Trakt, MyAnimeList, Seerr 등 연결',
'settings.companionRemoteServer' => '컴패니언 리모트 서버', 'settings.companionRemoteServer' => '컴패니언 리모트 서버',
'settings.companionRemoteServerDescription' => '네트워크의 모바일 기기가 이 앱을 제어할 수 있도록 허용', 'settings.companionRemoteServerDescription' => '네트워크의 모바일 기기가 이 앱을 제어할 수 있도록 허용',
'settings.autoPip' => '자동 PIP 모드', 'settings.autoPip' => '자동 PIP 모드',
@@ -2389,7 +2498,7 @@ extension on TranslationsKo {
'rateSheet.setScore' => '점수 설정', 'rateSheet.setScore' => '점수 설정',
'rateSheet.saved' => '저장됨', 'rateSheet.saved' => '저장됨',
'rateSheet.notAvailable' => '일치 항목 없음', 'rateSheet.notAvailable' => '일치 항목 없음',
'rateSheet.noConnectedTrackers' => '설정에서 트래커를 연결하면 거기에도 평가할 수 있습니다.', 'rateSheet.noConnectedServices' => '평가하려면 설정에서 서비스를 연결하세요.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, 영화', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, 영화',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV 프로그램', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV 프로그램',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2770,6 +2879,42 @@ extension on TranslationsKo {
'navigation.libraries' => '미디어 라이브러리', 'navigation.libraries' => '미디어 라이브러리',
'navigation.downloads' => '다운로드', 'navigation.downloads' => '다운로드',
'navigation.liveTv' => '실시간 TV', 'navigation.liveTv' => '실시간 TV',
'navigation.explore' => '탐색',
'explore.title' => '탐색',
'explore.selectSource' => '소스 선택',
'explore.rows.watchlist' => '관심 목록',
'explore.rows.recommendedMovies' => '추천 영화',
'explore.rows.recommendedShows' => '추천 TV 프로그램',
'explore.rows.trendingMovies' => '지금 뜨는 영화',
'explore.rows.trendingShows' => '지금 뜨는 TV 프로그램',
'explore.rows.popularMovies' => '인기 영화',
'explore.rows.popularShows' => '인기 TV 프로그램',
'explore.rows.suggestedAnime' => '추천 애니메이션',
'explore.rows.airingAnime' => '방영 중인 인기 애니메이션',
'explore.rows.popularAnime' => '가장 인기 있는 애니메이션',
'explore.rows.trending' => '지금 뜨는 콘텐츠',
'explore.rows.upcomingMovies' => '개봉 예정 영화',
'explore.rows.upcomingShows' => '방영 예정 TV 프로그램',
'explore.searchHint' => ({required Object source}) => '${source}에서 검색',
'explore.searchEmpty' => ({required Object query}) => '${query}」에 대한 결과가 없습니다',
'explore.searchPrompt' => ({required Object source}) => '${source}에서 영화와 TV 프로그램을 검색하세요.',
'explore.searchFailed' => '검색에 실패했습니다. 연결을 확인하고 다시 시도하세요.',
'explore.status.airing' => '방영 중',
'explore.status.ended' => '종영',
'explore.status.canceled' => '취소됨',
'explore.status.upcoming' => '방영 예정',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ko'))(n, other: '${n}', ),
'explore.cast' => '출연진',
'explore.characters' => '캐릭터',
'explore.addToWatchlist' => '관심 목록에 추가',
'explore.removeFromWatchlist' => '관심 목록에서 제거',
'explore.watchlistUpdateFailed' => '관심 목록을 업데이트하지 못했습니다',
'explore.notInLibrary' => '라이브러리에 없음',
'explore.inTheseLibraries' => '이 라이브러리에 있음',
'explore.availableOn' => ({required Object server}) => '${server}에서 이용 가능',
'explore.checkingLibrary' => '라이브러리 확인 중...',
'explore.emptyTitle' => '아직 아무것도 없습니다',
'explore.emptyMessage' => ({required Object source}) => '${source}에 콘텐츠가 추가되면 여기에 표시됩니다.',
'liveTv.title' => '실시간 TV', 'liveTv.title' => '실시간 TV',
'liveTv.guide' => '편성표', 'liveTv.guide' => '편성표',
'liveTv.noChannels' => '사용 가능한 채널이 없습니다', 'liveTv.noChannels' => '사용 가능한 채널이 없습니다',
@@ -2985,6 +3130,8 @@ extension on TranslationsKo {
'downloads.cancelledDownloadMessage' => '이 다운로드가 취소되었습니다. 어떻게 하시겠습니까?', 'downloads.cancelledDownloadMessage' => '이 다운로드가 취소되었습니다. 어떻게 하시겠습니까?',
'downloads.allEpisodesAlreadyDownloaded' => '모든 에피소드가 이미 다운로드되었습니다', 'downloads.allEpisodesAlreadyDownloaded' => '모든 에피소드가 이미 다운로드되었습니다',
'downloads.resumeDownload' => '다운로드 재개', 'downloads.resumeDownload' => '다운로드 재개',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => '취소된 다운로드', 'downloads.cancelledDownload' => '취소된 다운로드',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (${status} 동기화 중)', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (${status} 동기화 중)',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} 다운로드됨 — 클릭하여 완료', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} 다운로드됨 — 클릭하여 완료',
@@ -3021,8 +3168,6 @@ extension on TranslationsKo {
'downloads.noSyncRules' => '동기화 규칙 없음', 'downloads.noSyncRules' => '동기화 규칙 없음',
'downloads.manageSyncRule' => '동기화 관리', 'downloads.manageSyncRule' => '동기화 관리',
'downloads.editEpisodeCount' => '에피소드 수', 'downloads.editEpisodeCount' => '에피소드 수',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => '동기화 필터', 'downloads.editSyncFilter' => '동기화 필터',
'downloads.syncAllItems' => '모든 항목 동기화 중', 'downloads.syncAllItems' => '모든 항목 동기화 중',
'downloads.syncUnwatchedItems' => '시청하지 않은 항목 동기화 중', 'downloads.syncUnwatchedItems' => '시청하지 않은 항목 동기화 중',
@@ -3271,39 +3416,70 @@ extension on TranslationsKo {
'trakt.scrobbleDescription' => '재생 중 재생, 일시정지, 정지 이벤트를 Trakt로 전송합니다.', 'trakt.scrobbleDescription' => '재생 중 재생, 일시정지, 정지 이벤트를 Trakt로 전송합니다.',
'trakt.watchedSync' => '시청 상태 동기화', 'trakt.watchedSync' => '시청 상태 동기화',
'trakt.watchedSyncDescription' => 'Plezy에서 시청 완료로 표시한 항목이 Trakt에도 시청 완료로 표시됩니다.', 'trakt.watchedSyncDescription' => 'Plezy에서 시청 완료로 표시한 항목이 Trakt에도 시청 완료로 표시됩니다.',
'trackers.title' => '트래커', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => '시청 진행률을 Trakt 및 다른 서비스와 동기화합니다.', 'seerr.connectTitle' => 'Seerr에 연결',
'trackers.notConnected' => '연결되지 않음', 'seerr.serverUrl' => '서버 URL',
'trackers.connectedAs' => ({required Object username}) => '@${username} 로 연결됨', 'seerr.serverUrlHelper' => 'Seerr 인스턴스의 주소',
'trackers.scrobble' => '진행률 자동 추적', 'seerr.checkServer' => '계속',
'trackers.scrobbleDescription' => '에피소드나 영화를 시청하면 목록을 업데이트합니다.', 'seerr.signInWithJellyfin' => 'Jellyfin으로 로그인',
'trackers.disconnectConfirm' => ({required Object service}) => '${service} 연결을 해제하시겠습니까?', 'seerr.signInWithEmby' => 'Emby로 로그인',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy가 ${service} 업데이트를 중지합니다. 언제든 다시 연결할 수 있습니다.', 'seerr.signInWithLocal' => '로컬 계정 사용',
'trackers.connectFailed' => ({required Object service}) => '${service}에 연결할 수 없습니다. 다시 시도하세요.', 'seerr.email' => '이메일',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => '이 Seerr 인스턴스에는 Plezy가 지원하는 로그인 방법이 없습니다.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => '인스턴스',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Seerr 연결을 해제하시겠습니까?',
'trackers.deviceCode.title' => ({required Object service}) => '${service}에서 Plezy 활성화', 'seerr.disconnectConfirmBody' => 'Plezy가 이 Seerr 인스턴스를 삭제합니다. 언제든 다시 연결할 수 있습니다.',
'trackers.deviceCode.body' => ({required Object url}) => '${url}을 방문하여 이 코드를 입력하세요:', 'seerr.request' => '요청',
'trackers.deviceCode.openToActivate' => ({required Object service}) => '활성화하려면 ${service} 열기', 'seerr.request4k' => '4K로 요청',
'trackers.deviceCode.waitingForAuthorization' => '인증을 기다리는 중…', 'seerr.seasons' => '시즌',
'trackers.deviceCode.codeCopied' => '코드가 복사되었습니다', 'seerr.allSeasons' => '모든 시즌',
'trackers.oauthProxy.title' => ({required Object service}) => '${service}에 로그인', 'seerr.advancedOptions' => '고급',
'trackers.oauthProxy.body' => '이 QR 코드를 스캔하거나 아무 기기에서 URL을 여세요.', 'seerr.destinationServer' => '대상 서버',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => '로그인하려면 ${service} 열기', 'seerr.qualityProfile' => '화질 프로파일',
'trackers.oauthProxy.urlCopied' => 'URL이 복사되었습니다', 'seerr.rootFolder' => '루트 폴더',
'trackers.libraryFilter.title' => '라이브러리 필터', 'seerr.languageProfile' => '언어 프로파일',
'trackers.libraryFilter.subtitleAllSyncing' => '모든 라이브러리 동기화 중', 'seerr.requestSubmitted' => '요청을 제출했습니다',
'trackers.libraryFilter.subtitleNoneSyncing' => '동기화 안 함', 'seerr.requestFailed' => ({required Object error}) => '요청 실패: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count}개 차단됨', 'seerr.requestsLoadFailed' => '요청 옵션을 불러올 수 없습니다',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count}개 허용됨', 'seerr.nothingToRequest' => '모두 이미 사용 가능하거나 요청되었습니다.',
'trackers.libraryFilter.mode' => '필터 모드', 'seerr.statusAvailable' => '사용 가능',
'trackers.libraryFilter.modeBlacklist' => '차단 목록', 'seerr.statusPartiallyAvailable' => '일부 사용 가능',
'trackers.libraryFilter.modeWhitelist' => '허용 목록', 'seerr.statusRequested' => '요청됨',
'trackers.libraryFilter.modeHintBlacklist' => '아래에 선택한 라이브러리를 제외한 모든 라이브러리를 동기화합니다.', 'seerr.statusProcessing' => '처리 중',
'trackers.libraryFilter.modeHintWhitelist' => '아래에 선택한 라이브러리만 동기화합니다.', 'services.title' => '서비스',
'trackers.libraryFilter.libraries' => '라이브러리', 'services.hubSubtitle' => '시청 진행률을 동기화하고 새 작품을 요청하세요.',
'trackers.libraryFilter.noLibraries' => '사용 가능한 라이브러리가 없습니다', 'services.notConnected' => '연결되지 않음',
'services.connectedAs' => ({required Object username}) => '@${username} 로 연결됨',
'services.scrobble' => '진행률 자동 추적',
'services.scrobbleDescription' => '에피소드나 영화를 시청하면 목록을 업데이트합니다.',
'services.disconnectConfirm' => ({required Object service}) => '${service} 연결을 해제하시겠습니까?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy가 ${service} 업데이트를 중지합니다. 언제든 다시 연결할 수 있습니다.',
'services.connectFailed' => ({required Object service}) => '${service}에 연결할 수 없습니다. 다시 시도하세요.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => '${service}에서 Plezy 활성화',
'services.deviceCode.body' => ({required Object url}) => '${url}을 방문하여 이 코드를 입력하세요:',
'services.deviceCode.openToActivate' => ({required Object service}) => '활성화하려면 ${service} 열기',
'services.deviceCode.waitingForAuthorization' => '인증을 기다리는 중…',
'services.deviceCode.codeCopied' => '코드가 복사되었습니다',
'services.oauthProxy.title' => ({required Object service}) => '${service}에 로그인',
'services.oauthProxy.body' => '이 QR 코드를 스캔하거나 아무 기기에서 URL을 여세요.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => '로그인하려면 ${service} 열기',
'services.oauthProxy.urlCopied' => 'URL이 복사되었습니다',
'services.libraryFilter.title' => '라이브러리 필터',
'services.libraryFilter.subtitleAllSyncing' => '모든 라이브러리 동기화 중',
'services.libraryFilter.subtitleNoneSyncing' => '동기화 안 함',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count}개 차단됨',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count}개 허용됨',
'services.libraryFilter.mode' => '필터 모드',
'services.libraryFilter.modeBlacklist' => '차단 목록',
'services.libraryFilter.modeWhitelist' => '허용 목록',
'services.libraryFilter.modeHintBlacklist' => '아래에 선택한 라이브러리를 제외한 모든 라이브러리를 동기화합니다.',
'services.libraryFilter.modeHintWhitelist' => '아래에 선택한 라이브러리만 동기화합니다.',
'services.libraryFilter.libraries' => '라이브러리',
'services.libraryFilter.noLibraries' => '사용 가능한 라이브러리가 없습니다',
'addServer.addJellyfinTitle' => 'Jellyfin 서버 추가', 'addServer.addJellyfinTitle' => 'Jellyfin 서버 추가',
'addServer.serverUrls' => '서버 URL', 'addServer.serverUrls' => '서버 URL',
'addServer.serverUrlsHelper' => '쉼표로 구분하여 여러 URL을 입력할 수 있습니다.', 'addServer.serverUrlsHelper' => '쉼표로 구분하여 여러 URL을 입력할 수 있습니다.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsNb extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsNb logs = _TranslationsLogsNb._(_root); @override late final _TranslationsLogsNb logs = _TranslationsLogsNb._(_root);
@override late final _TranslationsLicensesNb licenses = _TranslationsLicensesNb._(_root); @override late final _TranslationsLicensesNb licenses = _TranslationsLicensesNb._(_root);
@override late final _TranslationsNavigationNb navigation = _TranslationsNavigationNb._(_root); @override late final _TranslationsNavigationNb navigation = _TranslationsNavigationNb._(_root);
@override late final _TranslationsExploreNb explore = _TranslationsExploreNb._(_root);
@override late final _TranslationsLiveTvNb liveTv = _TranslationsLiveTvNb._(_root); @override late final _TranslationsLiveTvNb liveTv = _TranslationsLiveTvNb._(_root);
@override late final _TranslationsCollectionsNb collections = _TranslationsCollectionsNb._(_root); @override late final _TranslationsCollectionsNb collections = _TranslationsCollectionsNb._(_root);
@override late final _TranslationsPlaylistsNb playlists = _TranslationsPlaylistsNb._(_root); @override late final _TranslationsPlaylistsNb playlists = _TranslationsPlaylistsNb._(_root);
@@ -84,7 +85,8 @@ class TranslationsNb extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenNb matchScreen = _TranslationsMatchScreenNb._(_root); @override late final _TranslationsMatchScreenNb matchScreen = _TranslationsMatchScreenNb._(_root);
@override late final _TranslationsServerTasksNb serverTasks = _TranslationsServerTasksNb._(_root); @override late final _TranslationsServerTasksNb serverTasks = _TranslationsServerTasksNb._(_root);
@override late final _TranslationsTraktNb trakt = _TranslationsTraktNb._(_root); @override late final _TranslationsTraktNb trakt = _TranslationsTraktNb._(_root);
@override late final _TranslationsTrackersNb trackers = _TranslationsTrackersNb._(_root); @override late final _TranslationsSeerrNb seerr = _TranslationsSeerrNb._(_root);
@override late final _TranslationsServicesNb services = _TranslationsServicesNb._(_root);
@override late final _TranslationsAddServerNb addServer = _TranslationsAddServerNb._(_root); @override late final _TranslationsAddServerNb addServer = _TranslationsAddServerNb._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsNb extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Vis hva du ser på Discord'; @override String get discordRichPresenceDescription => 'Vis hva du ser på Discord';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Synkroniser visningshistorikk med Trakt'; @override String get traktDescription => 'Synkroniser visningshistorikk med Trakt';
@override String get trackers => 'Trackere'; @override String get services => 'Tjenester';
@override String get trackersDescription => 'Synkroniser fremdrift til Trakt, MyAnimeList, AniList og Simkl'; @override String get servicesDescription => 'Koble til Trakt, MyAnimeList, Seerr og mer';
@override String get companionRemoteServer => 'Companion Remote-server'; @override String get companionRemoteServer => 'Companion Remote-server';
@override String get companionRemoteServerDescription => 'Tillat mobilenheter på nettverket ditt å styre denne appen'; @override String get companionRemoteServerDescription => 'Tillat mobilenheter på nettverket ditt å styre denne appen';
@override String get autoPip => 'Auto bilde-i-bilde'; @override String get autoPip => 'Auto bilde-i-bilde';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetNb extends TranslationsRateSheetEn {
@override String get setScore => 'Sett en poengsum'; @override String get setScore => 'Sett en poengsum';
@override String get saved => 'Lagret'; @override String get saved => 'Lagret';
@override String get notAvailable => 'Ingen treff'; @override String get notAvailable => 'Ingen treff';
@override String get noConnectedTrackers => 'Koble til en sporer i Innstillinger for å vurdere der.'; @override String get noConnectedServices => 'Koble til en tjeneste i Innstillinger for å vurdere her.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationNb extends TranslationsNavigationEn {
@override String get libraries => 'Biblioteker'; @override String get libraries => 'Biblioteker';
@override String get downloads => 'Nedlastinger'; @override String get downloads => 'Nedlastinger';
@override String get liveTv => 'Direkte-TV'; @override String get liveTv => 'Direkte-TV';
@override String get explore => 'Utforsk';
}
// Path: explore
class _TranslationsExploreNb extends TranslationsExploreEn {
_TranslationsExploreNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field
// Translations
@override String get title => 'Utforsk';
@override String get selectSource => 'Velg kilde';
@override late final _TranslationsExploreRowsNb rows = _TranslationsExploreRowsNb._(_root);
@override String searchHint({required Object source}) => 'Søk i ${source}';
@override String searchEmpty({required Object query}) => 'Ingen treff for "${query}"';
@override String searchPrompt({required Object source}) => 'Søk etter filmer og serier på ${source}.';
@override String get searchFailed => 'Søk mislyktes. Sjekk tilkoblingen og prøv igjen.';
@override late final _TranslationsExploreStatusNb status = _TranslationsExploreStatusNb._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nb'))(n,
one: '${n} episode',
other: '${n} episoder',
);
@override String get cast => 'Skuespillere';
@override String get characters => 'Figurer';
@override String get addToWatchlist => 'Legg til i ønskeliste';
@override String get removeFromWatchlist => 'Fjern fra ønskeliste';
@override String get watchlistUpdateFailed => 'Kunne ikke oppdatere ønskelisten';
@override String get notInLibrary => 'Ikke i biblioteket ditt';
@override String get inTheseLibraries => 'I disse bibliotekene';
@override String availableOn({required Object server}) => 'Tilgjengelig på ${server}';
@override String get checkingLibrary => 'Sjekker biblioteket ditt...';
@override String get emptyTitle => 'Ingenting her ennå';
@override String emptyMessage({required Object source}) => 'Rader fra ${source} vises her når de har innhold.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktNb extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Når du markerer noe som sett i Plezy, markeres det også på Trakt.'; @override String get watchedSyncDescription => 'Når du markerer noe som sett i Plezy, markeres det også på Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersNb extends TranslationsTrackersEn { class _TranslationsSeerrNb extends TranslationsSeerrEn {
_TranslationsTrackersNb._(TranslationsNb root) : this._root = root, super.internal(root); _TranslationsSeerrNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field final TranslationsNb _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Trackere'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Synkroniser seerfremdrift med Trakt og andre tjenester.'; @override String get connectTitle => 'Koble til Seerr';
@override String get serverUrl => 'Server-URL';
@override String get serverUrlHelper => 'Adressen til Seerr-instansen din';
@override String get checkServer => 'Fortsett';
@override String get signInWithJellyfin => 'Logg inn med Jellyfin';
@override String get signInWithEmby => 'Logg inn med Emby';
@override String get signInWithLocal => 'Bruk en lokal konto';
@override String get email => 'E-post';
@override String get noSignInMethods => 'Denne Seerr-instansen tilbyr ingen innloggingsmetode som Plezy støtter.';
@override String get instance => 'Instans';
@override String get disconnectConfirm => 'Koble fra Seerr?';
@override String get disconnectConfirmBody => 'Plezy glemmer denne Seerr-instansen. Koble til igjen når som helst.';
@override String get request => 'Forespør';
@override String get request4k => 'Forespør i 4K';
@override String get seasons => 'Sesonger';
@override String get allSeasons => 'Alle sesonger';
@override String get advancedOptions => 'Avansert';
@override String get destinationServer => 'Målserver';
@override String get qualityProfile => 'Kvalitetsprofil';
@override String get rootFolder => 'Rotmappe';
@override String get languageProfile => 'Språkprofil';
@override String get requestSubmitted => 'Forespørsel sendt';
@override String requestFailed({required Object error}) => 'Forespørsel mislyktes: ${error}';
@override String get requestsLoadFailed => 'Kunne ikke laste forespørselsalternativer';
@override String get nothingToRequest => 'Alt er allerede tilgjengelig eller forespurt.';
@override String get statusAvailable => 'Tilgjengelig';
@override String get statusPartiallyAvailable => 'Delvis tilgjengelig';
@override String get statusRequested => 'Forespurt';
@override String get statusProcessing => 'Behandler';
}
// Path: services
class _TranslationsServicesNb extends TranslationsServicesEn {
_TranslationsServicesNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field
// Translations
@override String get title => 'Tjenester';
@override String get hubSubtitle => 'Synkroniser fremdrift og forespør nye titler.';
@override String get notConnected => 'Ikke tilkoblet'; @override String get notConnected => 'Ikke tilkoblet';
@override String connectedAs({required Object username}) => 'Tilkoblet som @${username}'; @override String connectedAs({required Object username}) => 'Tilkoblet som @${username}';
@override String get scrobble => 'Registrer fremdrift automatisk'; @override String get scrobble => 'Registrer fremdrift automatisk';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersNb extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Koble fra ${service}?'; @override String disconnectConfirm({required Object service}) => 'Koble fra ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy slutter å oppdatere ${service}. Koble til igjen når som helst.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy slutter å oppdatere ${service}. Koble til igjen når som helst.';
@override String connectFailed({required Object service}) => 'Kunne ikke koble til ${service}. Prøv igjen.'; @override String connectFailed({required Object service}) => 'Kunne ikke koble til ${service}. Prøv igjen.';
@override late final _TranslationsTrackersServicesNb services = _TranslationsTrackersServicesNb._(_root); @override late final _TranslationsServicesNamesNb names = _TranslationsServicesNamesNb._(_root);
@override late final _TranslationsTrackersDeviceCodeNb deviceCode = _TranslationsTrackersDeviceCodeNb._(_root); @override late final _TranslationsServicesDeviceCodeNb deviceCode = _TranslationsServicesDeviceCodeNb._(_root);
@override late final _TranslationsTrackersOauthProxyNb oauthProxy = _TranslationsTrackersOauthProxyNb._(_root); @override late final _TranslationsServicesOauthProxyNb oauthProxy = _TranslationsServicesOauthProxyNb._(_root);
@override late final _TranslationsTrackersLibraryFilterNb libraryFilter = _TranslationsTrackersLibraryFilterNb._(_root); @override late final _TranslationsServicesLibraryFilterNb libraryFilter = _TranslationsServicesLibraryFilterNb._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsNb extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Dato for sist lagt til episode'; @override String get lastEpisodeDateAdded => 'Dato for sist lagt til episode';
} }
// Path: explore.rows
class _TranslationsExploreRowsNb extends TranslationsExploreRowsEn {
_TranslationsExploreRowsNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Ønskeliste';
@override String get recommendedMovies => 'Anbefalte filmer';
@override String get recommendedShows => 'Anbefalte serier';
@override String get trendingMovies => 'Trending filmer';
@override String get trendingShows => 'Trending serier';
@override String get popularMovies => 'Populære filmer';
@override String get popularShows => 'Populære serier';
@override String get suggestedAnime => 'Foreslått anime';
@override String get airingAnime => 'Topp pågående anime';
@override String get popularAnime => 'Mest populære anime';
@override String get trending => 'Trending';
@override String get upcomingMovies => 'Kommende filmer';
@override String get upcomingShows => 'Kommende serier';
}
// Path: explore.status
class _TranslationsExploreStatusNb extends TranslationsExploreStatusEn {
_TranslationsExploreStatusNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field
// Translations
@override String get airing => 'Sendes';
@override String get ended => 'Avsluttet';
@override String get canceled => 'Avlyst';
@override String get upcoming => 'Kommende';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionNb extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionNb extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionNb._(TranslationsNb root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionNb._(TranslationsNb root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsNb extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Tilkobling mistet'; @override String get connectionLost => 'Tilkobling mistet';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesNb extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesNb extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesNb._(TranslationsNb root) : this._root = root, super.internal(root); _TranslationsServicesNamesNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field final TranslationsNb _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesNb extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeNb extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeNb extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeNb._(TranslationsNb root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field final TranslationsNb _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeNb extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Kode kopiert'; @override String get codeCopied => 'Kode kopiert';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyNb extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyNb extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyNb._(TranslationsNb root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field final TranslationsNb _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyNb extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL kopiert'; @override String get urlCopied => 'URL kopiert';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterNb extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterNb extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterNb._(TranslationsNb root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterNb._(TranslationsNb root) : this._root = root, super.internal(root);
final TranslationsNb _root; // ignore: unused_field final TranslationsNb _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsNb {
'settings.discordRichPresenceDescription' => 'Vis hva du ser på Discord', 'settings.discordRichPresenceDescription' => 'Vis hva du ser på Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Synkroniser visningshistorikk med Trakt', 'settings.traktDescription' => 'Synkroniser visningshistorikk med Trakt',
'settings.trackers' => 'Trackere', 'settings.services' => 'Tjenester',
'settings.trackersDescription' => 'Synkroniser fremdrift til Trakt, MyAnimeList, AniList og Simkl', 'settings.servicesDescription' => 'Koble til Trakt, MyAnimeList, Seerr og mer',
'settings.companionRemoteServer' => 'Companion Remote-server', 'settings.companionRemoteServer' => 'Companion Remote-server',
'settings.companionRemoteServerDescription' => 'Tillat mobilenheter på nettverket ditt å styre denne appen', 'settings.companionRemoteServerDescription' => 'Tillat mobilenheter på nettverket ditt å styre denne appen',
'settings.autoPip' => 'Auto bilde-i-bilde', 'settings.autoPip' => 'Auto bilde-i-bilde',
@@ -2390,7 +2500,7 @@ extension on TranslationsNb {
'rateSheet.setScore' => 'Sett en poengsum', 'rateSheet.setScore' => 'Sett en poengsum',
'rateSheet.saved' => 'Lagret', 'rateSheet.saved' => 'Lagret',
'rateSheet.notAvailable' => 'Ingen treff', 'rateSheet.notAvailable' => 'Ingen treff',
'rateSheet.noConnectedTrackers' => 'Koble til en sporer i Innstillinger for å vurdere der.', 'rateSheet.noConnectedServices' => 'Koble til en tjeneste i Innstillinger for å vurdere her.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV-serie', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV-serie',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsNb {
'navigation.libraries' => 'Biblioteker', 'navigation.libraries' => 'Biblioteker',
'navigation.downloads' => 'Nedlastinger', 'navigation.downloads' => 'Nedlastinger',
'navigation.liveTv' => 'Direkte-TV', 'navigation.liveTv' => 'Direkte-TV',
'navigation.explore' => 'Utforsk',
'explore.title' => 'Utforsk',
'explore.selectSource' => 'Velg kilde',
'explore.rows.watchlist' => 'Ønskeliste',
'explore.rows.recommendedMovies' => 'Anbefalte filmer',
'explore.rows.recommendedShows' => 'Anbefalte serier',
'explore.rows.trendingMovies' => 'Trending filmer',
'explore.rows.trendingShows' => 'Trending serier',
'explore.rows.popularMovies' => 'Populære filmer',
'explore.rows.popularShows' => 'Populære serier',
'explore.rows.suggestedAnime' => 'Foreslått anime',
'explore.rows.airingAnime' => 'Topp pågående anime',
'explore.rows.popularAnime' => 'Mest populære anime',
'explore.rows.trending' => 'Trending',
'explore.rows.upcomingMovies' => 'Kommende filmer',
'explore.rows.upcomingShows' => 'Kommende serier',
'explore.searchHint' => ({required Object source}) => 'Søk i ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Ingen treff for "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Søk etter filmer og serier på ${source}.',
'explore.searchFailed' => 'Søk mislyktes. Sjekk tilkoblingen og prøv igjen.',
'explore.status.airing' => 'Sendes',
'explore.status.ended' => 'Avsluttet',
'explore.status.canceled' => 'Avlyst',
'explore.status.upcoming' => 'Kommende',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nb'))(n, one: '${n} episode', other: '${n} episoder', ),
'explore.cast' => 'Skuespillere',
'explore.characters' => 'Figurer',
'explore.addToWatchlist' => 'Legg til i ønskeliste',
'explore.removeFromWatchlist' => 'Fjern fra ønskeliste',
'explore.watchlistUpdateFailed' => 'Kunne ikke oppdatere ønskelisten',
'explore.notInLibrary' => 'Ikke i biblioteket ditt',
'explore.inTheseLibraries' => 'I disse bibliotekene',
'explore.availableOn' => ({required Object server}) => 'Tilgjengelig på ${server}',
'explore.checkingLibrary' => 'Sjekker biblioteket ditt...',
'explore.emptyTitle' => 'Ingenting her ennå',
'explore.emptyMessage' => ({required Object source}) => 'Rader fra ${source} vises her når de har innhold.',
'liveTv.title' => 'Direkte-TV', 'liveTv.title' => 'Direkte-TV',
'liveTv.guide' => 'Programguide', 'liveTv.guide' => 'Programguide',
'liveTv.noChannels' => 'Ingen kanaler tilgjengelig', 'liveTv.noChannels' => 'Ingen kanaler tilgjengelig',
@@ -2986,6 +3132,8 @@ extension on TranslationsNb {
'downloads.cancelledDownloadMessage' => 'Denne nedlastingen ble avbrutt. Hva vil du gjøre?', 'downloads.cancelledDownloadMessage' => 'Denne nedlastingen ble avbrutt. Hva vil du gjøre?',
'downloads.allEpisodesAlreadyDownloaded' => 'Alle episoder er allerede lastet ned', 'downloads.allEpisodesAlreadyDownloaded' => 'Alle episoder er allerede lastet ned',
'downloads.resumeDownload' => 'Gjenoppta nedlasting', 'downloads.resumeDownload' => 'Gjenoppta nedlasting',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Avbrutt nedlasting', 'downloads.cancelledDownload' => 'Avbrutt nedlasting',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synkroniserer ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synkroniserer ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} lastet ned klikk for å fullføre', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} lastet ned klikk for å fullføre',
@@ -3022,8 +3170,6 @@ extension on TranslationsNb {
'downloads.noSyncRules' => 'Ingen synkroniseringsregler', 'downloads.noSyncRules' => 'Ingen synkroniseringsregler',
'downloads.manageSyncRule' => 'Administrer synkronisering', 'downloads.manageSyncRule' => 'Administrer synkronisering',
'downloads.editEpisodeCount' => 'Antall episoder', 'downloads.editEpisodeCount' => 'Antall episoder',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Synkroniseringsfilter', 'downloads.editSyncFilter' => 'Synkroniseringsfilter',
'downloads.syncAllItems' => 'Synkroniserer alle elementer', 'downloads.syncAllItems' => 'Synkroniserer alle elementer',
'downloads.syncUnwatchedItems' => 'Synkroniserer usette elementer', 'downloads.syncUnwatchedItems' => 'Synkroniserer usette elementer',
@@ -3272,39 +3418,70 @@ extension on TranslationsNb {
'trakt.scrobbleDescription' => 'Send avspillings-, pause- og stopphendelser til Trakt under avspilling.', 'trakt.scrobbleDescription' => 'Send avspillings-, pause- og stopphendelser til Trakt under avspilling.',
'trakt.watchedSync' => 'Synkroniser sett-status', 'trakt.watchedSync' => 'Synkroniser sett-status',
'trakt.watchedSyncDescription' => 'Når du markerer noe som sett i Plezy, markeres det også på Trakt.', 'trakt.watchedSyncDescription' => 'Når du markerer noe som sett i Plezy, markeres det også på Trakt.',
'trackers.title' => 'Trackere', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Synkroniser seerfremdrift med Trakt og andre tjenester.', 'seerr.connectTitle' => 'Koble til Seerr',
'trackers.notConnected' => 'Ikke tilkoblet', 'seerr.serverUrl' => 'Server-URL',
'trackers.connectedAs' => ({required Object username}) => 'Tilkoblet som @${username}', 'seerr.serverUrlHelper' => 'Adressen til Seerr-instansen din',
'trackers.scrobble' => 'Registrer fremdrift automatisk', 'seerr.checkServer' => 'Fortsett',
'trackers.scrobbleDescription' => 'Oppdater listen din når du er ferdig med en episode eller film.', 'seerr.signInWithJellyfin' => 'Logg inn med Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Koble fra ${service}?', 'seerr.signInWithEmby' => 'Logg inn med Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy slutter å oppdatere ${service}. Koble til igjen når som helst.', 'seerr.signInWithLocal' => 'Bruk en lokal konto',
'trackers.connectFailed' => ({required Object service}) => 'Kunne ikke koble til ${service}. Prøv igjen.', 'seerr.email' => 'E-post',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Denne Seerr-instansen tilbyr ingen innloggingsmetode som Plezy støtter.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instans',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Koble fra Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Aktiver Plezy på ${service}', 'seerr.disconnectConfirmBody' => 'Plezy glemmer denne Seerr-instansen. Koble til igjen når som helst.',
'trackers.deviceCode.body' => ({required Object url}) => 'Besøk ${url} og skriv inn denne koden:', 'seerr.request' => 'Forespør',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Åpne ${service} for å aktivere', 'seerr.request4k' => 'Forespør i 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Venter på godkjenning…', 'seerr.seasons' => 'Sesonger',
'trackers.deviceCode.codeCopied' => 'Kode kopiert', 'seerr.allSeasons' => 'Alle sesonger',
'trackers.oauthProxy.title' => ({required Object service}) => 'Logg inn på ${service}', 'seerr.advancedOptions' => 'Avansert',
'trackers.oauthProxy.body' => 'Skann denne QR-koden eller åpne URL-en på en enhet.', 'seerr.destinationServer' => 'Målserver',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Åpne ${service} for å logge inn', 'seerr.qualityProfile' => 'Kvalitetsprofil',
'trackers.oauthProxy.urlCopied' => 'URL kopiert', 'seerr.rootFolder' => 'Rotmappe',
'trackers.libraryFilter.title' => 'Biblioteksfilter', 'seerr.languageProfile' => 'Språkprofil',
'trackers.libraryFilter.subtitleAllSyncing' => 'Synkroniserer alle biblioteker', 'seerr.requestSubmitted' => 'Forespørsel sendt',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Ingenting synkroniseres', 'seerr.requestFailed' => ({required Object error}) => 'Forespørsel mislyktes: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blokkert', 'seerr.requestsLoadFailed' => 'Kunne ikke laste forespørselsalternativer',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} tillatt', 'seerr.nothingToRequest' => 'Alt er allerede tilgjengelig eller forespurt.',
'trackers.libraryFilter.mode' => 'Filtermodus', 'seerr.statusAvailable' => 'Tilgjengelig',
'trackers.libraryFilter.modeBlacklist' => 'Svarteliste', 'seerr.statusPartiallyAvailable' => 'Delvis tilgjengelig',
'trackers.libraryFilter.modeWhitelist' => 'Hviteliste', 'seerr.statusRequested' => 'Forespurt',
'trackers.libraryFilter.modeHintBlacklist' => 'Synkroniser alle biblioteker bortsett fra dem du markerer nedenfor.', 'seerr.statusProcessing' => 'Behandler',
'trackers.libraryFilter.modeHintWhitelist' => 'Synkroniser kun bibliotekene du markerer nedenfor.', 'services.title' => 'Tjenester',
'trackers.libraryFilter.libraries' => 'Biblioteker', 'services.hubSubtitle' => 'Synkroniser fremdrift og forespør nye titler.',
'trackers.libraryFilter.noLibraries' => 'Ingen biblioteker tilgjengelige', 'services.notConnected' => 'Ikke tilkoblet',
'services.connectedAs' => ({required Object username}) => 'Tilkoblet som @${username}',
'services.scrobble' => 'Registrer fremdrift automatisk',
'services.scrobbleDescription' => 'Oppdater listen din når du er ferdig med en episode eller film.',
'services.disconnectConfirm' => ({required Object service}) => 'Koble fra ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy slutter å oppdatere ${service}. Koble til igjen når som helst.',
'services.connectFailed' => ({required Object service}) => 'Kunne ikke koble til ${service}. Prøv igjen.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Aktiver Plezy på ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Besøk ${url} og skriv inn denne koden:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Åpne ${service} for å aktivere',
'services.deviceCode.waitingForAuthorization' => 'Venter på godkjenning…',
'services.deviceCode.codeCopied' => 'Kode kopiert',
'services.oauthProxy.title' => ({required Object service}) => 'Logg inn på ${service}',
'services.oauthProxy.body' => 'Skann denne QR-koden eller åpne URL-en på en enhet.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Åpne ${service} for å logge inn',
'services.oauthProxy.urlCopied' => 'URL kopiert',
'services.libraryFilter.title' => 'Biblioteksfilter',
'services.libraryFilter.subtitleAllSyncing' => 'Synkroniserer alle biblioteker',
'services.libraryFilter.subtitleNoneSyncing' => 'Ingenting synkroniseres',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blokkert',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} tillatt',
'services.libraryFilter.mode' => 'Filtermodus',
'services.libraryFilter.modeBlacklist' => 'Svarteliste',
'services.libraryFilter.modeWhitelist' => 'Hviteliste',
'services.libraryFilter.modeHintBlacklist' => 'Synkroniser alle biblioteker bortsett fra dem du markerer nedenfor.',
'services.libraryFilter.modeHintWhitelist' => 'Synkroniser kun bibliotekene du markerer nedenfor.',
'services.libraryFilter.libraries' => 'Biblioteker',
'services.libraryFilter.noLibraries' => 'Ingen biblioteker tilgjengelige',
'addServer.addJellyfinTitle' => 'Legg til Jellyfin-server', 'addServer.addJellyfinTitle' => 'Legg til Jellyfin-server',
'addServer.serverUrls' => 'Server-URL-er', 'addServer.serverUrls' => 'Server-URL-er',
'addServer.serverUrlsHelper' => 'Flere URL-er er tillatt, atskilt med komma.', 'addServer.serverUrlsHelper' => 'Flere URL-er er tillatt, atskilt med komma.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsNl extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsNl logs = _TranslationsLogsNl._(_root); @override late final _TranslationsLogsNl logs = _TranslationsLogsNl._(_root);
@override late final _TranslationsLicensesNl licenses = _TranslationsLicensesNl._(_root); @override late final _TranslationsLicensesNl licenses = _TranslationsLicensesNl._(_root);
@override late final _TranslationsNavigationNl navigation = _TranslationsNavigationNl._(_root); @override late final _TranslationsNavigationNl navigation = _TranslationsNavigationNl._(_root);
@override late final _TranslationsExploreNl explore = _TranslationsExploreNl._(_root);
@override late final _TranslationsLiveTvNl liveTv = _TranslationsLiveTvNl._(_root); @override late final _TranslationsLiveTvNl liveTv = _TranslationsLiveTvNl._(_root);
@override late final _TranslationsCollectionsNl collections = _TranslationsCollectionsNl._(_root); @override late final _TranslationsCollectionsNl collections = _TranslationsCollectionsNl._(_root);
@override late final _TranslationsPlaylistsNl playlists = _TranslationsPlaylistsNl._(_root); @override late final _TranslationsPlaylistsNl playlists = _TranslationsPlaylistsNl._(_root);
@@ -84,7 +85,8 @@ class TranslationsNl extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenNl matchScreen = _TranslationsMatchScreenNl._(_root); @override late final _TranslationsMatchScreenNl matchScreen = _TranslationsMatchScreenNl._(_root);
@override late final _TranslationsServerTasksNl serverTasks = _TranslationsServerTasksNl._(_root); @override late final _TranslationsServerTasksNl serverTasks = _TranslationsServerTasksNl._(_root);
@override late final _TranslationsTraktNl trakt = _TranslationsTraktNl._(_root); @override late final _TranslationsTraktNl trakt = _TranslationsTraktNl._(_root);
@override late final _TranslationsTrackersNl trackers = _TranslationsTrackersNl._(_root); @override late final _TranslationsSeerrNl seerr = _TranslationsSeerrNl._(_root);
@override late final _TranslationsServicesNl services = _TranslationsServicesNl._(_root);
@override late final _TranslationsAddServerNl addServer = _TranslationsAddServerNl._(_root); @override late final _TranslationsAddServerNl addServer = _TranslationsAddServerNl._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsNl extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Toon op Discord wat je aan het kijken bent'; @override String get discordRichPresenceDescription => 'Toon op Discord wat je aan het kijken bent';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Kijkgeschiedenis synchroniseren met Trakt'; @override String get traktDescription => 'Kijkgeschiedenis synchroniseren met Trakt';
@override String get trackers => 'Trackers'; @override String get services => 'Services';
@override String get trackersDescription => 'Voortgang synchroniseren met Trakt, MyAnimeList, AniList en Simkl'; @override String get servicesDescription => 'Verbind Trakt, MyAnimeList, Seerr en meer';
@override String get companionRemoteServer => 'Companion Remote-server'; @override String get companionRemoteServer => 'Companion Remote-server';
@override String get companionRemoteServerDescription => 'Sta mobiele apparaten op je netwerk toe om deze app te bedienen'; @override String get companionRemoteServerDescription => 'Sta mobiele apparaten op je netwerk toe om deze app te bedienen';
@override String get autoPip => 'Automatische beeld-in-beeld'; @override String get autoPip => 'Automatische beeld-in-beeld';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetNl extends TranslationsRateSheetEn {
@override String get setScore => 'Score instellen'; @override String get setScore => 'Score instellen';
@override String get saved => 'Opgeslagen'; @override String get saved => 'Opgeslagen';
@override String get notAvailable => 'Geen match gevonden'; @override String get notAvailable => 'Geen match gevonden';
@override String get noConnectedTrackers => 'Verbind een tracker in Instellingen om daar te beoordelen.'; @override String get noConnectedServices => 'Verbind een service in Instellingen om daar te beoordelen.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationNl extends TranslationsNavigationEn {
@override String get libraries => 'Media'; @override String get libraries => 'Media';
@override String get downloads => 'Downloads'; @override String get downloads => 'Downloads';
@override String get liveTv => 'Live TV'; @override String get liveTv => 'Live TV';
@override String get explore => 'Verkennen';
}
// Path: explore
class _TranslationsExploreNl extends TranslationsExploreEn {
_TranslationsExploreNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get title => 'Verkennen';
@override String get selectSource => 'Bron kiezen';
@override late final _TranslationsExploreRowsNl rows = _TranslationsExploreRowsNl._(_root);
@override String searchHint({required Object source}) => 'Zoeken in ${source}';
@override String searchEmpty({required Object query}) => 'Geen resultaten voor "${query}"';
@override String searchPrompt({required Object source}) => 'Zoek naar films en series op ${source}.';
@override String get searchFailed => 'Zoeken mislukt. Controleer je verbinding en probeer opnieuw.';
@override late final _TranslationsExploreStatusNl status = _TranslationsExploreStatusNl._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nl'))(n,
one: '${n} aflevering',
other: '${n} afleveringen',
);
@override String get cast => 'Acteurs';
@override String get characters => 'Personages';
@override String get addToWatchlist => 'Toevoegen aan kijklijst';
@override String get removeFromWatchlist => 'Verwijderen uit kijklijst';
@override String get watchlistUpdateFailed => 'Kon kijklijst niet bijwerken';
@override String get notInLibrary => 'Niet in je bibliotheek';
@override String get inTheseLibraries => 'In deze bibliotheken';
@override String availableOn({required Object server}) => 'Beschikbaar op ${server}';
@override String get checkingLibrary => 'Je bibliotheek controleren...';
@override String get emptyTitle => 'Hier is nog niets';
@override String emptyMessage({required Object source}) => 'Rijen van ${source} verschijnen hier zodra ze inhoud hebben.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktNl extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Wanneer je items als bekeken markeert in Plezy, worden ze ook op Trakt gemarkeerd.'; @override String get watchedSyncDescription => 'Wanneer je items als bekeken markeert in Plezy, worden ze ook op Trakt gemarkeerd.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersNl extends TranslationsTrackersEn { class _TranslationsSeerrNl extends TranslationsSeerrEn {
_TranslationsTrackersNl._(TranslationsNl root) : this._root = root, super.internal(root); _TranslationsSeerrNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field final TranslationsNl _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Trackers'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Synchroniseer kijkvoortgang met Trakt en andere diensten.'; @override String get connectTitle => 'Verbinden met Seerr';
@override String get serverUrl => 'Server-URL';
@override String get serverUrlHelper => 'Het adres van je Seerr-instantie';
@override String get checkServer => 'Doorgaan';
@override String get signInWithJellyfin => 'Inloggen met Jellyfin';
@override String get signInWithEmby => 'Inloggen met Emby';
@override String get signInWithLocal => 'Een lokaal account gebruiken';
@override String get email => 'E-mail';
@override String get noSignInMethods => 'Deze Seerr-instantie biedt geen inlogmethode die Plezy ondersteunt.';
@override String get instance => 'Instantie';
@override String get disconnectConfirm => 'Seerr loskoppelen?';
@override String get disconnectConfirmBody => 'Plezy vergeet deze Seerr-instantie. Je kunt altijd opnieuw verbinden.';
@override String get request => 'Aanvragen';
@override String get request4k => 'Aanvragen in 4K';
@override String get seasons => 'Seizoenen';
@override String get allSeasons => 'Alle seizoenen';
@override String get advancedOptions => 'Geavanceerd';
@override String get destinationServer => 'Doelserver';
@override String get qualityProfile => 'Kwaliteitsprofiel';
@override String get rootFolder => 'Hoofdmap';
@override String get languageProfile => 'Taalprofiel';
@override String get requestSubmitted => 'Aanvraag verzonden';
@override String requestFailed({required Object error}) => 'Aanvraag mislukt: ${error}';
@override String get requestsLoadFailed => 'Kan aanvraagopties niet laden';
@override String get nothingToRequest => 'Alles is al beschikbaar of aangevraagd.';
@override String get statusAvailable => 'Beschikbaar';
@override String get statusPartiallyAvailable => 'Gedeeltelijk beschikbaar';
@override String get statusRequested => 'Aangevraagd';
@override String get statusProcessing => 'Verwerken';
}
// Path: services
class _TranslationsServicesNl extends TranslationsServicesEn {
_TranslationsServicesNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get title => 'Services';
@override String get hubSubtitle => 'Synchroniseer kijkvoortgang en vraag nieuwe titels aan.';
@override String get notConnected => 'Niet verbonden'; @override String get notConnected => 'Niet verbonden';
@override String connectedAs({required Object username}) => 'Verbonden als @${username}'; @override String connectedAs({required Object username}) => 'Verbonden als @${username}';
@override String get scrobble => 'Voortgang automatisch volgen'; @override String get scrobble => 'Voortgang automatisch volgen';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersNl extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => '${service} loskoppelen?'; @override String disconnectConfirm({required Object service}) => '${service} loskoppelen?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy stopt met ${service} bijwerken. Je kunt altijd opnieuw verbinden.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy stopt met ${service} bijwerken. Je kunt altijd opnieuw verbinden.';
@override String connectFailed({required Object service}) => 'Kan niet verbinden met ${service}. Probeer opnieuw.'; @override String connectFailed({required Object service}) => 'Kan niet verbinden met ${service}. Probeer opnieuw.';
@override late final _TranslationsTrackersServicesNl services = _TranslationsTrackersServicesNl._(_root); @override late final _TranslationsServicesNamesNl names = _TranslationsServicesNamesNl._(_root);
@override late final _TranslationsTrackersDeviceCodeNl deviceCode = _TranslationsTrackersDeviceCodeNl._(_root); @override late final _TranslationsServicesDeviceCodeNl deviceCode = _TranslationsServicesDeviceCodeNl._(_root);
@override late final _TranslationsTrackersOauthProxyNl oauthProxy = _TranslationsTrackersOauthProxyNl._(_root); @override late final _TranslationsServicesOauthProxyNl oauthProxy = _TranslationsServicesOauthProxyNl._(_root);
@override late final _TranslationsTrackersLibraryFilterNl libraryFilter = _TranslationsTrackersLibraryFilterNl._(_root); @override late final _TranslationsServicesLibraryFilterNl libraryFilter = _TranslationsServicesLibraryFilterNl._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsNl extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Datum laatst toegevoegde aflevering'; @override String get lastEpisodeDateAdded => 'Datum laatst toegevoegde aflevering';
} }
// Path: explore.rows
class _TranslationsExploreRowsNl extends TranslationsExploreRowsEn {
_TranslationsExploreRowsNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Kijklijst';
@override String get recommendedMovies => 'Aanbevolen films';
@override String get recommendedShows => 'Aanbevolen series';
@override String get trendingMovies => 'Trending films';
@override String get trendingShows => 'Trending series';
@override String get popularMovies => 'Populaire films';
@override String get popularShows => 'Populaire series';
@override String get suggestedAnime => 'Voorgestelde anime';
@override String get airingAnime => 'Top lopende anime';
@override String get popularAnime => 'Populairste anime';
@override String get trending => 'Trending';
@override String get upcomingMovies => 'Aankomende films';
@override String get upcomingShows => 'Aankomende series';
}
// Path: explore.status
class _TranslationsExploreStatusNl extends TranslationsExploreStatusEn {
_TranslationsExploreStatusNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field
// Translations
@override String get airing => 'Lopend';
@override String get ended => 'Afgelopen';
@override String get canceled => 'Geannuleerd';
@override String get upcoming => 'Binnenkort';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionNl extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionNl extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionNl._(TranslationsNl root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionNl._(TranslationsNl root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsNl extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Verbinding verloren'; @override String get connectionLost => 'Verbinding verloren';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesNl extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesNl extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesNl._(TranslationsNl root) : this._root = root, super.internal(root); _TranslationsServicesNamesNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field final TranslationsNl _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesNl extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeNl extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeNl extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeNl._(TranslationsNl root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field final TranslationsNl _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeNl extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Code gekopieerd'; @override String get codeCopied => 'Code gekopieerd';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyNl extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyNl extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyNl._(TranslationsNl root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field final TranslationsNl _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyNl extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL gekopieerd'; @override String get urlCopied => 'URL gekopieerd';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterNl extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterNl extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterNl._(TranslationsNl root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterNl._(TranslationsNl root) : this._root = root, super.internal(root);
final TranslationsNl _root; // ignore: unused_field final TranslationsNl _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsNl {
'settings.discordRichPresenceDescription' => 'Toon op Discord wat je aan het kijken bent', 'settings.discordRichPresenceDescription' => 'Toon op Discord wat je aan het kijken bent',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Kijkgeschiedenis synchroniseren met Trakt', 'settings.traktDescription' => 'Kijkgeschiedenis synchroniseren met Trakt',
'settings.trackers' => 'Trackers', 'settings.services' => 'Services',
'settings.trackersDescription' => 'Voortgang synchroniseren met Trakt, MyAnimeList, AniList en Simkl', 'settings.servicesDescription' => 'Verbind Trakt, MyAnimeList, Seerr en meer',
'settings.companionRemoteServer' => 'Companion Remote-server', 'settings.companionRemoteServer' => 'Companion Remote-server',
'settings.companionRemoteServerDescription' => 'Sta mobiele apparaten op je netwerk toe om deze app te bedienen', 'settings.companionRemoteServerDescription' => 'Sta mobiele apparaten op je netwerk toe om deze app te bedienen',
'settings.autoPip' => 'Automatische beeld-in-beeld', 'settings.autoPip' => 'Automatische beeld-in-beeld',
@@ -2390,7 +2500,7 @@ extension on TranslationsNl {
'rateSheet.setScore' => 'Score instellen', 'rateSheet.setScore' => 'Score instellen',
'rateSheet.saved' => 'Opgeslagen', 'rateSheet.saved' => 'Opgeslagen',
'rateSheet.notAvailable' => 'Geen match gevonden', 'rateSheet.notAvailable' => 'Geen match gevonden',
'rateSheet.noConnectedTrackers' => 'Verbind een tracker in Instellingen om daar te beoordelen.', 'rateSheet.noConnectedServices' => 'Verbind een service in Instellingen om daar te beoordelen.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV-serie', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV-serie',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsNl {
'navigation.libraries' => 'Media', 'navigation.libraries' => 'Media',
'navigation.downloads' => 'Downloads', 'navigation.downloads' => 'Downloads',
'navigation.liveTv' => 'Live TV', 'navigation.liveTv' => 'Live TV',
'navigation.explore' => 'Verkennen',
'explore.title' => 'Verkennen',
'explore.selectSource' => 'Bron kiezen',
'explore.rows.watchlist' => 'Kijklijst',
'explore.rows.recommendedMovies' => 'Aanbevolen films',
'explore.rows.recommendedShows' => 'Aanbevolen series',
'explore.rows.trendingMovies' => 'Trending films',
'explore.rows.trendingShows' => 'Trending series',
'explore.rows.popularMovies' => 'Populaire films',
'explore.rows.popularShows' => 'Populaire series',
'explore.rows.suggestedAnime' => 'Voorgestelde anime',
'explore.rows.airingAnime' => 'Top lopende anime',
'explore.rows.popularAnime' => 'Populairste anime',
'explore.rows.trending' => 'Trending',
'explore.rows.upcomingMovies' => 'Aankomende films',
'explore.rows.upcomingShows' => 'Aankomende series',
'explore.searchHint' => ({required Object source}) => 'Zoeken in ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Geen resultaten voor "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Zoek naar films en series op ${source}.',
'explore.searchFailed' => 'Zoeken mislukt. Controleer je verbinding en probeer opnieuw.',
'explore.status.airing' => 'Lopend',
'explore.status.ended' => 'Afgelopen',
'explore.status.canceled' => 'Geannuleerd',
'explore.status.upcoming' => 'Binnenkort',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('nl'))(n, one: '${n} aflevering', other: '${n} afleveringen', ),
'explore.cast' => 'Acteurs',
'explore.characters' => 'Personages',
'explore.addToWatchlist' => 'Toevoegen aan kijklijst',
'explore.removeFromWatchlist' => 'Verwijderen uit kijklijst',
'explore.watchlistUpdateFailed' => 'Kon kijklijst niet bijwerken',
'explore.notInLibrary' => 'Niet in je bibliotheek',
'explore.inTheseLibraries' => 'In deze bibliotheken',
'explore.availableOn' => ({required Object server}) => 'Beschikbaar op ${server}',
'explore.checkingLibrary' => 'Je bibliotheek controleren...',
'explore.emptyTitle' => 'Hier is nog niets',
'explore.emptyMessage' => ({required Object source}) => 'Rijen van ${source} verschijnen hier zodra ze inhoud hebben.',
'liveTv.title' => 'Live TV', 'liveTv.title' => 'Live TV',
'liveTv.guide' => 'Gids', 'liveTv.guide' => 'Gids',
'liveTv.noChannels' => 'Geen zenders beschikbaar', 'liveTv.noChannels' => 'Geen zenders beschikbaar',
@@ -2986,6 +3132,8 @@ extension on TranslationsNl {
'downloads.cancelledDownloadMessage' => 'Deze download is geannuleerd. Wat wil je doen?', 'downloads.cancelledDownloadMessage' => 'Deze download is geannuleerd. Wat wil je doen?',
'downloads.allEpisodesAlreadyDownloaded' => 'Alle afleveringen zijn al gedownload', 'downloads.allEpisodesAlreadyDownloaded' => 'Alle afleveringen zijn al gedownload',
'downloads.resumeDownload' => 'Download hervatten', 'downloads.resumeDownload' => 'Download hervatten',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Geannuleerde download', 'downloads.cancelledDownload' => 'Geannuleerde download',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (${status} synchroniseren)', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (${status} synchroniseren)',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} gedownload — klik om te voltooien', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} gedownload — klik om te voltooien',
@@ -3022,8 +3170,6 @@ extension on TranslationsNl {
'downloads.noSyncRules' => 'Geen synchronisatieregels', 'downloads.noSyncRules' => 'Geen synchronisatieregels',
'downloads.manageSyncRule' => 'Synchronisatie beheren', 'downloads.manageSyncRule' => 'Synchronisatie beheren',
'downloads.editEpisodeCount' => 'Aantal afleveringen', 'downloads.editEpisodeCount' => 'Aantal afleveringen',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Synchronisatiefilter', 'downloads.editSyncFilter' => 'Synchronisatiefilter',
'downloads.syncAllItems' => 'Alle items synchroniseren', 'downloads.syncAllItems' => 'Alle items synchroniseren',
'downloads.syncUnwatchedItems' => 'Ongekeken items synchroniseren', 'downloads.syncUnwatchedItems' => 'Ongekeken items synchroniseren',
@@ -3272,39 +3418,70 @@ extension on TranslationsNl {
'trakt.scrobbleDescription' => 'Verstuur play-, pauze- en stopgebeurtenissen tijdens afspelen naar Trakt.', 'trakt.scrobbleDescription' => 'Verstuur play-, pauze- en stopgebeurtenissen tijdens afspelen naar Trakt.',
'trakt.watchedSync' => 'Bekeken-status synchroniseren', 'trakt.watchedSync' => 'Bekeken-status synchroniseren',
'trakt.watchedSyncDescription' => 'Wanneer je items als bekeken markeert in Plezy, worden ze ook op Trakt gemarkeerd.', 'trakt.watchedSyncDescription' => 'Wanneer je items als bekeken markeert in Plezy, worden ze ook op Trakt gemarkeerd.',
'trackers.title' => 'Trackers', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Synchroniseer kijkvoortgang met Trakt en andere diensten.', 'seerr.connectTitle' => 'Verbinden met Seerr',
'trackers.notConnected' => 'Niet verbonden', 'seerr.serverUrl' => 'Server-URL',
'trackers.connectedAs' => ({required Object username}) => 'Verbonden als @${username}', 'seerr.serverUrlHelper' => 'Het adres van je Seerr-instantie',
'trackers.scrobble' => 'Voortgang automatisch volgen', 'seerr.checkServer' => 'Doorgaan',
'trackers.scrobbleDescription' => 'Werk je lijst bij wanneer je een aflevering of film afrondt.', 'seerr.signInWithJellyfin' => 'Inloggen met Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => '${service} loskoppelen?', 'seerr.signInWithEmby' => 'Inloggen met Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy stopt met ${service} bijwerken. Je kunt altijd opnieuw verbinden.', 'seerr.signInWithLocal' => 'Een lokaal account gebruiken',
'trackers.connectFailed' => ({required Object service}) => 'Kan niet verbinden met ${service}. Probeer opnieuw.', 'seerr.email' => 'E-mail',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Deze Seerr-instantie biedt geen inlogmethode die Plezy ondersteunt.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instantie',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Seerr loskoppelen?',
'trackers.deviceCode.title' => ({required Object service}) => 'Plezy activeren op ${service}', 'seerr.disconnectConfirmBody' => 'Plezy vergeet deze Seerr-instantie. Je kunt altijd opnieuw verbinden.',
'trackers.deviceCode.body' => ({required Object url}) => 'Ga naar ${url} en voer deze code in:', 'seerr.request' => 'Aanvragen',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Open ${service} om te activeren', 'seerr.request4k' => 'Aanvragen in 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Wachten op autorisatie…', 'seerr.seasons' => 'Seizoenen',
'trackers.deviceCode.codeCopied' => 'Code gekopieerd', 'seerr.allSeasons' => 'Alle seizoenen',
'trackers.oauthProxy.title' => ({required Object service}) => 'Aanmelden bij ${service}', 'seerr.advancedOptions' => 'Geavanceerd',
'trackers.oauthProxy.body' => 'Scan deze QR-code of open de URL op een apparaat.', 'seerr.destinationServer' => 'Doelserver',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => '${service} openen om aan te melden', 'seerr.qualityProfile' => 'Kwaliteitsprofiel',
'trackers.oauthProxy.urlCopied' => 'URL gekopieerd', 'seerr.rootFolder' => 'Hoofdmap',
'trackers.libraryFilter.title' => 'Bibliotheekfilter', 'seerr.languageProfile' => 'Taalprofiel',
'trackers.libraryFilter.subtitleAllSyncing' => 'Alle bibliotheken synchroniseren', 'seerr.requestSubmitted' => 'Aanvraag verzonden',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Niets wordt gesynchroniseerd', 'seerr.requestFailed' => ({required Object error}) => 'Aanvraag mislukt: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} geblokkeerd', 'seerr.requestsLoadFailed' => 'Kan aanvraagopties niet laden',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} toegestaan', 'seerr.nothingToRequest' => 'Alles is al beschikbaar of aangevraagd.',
'trackers.libraryFilter.mode' => 'Filtermodus', 'seerr.statusAvailable' => 'Beschikbaar',
'trackers.libraryFilter.modeBlacklist' => 'Zwarte lijst', 'seerr.statusPartiallyAvailable' => 'Gedeeltelijk beschikbaar',
'trackers.libraryFilter.modeWhitelist' => 'Witte lijst', 'seerr.statusRequested' => 'Aangevraagd',
'trackers.libraryFilter.modeHintBlacklist' => 'Synchroniseer alle bibliotheken behalve die hieronder aangevinkt zijn.', 'seerr.statusProcessing' => 'Verwerken',
'trackers.libraryFilter.modeHintWhitelist' => 'Synchroniseer alleen de hieronder aangevinkte bibliotheken.', 'services.title' => 'Services',
'trackers.libraryFilter.libraries' => 'Bibliotheken', 'services.hubSubtitle' => 'Synchroniseer kijkvoortgang en vraag nieuwe titels aan.',
'trackers.libraryFilter.noLibraries' => 'Geen bibliotheken beschikbaar', 'services.notConnected' => 'Niet verbonden',
'services.connectedAs' => ({required Object username}) => 'Verbonden als @${username}',
'services.scrobble' => 'Voortgang automatisch volgen',
'services.scrobbleDescription' => 'Werk je lijst bij wanneer je een aflevering of film afrondt.',
'services.disconnectConfirm' => ({required Object service}) => '${service} loskoppelen?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy stopt met ${service} bijwerken. Je kunt altijd opnieuw verbinden.',
'services.connectFailed' => ({required Object service}) => 'Kan niet verbinden met ${service}. Probeer opnieuw.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Plezy activeren op ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Ga naar ${url} en voer deze code in:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Open ${service} om te activeren',
'services.deviceCode.waitingForAuthorization' => 'Wachten op autorisatie…',
'services.deviceCode.codeCopied' => 'Code gekopieerd',
'services.oauthProxy.title' => ({required Object service}) => 'Aanmelden bij ${service}',
'services.oauthProxy.body' => 'Scan deze QR-code of open de URL op een apparaat.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => '${service} openen om aan te melden',
'services.oauthProxy.urlCopied' => 'URL gekopieerd',
'services.libraryFilter.title' => 'Bibliotheekfilter',
'services.libraryFilter.subtitleAllSyncing' => 'Alle bibliotheken synchroniseren',
'services.libraryFilter.subtitleNoneSyncing' => 'Niets wordt gesynchroniseerd',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} geblokkeerd',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} toegestaan',
'services.libraryFilter.mode' => 'Filtermodus',
'services.libraryFilter.modeBlacklist' => 'Zwarte lijst',
'services.libraryFilter.modeWhitelist' => 'Witte lijst',
'services.libraryFilter.modeHintBlacklist' => 'Synchroniseer alle bibliotheken behalve die hieronder aangevinkt zijn.',
'services.libraryFilter.modeHintWhitelist' => 'Synchroniseer alleen de hieronder aangevinkte bibliotheken.',
'services.libraryFilter.libraries' => 'Bibliotheken',
'services.libraryFilter.noLibraries' => 'Geen bibliotheken beschikbaar',
'addServer.addJellyfinTitle' => 'Jellyfin-server toevoegen', 'addServer.addJellyfinTitle' => 'Jellyfin-server toevoegen',
'addServer.serverUrls' => 'Server-URL\'s', 'addServer.serverUrls' => 'Server-URL\'s',
'addServer.serverUrlsHelper' => 'Meerdere URL\'s toegestaan, gescheiden door komma\'s.', 'addServer.serverUrlsHelper' => 'Meerdere URL\'s toegestaan, gescheiden door komma\'s.',
+242 -63
View File
@@ -69,6 +69,7 @@ class TranslationsPl extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsPl logs = _TranslationsLogsPl._(_root); @override late final _TranslationsLogsPl logs = _TranslationsLogsPl._(_root);
@override late final _TranslationsLicensesPl licenses = _TranslationsLicensesPl._(_root); @override late final _TranslationsLicensesPl licenses = _TranslationsLicensesPl._(_root);
@override late final _TranslationsNavigationPl navigation = _TranslationsNavigationPl._(_root); @override late final _TranslationsNavigationPl navigation = _TranslationsNavigationPl._(_root);
@override late final _TranslationsExplorePl explore = _TranslationsExplorePl._(_root);
@override late final _TranslationsLiveTvPl liveTv = _TranslationsLiveTvPl._(_root); @override late final _TranslationsLiveTvPl liveTv = _TranslationsLiveTvPl._(_root);
@override late final _TranslationsCollectionsPl collections = _TranslationsCollectionsPl._(_root); @override late final _TranslationsCollectionsPl collections = _TranslationsCollectionsPl._(_root);
@override late final _TranslationsPlaylistsPl playlists = _TranslationsPlaylistsPl._(_root); @override late final _TranslationsPlaylistsPl playlists = _TranslationsPlaylistsPl._(_root);
@@ -84,7 +85,8 @@ class TranslationsPl extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenPl matchScreen = _TranslationsMatchScreenPl._(_root); @override late final _TranslationsMatchScreenPl matchScreen = _TranslationsMatchScreenPl._(_root);
@override late final _TranslationsServerTasksPl serverTasks = _TranslationsServerTasksPl._(_root); @override late final _TranslationsServerTasksPl serverTasks = _TranslationsServerTasksPl._(_root);
@override late final _TranslationsTraktPl trakt = _TranslationsTraktPl._(_root); @override late final _TranslationsTraktPl trakt = _TranslationsTraktPl._(_root);
@override late final _TranslationsTrackersPl trackers = _TranslationsTrackersPl._(_root); @override late final _TranslationsSeerrPl seerr = _TranslationsSeerrPl._(_root);
@override late final _TranslationsServicesPl services = _TranslationsServicesPl._(_root);
@override late final _TranslationsAddServerPl addServer = _TranslationsAddServerPl._(_root); @override late final _TranslationsAddServerPl addServer = _TranslationsAddServerPl._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsPl extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Pokaż, co oglądasz na Discordzie'; @override String get discordRichPresenceDescription => 'Pokaż, co oglądasz na Discordzie';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Synchronizuj historię oglądania z Trakt'; @override String get traktDescription => 'Synchronizuj historię oglądania z Trakt';
@override String get trackers => 'Trackery'; @override String get services => 'Usługi';
@override String get trackersDescription => 'Synchronizuj postęp z Trakt, MyAnimeList, AniList i Simkl'; @override String get servicesDescription => 'Połącz Trakt, MyAnimeList, Seerr i inne';
@override String get companionRemoteServer => 'Serwer zdalnego sterowania'; @override String get companionRemoteServer => 'Serwer zdalnego sterowania';
@override String get companionRemoteServerDescription => 'Pozwól urządzeniom mobilnym w sieci sterować tą aplikacją'; @override String get companionRemoteServerDescription => 'Pozwól urządzeniom mobilnym w sieci sterować tą aplikacją';
@override String get autoPip => 'Automatyczny obraz w obrazie'; @override String get autoPip => 'Automatyczny obraz w obrazie';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetPl extends TranslationsRateSheetEn {
@override String get setScore => 'Ustaw ocenę'; @override String get setScore => 'Ustaw ocenę';
@override String get saved => 'Zapisano'; @override String get saved => 'Zapisano';
@override String get notAvailable => 'Nie znaleziono dopasowania'; @override String get notAvailable => 'Nie znaleziono dopasowania';
@override String get noConnectedTrackers => 'Połącz tracker w Ustawieniach, aby tam oceniać.'; @override String get noConnectedServices => 'Połącz usługę w Ustawieniach, aby tam oceniać.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,41 @@ class _TranslationsNavigationPl extends TranslationsNavigationEn {
@override String get libraries => 'Biblioteki'; @override String get libraries => 'Biblioteki';
@override String get downloads => 'Pobrania'; @override String get downloads => 'Pobrania';
@override String get liveTv => 'TV na żywo'; @override String get liveTv => 'TV na żywo';
@override String get explore => 'Przeglądaj';
}
// Path: explore
class _TranslationsExplorePl extends TranslationsExploreEn {
_TranslationsExplorePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get title => 'Przeglądaj';
@override String get selectSource => 'Wybierz źródło';
@override late final _TranslationsExploreRowsPl rows = _TranslationsExploreRowsPl._(_root);
@override late final _TranslationsExploreStatusPl status = _TranslationsExploreStatusPl._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pl'))(n,
one: '${n} odcinek',
few: '${n} odcinki',
many: '${n} odcinków',
other: '${n} odcinka',
);
@override String get cast => 'Obsada';
@override String get characters => 'Postacie';
@override String get addToWatchlist => 'Dodaj do listy do obejrzenia';
@override String get removeFromWatchlist => 'Usuń z listy do obejrzenia';
@override String get watchlistUpdateFailed => 'Nie udało się zaktualizować listy do obejrzenia';
@override String get notInLibrary => 'Nie ma tego w Twojej bibliotece';
@override String get inTheseLibraries => 'W tych bibliotekach';
@override String availableOn({required Object server}) => 'Dostępne na ${server}';
@override String get checkingLibrary => 'Sprawdzanie Twojej biblioteki...';
@override String get emptyTitle => 'Jeszcze nic tu nie ma';
@override String emptyMessage({required Object source}) => 'Wiersze z ${source} pojawią się tutaj, gdy będą zawierać treści.';
@override String searchHint({required Object source}) => 'Szukaj w ${source}';
@override String searchEmpty({required Object query}) => 'Brak wyników dla "${query}"';
@override String searchPrompt({required Object source}) => 'Szukaj filmów i seriali w ${source}.';
@override String get searchFailed => 'Wyszukiwanie nie powiodło się. Sprawdź połączenie i spróbuj ponownie.';
} }
// Path: liveTv // Path: liveTv
@@ -1648,15 +1685,54 @@ class _TranslationsTraktPl extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Gdy oznaczysz pozycje jako obejrzane w Plezy, zostaną też oznaczone w Trakt.'; @override String get watchedSyncDescription => 'Gdy oznaczysz pozycje jako obejrzane w Plezy, zostaną też oznaczone w Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersPl extends TranslationsTrackersEn { class _TranslationsSeerrPl extends TranslationsSeerrEn {
_TranslationsTrackersPl._(TranslationsPl root) : this._root = root, super.internal(root); _TranslationsSeerrPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field final TranslationsPl _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Trackery'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Synchronizuj postęp oglądania z Trakt i innymi usługami.'; @override String get connectTitle => 'Połącz Seerr';
@override String get serverUrl => 'Adres URL serwera';
@override String get serverUrlHelper => 'Adres Twojej instancji Seerr';
@override String get checkServer => 'Kontynuuj';
@override String get signInWithJellyfin => 'Zaloguj się przez Jellyfin';
@override String get signInWithEmby => 'Zaloguj się przez Emby';
@override String get signInWithLocal => 'Użyj konta lokalnego';
@override String get email => 'E-mail';
@override String get noSignInMethods => 'Ta instancja Seerr nie oferuje metody logowania obsługiwanej przez Plezy.';
@override String get instance => 'Instancja';
@override String get disconnectConfirm => 'Odłączyć Seerr?';
@override String get disconnectConfirmBody => 'Plezy zapomni tę instancję Seerr. Połącz ponownie w dowolnym momencie.';
@override String get request => 'Zamów';
@override String get request4k => 'Zamów w 4K';
@override String get seasons => 'Sezony';
@override String get allSeasons => 'Wszystkie sezony';
@override String get advancedOptions => 'Zaawansowane';
@override String get destinationServer => 'Serwer docelowy';
@override String get qualityProfile => 'Profil jakości';
@override String get rootFolder => 'Folder główny';
@override String get languageProfile => 'Profil językowy';
@override String get requestSubmitted => 'Zamówienie wysłane';
@override String requestFailed({required Object error}) => 'Zamówienie nie powiodło się: ${error}';
@override String get requestsLoadFailed => 'Nie udało się wczytać opcji zamówienia';
@override String get nothingToRequest => 'Wszystko jest już dostępne lub zamówione.';
@override String get statusAvailable => 'Dostępne';
@override String get statusPartiallyAvailable => 'Częściowo dostępne';
@override String get statusRequested => 'Zamówione';
@override String get statusProcessing => 'Przetwarzanie';
}
// Path: services
class _TranslationsServicesPl extends TranslationsServicesEn {
_TranslationsServicesPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get title => 'Usługi';
@override String get hubSubtitle => 'Synchronizuj postęp oglądania i zamawiaj nowe tytuły.';
@override String get notConnected => 'Nie połączono'; @override String get notConnected => 'Nie połączono';
@override String connectedAs({required Object username}) => 'Połączono jako @${username}'; @override String connectedAs({required Object username}) => 'Połączono jako @${username}';
@override String get scrobble => 'Automatycznie śledź postęp'; @override String get scrobble => 'Automatycznie śledź postęp';
@@ -1664,10 +1740,10 @@ class _TranslationsTrackersPl extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Odłączyć ${service}?'; @override String disconnectConfirm({required Object service}) => 'Odłączyć ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy przestanie aktualizować ${service}. Połącz ponownie w dowolnym momencie.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy przestanie aktualizować ${service}. Połącz ponownie w dowolnym momencie.';
@override String connectFailed({required Object service}) => 'Nie udało się połączyć z ${service}. Spróbuj ponownie.'; @override String connectFailed({required Object service}) => 'Nie udało się połączyć z ${service}. Spróbuj ponownie.';
@override late final _TranslationsTrackersServicesPl services = _TranslationsTrackersServicesPl._(_root); @override late final _TranslationsServicesNamesPl names = _TranslationsServicesNamesPl._(_root);
@override late final _TranslationsTrackersDeviceCodePl deviceCode = _TranslationsTrackersDeviceCodePl._(_root); @override late final _TranslationsServicesDeviceCodePl deviceCode = _TranslationsServicesDeviceCodePl._(_root);
@override late final _TranslationsTrackersOauthProxyPl oauthProxy = _TranslationsTrackersOauthProxyPl._(_root); @override late final _TranslationsServicesOauthProxyPl oauthProxy = _TranslationsServicesOauthProxyPl._(_root);
@override late final _TranslationsTrackersLibraryFilterPl libraryFilter = _TranslationsTrackersLibraryFilterPl._(_root); @override late final _TranslationsServicesLibraryFilterPl libraryFilter = _TranslationsServicesLibraryFilterPl._(_root);
} }
// Path: addServer // Path: addServer
@@ -1834,6 +1910,41 @@ class _TranslationsLibrariesSortLabelsPl extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Data dodania ostatniego odcinka'; @override String get lastEpisodeDateAdded => 'Data dodania ostatniego odcinka';
} }
// Path: explore.rows
class _TranslationsExploreRowsPl extends TranslationsExploreRowsEn {
_TranslationsExploreRowsPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Lista do obejrzenia';
@override String get recommendedMovies => 'Rekomendowane filmy';
@override String get recommendedShows => 'Rekomendowane seriale';
@override String get trendingMovies => 'Filmy na czasie';
@override String get trendingShows => 'Seriale na czasie';
@override String get popularMovies => 'Popularne filmy';
@override String get popularShows => 'Popularne seriale';
@override String get suggestedAnime => 'Sugerowane anime';
@override String get airingAnime => 'Najlepsze emitowane anime';
@override String get popularAnime => 'Najpopularniejsze anime';
@override String get trending => 'Na czasie';
@override String get upcomingMovies => 'Nadchodzące filmy';
@override String get upcomingShows => 'Nadchodzące seriale';
}
// Path: explore.status
class _TranslationsExploreStatusPl extends TranslationsExploreStatusEn {
_TranslationsExploreStatusPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field
// Translations
@override String get airing => 'W emisji';
@override String get ended => 'Zakończony';
@override String get canceled => 'Anulowany';
@override String get upcoming => 'Nadchodzący';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionPl extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionPl extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionPl._(TranslationsPl root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionPl._(TranslationsPl root) : this._root = root, super.internal(root);
@@ -1930,9 +2041,9 @@ class _TranslationsCompanionRemoteErrorsPl extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Połączenie utracone'; @override String get connectionLost => 'Połączenie utracone';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesPl extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesPl extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesPl._(TranslationsPl root) : this._root = root, super.internal(root); _TranslationsServicesNamesPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field final TranslationsPl _root; // ignore: unused_field
@@ -1940,11 +2051,12 @@ class _TranslationsTrackersServicesPl extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodePl extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodePl extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodePl._(TranslationsPl root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodePl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field final TranslationsPl _root; // ignore: unused_field
@@ -1956,9 +2068,9 @@ class _TranslationsTrackersDeviceCodePl extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Kod skopiowany'; @override String get codeCopied => 'Kod skopiowany';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyPl extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyPl extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyPl._(TranslationsPl root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field final TranslationsPl _root; // ignore: unused_field
@@ -1969,9 +2081,9 @@ class _TranslationsTrackersOauthProxyPl extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL skopiowany'; @override String get urlCopied => 'URL skopiowany';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterPl extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterPl extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterPl._(TranslationsPl root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterPl._(TranslationsPl root) : this._root = root, super.internal(root);
final TranslationsPl _root; // ignore: unused_field final TranslationsPl _root; // ignore: unused_field
@@ -2235,8 +2347,8 @@ extension on TranslationsPl {
'settings.discordRichPresenceDescription' => 'Pokaż, co oglądasz na Discordzie', 'settings.discordRichPresenceDescription' => 'Pokaż, co oglądasz na Discordzie',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Synchronizuj historię oglądania z Trakt', 'settings.traktDescription' => 'Synchronizuj historię oglądania z Trakt',
'settings.trackers' => 'Trackery', 'settings.services' => 'Usługi',
'settings.trackersDescription' => 'Synchronizuj postęp z Trakt, MyAnimeList, AniList i Simkl', 'settings.servicesDescription' => 'Połącz Trakt, MyAnimeList, Seerr i inne',
'settings.companionRemoteServer' => 'Serwer zdalnego sterowania', 'settings.companionRemoteServer' => 'Serwer zdalnego sterowania',
'settings.companionRemoteServerDescription' => 'Pozwól urządzeniom mobilnym w sieci sterować tą aplikacją', 'settings.companionRemoteServerDescription' => 'Pozwól urządzeniom mobilnym w sieci sterować tą aplikacją',
'settings.autoPip' => 'Automatyczny obraz w obrazie', 'settings.autoPip' => 'Automatyczny obraz w obrazie',
@@ -2392,7 +2504,7 @@ extension on TranslationsPl {
'rateSheet.setScore' => 'Ustaw ocenę', 'rateSheet.setScore' => 'Ustaw ocenę',
'rateSheet.saved' => 'Zapisano', 'rateSheet.saved' => 'Zapisano',
'rateSheet.notAvailable' => 'Nie znaleziono dopasowania', 'rateSheet.notAvailable' => 'Nie znaleziono dopasowania',
'rateSheet.noConnectedTrackers' => 'Połącz tracker w Ustawieniach, aby tam oceniać.', 'rateSheet.noConnectedServices' => 'Połącz usługę w Ustawieniach, aby tam oceniać.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, serial TV', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, serial TV',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2773,6 +2885,42 @@ extension on TranslationsPl {
'navigation.libraries' => 'Biblioteki', 'navigation.libraries' => 'Biblioteki',
'navigation.downloads' => 'Pobrania', 'navigation.downloads' => 'Pobrania',
'navigation.liveTv' => 'TV na żywo', 'navigation.liveTv' => 'TV na żywo',
'navigation.explore' => 'Przeglądaj',
'explore.title' => 'Przeglądaj',
'explore.selectSource' => 'Wybierz źródło',
'explore.rows.watchlist' => 'Lista do obejrzenia',
'explore.rows.recommendedMovies' => 'Rekomendowane filmy',
'explore.rows.recommendedShows' => 'Rekomendowane seriale',
'explore.rows.trendingMovies' => 'Filmy na czasie',
'explore.rows.trendingShows' => 'Seriale na czasie',
'explore.rows.popularMovies' => 'Popularne filmy',
'explore.rows.popularShows' => 'Popularne seriale',
'explore.rows.suggestedAnime' => 'Sugerowane anime',
'explore.rows.airingAnime' => 'Najlepsze emitowane anime',
'explore.rows.popularAnime' => 'Najpopularniejsze anime',
'explore.rows.trending' => 'Na czasie',
'explore.rows.upcomingMovies' => 'Nadchodzące filmy',
'explore.rows.upcomingShows' => 'Nadchodzące seriale',
'explore.status.airing' => 'W emisji',
'explore.status.ended' => 'Zakończony',
'explore.status.canceled' => 'Anulowany',
'explore.status.upcoming' => 'Nadchodzący',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pl'))(n, one: '${n} odcinek', few: '${n} odcinki', many: '${n} odcinków', other: '${n} odcinka', ),
'explore.cast' => 'Obsada',
'explore.characters' => 'Postacie',
'explore.addToWatchlist' => 'Dodaj do listy do obejrzenia',
'explore.removeFromWatchlist' => 'Usuń z listy do obejrzenia',
'explore.watchlistUpdateFailed' => 'Nie udało się zaktualizować listy do obejrzenia',
'explore.notInLibrary' => 'Nie ma tego w Twojej bibliotece',
'explore.inTheseLibraries' => 'W tych bibliotekach',
'explore.availableOn' => ({required Object server}) => 'Dostępne na ${server}',
'explore.checkingLibrary' => 'Sprawdzanie Twojej biblioteki...',
'explore.emptyTitle' => 'Jeszcze nic tu nie ma',
'explore.emptyMessage' => ({required Object source}) => 'Wiersze z ${source} pojawią się tutaj, gdy będą zawierać treści.',
'explore.searchHint' => ({required Object source}) => 'Szukaj w ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Brak wyników dla "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Szukaj filmów i seriali w ${source}.',
'explore.searchFailed' => 'Wyszukiwanie nie powiodło się. Sprawdź połączenie i spróbuj ponownie.',
'liveTv.title' => 'TV na żywo', 'liveTv.title' => 'TV na żywo',
'liveTv.guide' => 'Przewodnik', 'liveTv.guide' => 'Przewodnik',
'liveTv.noChannels' => 'Brak dostępnych kanałów', 'liveTv.noChannels' => 'Brak dostępnych kanałów',
@@ -2988,6 +3136,8 @@ extension on TranslationsPl {
'downloads.cancelledDownloadMessage' => 'To pobieranie zostało anulowane. Co chcesz zrobić?', 'downloads.cancelledDownloadMessage' => 'To pobieranie zostało anulowane. Co chcesz zrobić?',
'downloads.allEpisodesAlreadyDownloaded' => 'Wszystkie odcinki są już pobrane', 'downloads.allEpisodesAlreadyDownloaded' => 'Wszystkie odcinki są już pobrane',
'downloads.resumeDownload' => 'Wznów pobieranie', 'downloads.resumeDownload' => 'Wznów pobieranie',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Anulowane pobieranie', 'downloads.cancelledDownload' => 'Anulowane pobieranie',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synchronizowanie ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synchronizowanie ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => 'Pobrano ${file} — kliknij, aby dokończyć', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => 'Pobrano ${file} — kliknij, aby dokończyć',
@@ -3024,8 +3174,6 @@ extension on TranslationsPl {
'downloads.noSyncRules' => 'Brak reguł synchronizacji', 'downloads.noSyncRules' => 'Brak reguł synchronizacji',
'downloads.manageSyncRule' => 'Zarządzaj synchronizacją', 'downloads.manageSyncRule' => 'Zarządzaj synchronizacją',
'downloads.editEpisodeCount' => 'Liczba odcinków', 'downloads.editEpisodeCount' => 'Liczba odcinków',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Filtr synchronizacji', 'downloads.editSyncFilter' => 'Filtr synchronizacji',
'downloads.syncAllItems' => 'Synchronizuję wszystkie elementy', 'downloads.syncAllItems' => 'Synchronizuję wszystkie elementy',
'downloads.syncUnwatchedItems' => 'Synchronizuję nieobejrzane elementy', 'downloads.syncUnwatchedItems' => 'Synchronizuję nieobejrzane elementy',
@@ -3274,39 +3422,70 @@ extension on TranslationsPl {
'trakt.scrobbleDescription' => 'Wysyłaj zdarzenia odtwarzania, pauzy i zatrzymania do Trakt podczas odtwarzania.', 'trakt.scrobbleDescription' => 'Wysyłaj zdarzenia odtwarzania, pauzy i zatrzymania do Trakt podczas odtwarzania.',
'trakt.watchedSync' => 'Synchronizuj status obejrzane', 'trakt.watchedSync' => 'Synchronizuj status obejrzane',
'trakt.watchedSyncDescription' => 'Gdy oznaczysz pozycje jako obejrzane w Plezy, zostaną też oznaczone w Trakt.', 'trakt.watchedSyncDescription' => 'Gdy oznaczysz pozycje jako obejrzane w Plezy, zostaną też oznaczone w Trakt.',
'trackers.title' => 'Trackery', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Synchronizuj postęp oglądania z Trakt i innymi usługami.', 'seerr.connectTitle' => 'Połącz Seerr',
'trackers.notConnected' => 'Nie połączono', 'seerr.serverUrl' => 'Adres URL serwera',
'trackers.connectedAs' => ({required Object username}) => 'Połączono jako @${username}', 'seerr.serverUrlHelper' => 'Adres Twojej instancji Seerr',
'trackers.scrobble' => 'Automatycznie śledź postęp', 'seerr.checkServer' => 'Kontynuuj',
'trackers.scrobbleDescription' => 'Aktualizuj swoją listę po ukończeniu odcinka lub filmu.', 'seerr.signInWithJellyfin' => 'Zaloguj się przez Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Odłączyć ${service}?', 'seerr.signInWithEmby' => 'Zaloguj się przez Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy przestanie aktualizować ${service}. Połącz ponownie w dowolnym momencie.', 'seerr.signInWithLocal' => 'Użyj konta lokalnego',
'trackers.connectFailed' => ({required Object service}) => 'Nie udało się połączyć z ${service}. Spróbuj ponownie.', 'seerr.email' => 'E-mail',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Ta instancja Seerr nie oferuje metody logowania obsługiwanej przez Plezy.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instancja',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Odłączyć Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Aktywuj Plezy w ${service}', 'seerr.disconnectConfirmBody' => 'Plezy zapomni tę instancję Seerr. Połącz ponownie w dowolnym momencie.',
'trackers.deviceCode.body' => ({required Object url}) => 'Odwiedź ${url} i wpisz ten kod:', 'seerr.request' => 'Zamów',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Otwórz ${service}, aby aktywować', 'seerr.request4k' => 'Zamów w 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Oczekiwanie na autoryzację…', 'seerr.seasons' => 'Sezony',
'trackers.deviceCode.codeCopied' => 'Kod skopiowany', 'seerr.allSeasons' => 'Wszystkie sezony',
'trackers.oauthProxy.title' => ({required Object service}) => 'Zaloguj się do ${service}', 'seerr.advancedOptions' => 'Zaawansowane',
'trackers.oauthProxy.body' => 'Zeskanuj ten kod QR lub otwórz URL na dowolnym urządzeniu.', 'seerr.destinationServer' => 'Serwer docelowy',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Otwórz ${service}, aby się zalogować', 'seerr.qualityProfile' => 'Profil jakości',
'trackers.oauthProxy.urlCopied' => 'URL skopiowany', 'seerr.rootFolder' => 'Folder główny',
'trackers.libraryFilter.title' => 'Filtr bibliotek', 'seerr.languageProfile' => 'Profil językowy',
'trackers.libraryFilter.subtitleAllSyncing' => 'Synchronizowanie wszystkich bibliotek', 'seerr.requestSubmitted' => 'Zamówienie wysłane',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Nic nie synchronizuje', 'seerr.requestFailed' => ({required Object error}) => 'Zamówienie nie powiodło się: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} zablokowanych', 'seerr.requestsLoadFailed' => 'Nie udało się wczytać opcji zamówienia',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} dozwolonych', 'seerr.nothingToRequest' => 'Wszystko jest już dostępne lub zamówione.',
'trackers.libraryFilter.mode' => 'Tryb filtra', 'seerr.statusAvailable' => 'Dostępne',
'trackers.libraryFilter.modeBlacklist' => 'Czarna lista', 'seerr.statusPartiallyAvailable' => 'Częściowo dostępne',
'trackers.libraryFilter.modeWhitelist' => 'Biała lista', 'seerr.statusRequested' => 'Zamówione',
'trackers.libraryFilter.modeHintBlacklist' => 'Synchronizuj wszystkie biblioteki oprócz zaznaczonych poniżej.', 'seerr.statusProcessing' => 'Przetwarzanie',
'trackers.libraryFilter.modeHintWhitelist' => 'Synchronizuj tylko biblioteki zaznaczone poniżej.', 'services.title' => 'Usługi',
'trackers.libraryFilter.libraries' => 'Biblioteki', 'services.hubSubtitle' => 'Synchronizuj postęp oglądania i zamawiaj nowe tytuły.',
'trackers.libraryFilter.noLibraries' => 'Brak dostępnych bibliotek', 'services.notConnected' => 'Nie połączono',
'services.connectedAs' => ({required Object username}) => 'Połączono jako @${username}',
'services.scrobble' => 'Automatycznie śledź postęp',
'services.scrobbleDescription' => 'Aktualizuj swoją listę po ukończeniu odcinka lub filmu.',
'services.disconnectConfirm' => ({required Object service}) => 'Odłączyć ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy przestanie aktualizować ${service}. Połącz ponownie w dowolnym momencie.',
'services.connectFailed' => ({required Object service}) => 'Nie udało się połączyć z ${service}. Spróbuj ponownie.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Aktywuj Plezy w ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Odwiedź ${url} i wpisz ten kod:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Otwórz ${service}, aby aktywować',
'services.deviceCode.waitingForAuthorization' => 'Oczekiwanie na autoryzację…',
'services.deviceCode.codeCopied' => 'Kod skopiowany',
'services.oauthProxy.title' => ({required Object service}) => 'Zaloguj się do ${service}',
'services.oauthProxy.body' => 'Zeskanuj ten kod QR lub otwórz URL na dowolnym urządzeniu.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Otwórz ${service}, aby się zalogować',
'services.oauthProxy.urlCopied' => 'URL skopiowany',
'services.libraryFilter.title' => 'Filtr bibliotek',
'services.libraryFilter.subtitleAllSyncing' => 'Synchronizowanie wszystkich bibliotek',
'services.libraryFilter.subtitleNoneSyncing' => 'Nic nie synchronizuje',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} zablokowanych',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} dozwolonych',
'services.libraryFilter.mode' => 'Tryb filtra',
'services.libraryFilter.modeBlacklist' => 'Czarna lista',
'services.libraryFilter.modeWhitelist' => 'Biała lista',
'services.libraryFilter.modeHintBlacklist' => 'Synchronizuj wszystkie biblioteki oprócz zaznaczonych poniżej.',
'services.libraryFilter.modeHintWhitelist' => 'Synchronizuj tylko biblioteki zaznaczone poniżej.',
'services.libraryFilter.libraries' => 'Biblioteki',
'services.libraryFilter.noLibraries' => 'Brak dostępnych bibliotek',
'addServer.addJellyfinTitle' => 'Dodaj serwer Jellyfin', 'addServer.addJellyfinTitle' => 'Dodaj serwer Jellyfin',
'addServer.serverUrls' => 'URL-e serwera', 'addServer.serverUrls' => 'URL-e serwera',
'addServer.serverUrlsHelper' => 'Można podać wiele adresów URL, rozdzielonych przecinkami.', 'addServer.serverUrlsHelper' => 'Można podać wiele adresów URL, rozdzielonych przecinkami.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsPt extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsPt logs = _TranslationsLogsPt._(_root); @override late final _TranslationsLogsPt logs = _TranslationsLogsPt._(_root);
@override late final _TranslationsLicensesPt licenses = _TranslationsLicensesPt._(_root); @override late final _TranslationsLicensesPt licenses = _TranslationsLicensesPt._(_root);
@override late final _TranslationsNavigationPt navigation = _TranslationsNavigationPt._(_root); @override late final _TranslationsNavigationPt navigation = _TranslationsNavigationPt._(_root);
@override late final _TranslationsExplorePt explore = _TranslationsExplorePt._(_root);
@override late final _TranslationsLiveTvPt liveTv = _TranslationsLiveTvPt._(_root); @override late final _TranslationsLiveTvPt liveTv = _TranslationsLiveTvPt._(_root);
@override late final _TranslationsCollectionsPt collections = _TranslationsCollectionsPt._(_root); @override late final _TranslationsCollectionsPt collections = _TranslationsCollectionsPt._(_root);
@override late final _TranslationsPlaylistsPt playlists = _TranslationsPlaylistsPt._(_root); @override late final _TranslationsPlaylistsPt playlists = _TranslationsPlaylistsPt._(_root);
@@ -84,7 +85,8 @@ class TranslationsPt extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenPt matchScreen = _TranslationsMatchScreenPt._(_root); @override late final _TranslationsMatchScreenPt matchScreen = _TranslationsMatchScreenPt._(_root);
@override late final _TranslationsServerTasksPt serverTasks = _TranslationsServerTasksPt._(_root); @override late final _TranslationsServerTasksPt serverTasks = _TranslationsServerTasksPt._(_root);
@override late final _TranslationsTraktPt trakt = _TranslationsTraktPt._(_root); @override late final _TranslationsTraktPt trakt = _TranslationsTraktPt._(_root);
@override late final _TranslationsTrackersPt trackers = _TranslationsTrackersPt._(_root); @override late final _TranslationsSeerrPt seerr = _TranslationsSeerrPt._(_root);
@override late final _TranslationsServicesPt services = _TranslationsServicesPt._(_root);
@override late final _TranslationsAddServerPt addServer = _TranslationsAddServerPt._(_root); @override late final _TranslationsAddServerPt addServer = _TranslationsAddServerPt._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsPt extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Mostrar o que você está assistindo no Discord'; @override String get discordRichPresenceDescription => 'Mostrar o que você está assistindo no Discord';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Sincronizar histórico de exibição com Trakt'; @override String get traktDescription => 'Sincronizar histórico de exibição com Trakt';
@override String get trackers => 'Rastreadores'; @override String get services => 'Serviços';
@override String get trackersDescription => 'Sincronizar progresso com Trakt, MyAnimeList, AniList e Simkl'; @override String get servicesDescription => 'Conecte Trakt, MyAnimeList, Seerr e mais';
@override String get companionRemoteServer => 'Servidor de controlo remoto'; @override String get companionRemoteServer => 'Servidor de controlo remoto';
@override String get companionRemoteServerDescription => 'Permitir que dispositivos móveis na sua rede controlem esta aplicação'; @override String get companionRemoteServerDescription => 'Permitir que dispositivos móveis na sua rede controlem esta aplicação';
@override String get autoPip => 'Picture-in-Picture Automático'; @override String get autoPip => 'Picture-in-Picture Automático';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetPt extends TranslationsRateSheetEn {
@override String get setScore => 'Definir pontuação'; @override String get setScore => 'Definir pontuação';
@override String get saved => 'Salvo'; @override String get saved => 'Salvo';
@override String get notAvailable => 'Nenhuma correspondência encontrada'; @override String get notAvailable => 'Nenhuma correspondência encontrada';
@override String get noConnectedTrackers => 'Conecte um rastreador em Configurações para avaliar lá.'; @override String get noConnectedServices => 'Conecte um serviço nas Configurações para avaliar por lá.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationPt extends TranslationsNavigationEn {
@override String get libraries => 'Bibliotecas'; @override String get libraries => 'Bibliotecas';
@override String get downloads => 'Downloads'; @override String get downloads => 'Downloads';
@override String get liveTv => 'TV ao Vivo'; @override String get liveTv => 'TV ao Vivo';
@override String get explore => 'Explorar';
}
// Path: explore
class _TranslationsExplorePt extends TranslationsExploreEn {
_TranslationsExplorePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get title => 'Explorar';
@override String get selectSource => 'Selecionar fonte';
@override late final _TranslationsExploreRowsPt rows = _TranslationsExploreRowsPt._(_root);
@override late final _TranslationsExploreStatusPt status = _TranslationsExploreStatusPt._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pt'))(n,
one: '${n} episódio',
other: '${n} episódios',
);
@override String get cast => 'Elenco';
@override String get characters => 'Personagens';
@override String get addToWatchlist => 'Adicionar à lista para ver';
@override String get removeFromWatchlist => 'Remover da lista para ver';
@override String get watchlistUpdateFailed => 'Não foi possível atualizar a lista para ver';
@override String get notInLibrary => 'Não está na sua biblioteca';
@override String get inTheseLibraries => 'Nestas bibliotecas';
@override String availableOn({required Object server}) => 'Disponível em ${server}';
@override String get checkingLibrary => 'Verificando a sua biblioteca...';
@override String get emptyTitle => 'Ainda não há nada aqui';
@override String emptyMessage({required Object source}) => 'As linhas de ${source} aparecerão aqui quando tiverem conteúdo.';
@override String searchHint({required Object source}) => 'Buscar em ${source}';
@override String searchEmpty({required Object query}) => 'Nenhum resultado para "${query}"';
@override String searchPrompt({required Object source}) => 'Busque filmes e séries em ${source}.';
@override String get searchFailed => 'Falha na busca. Verifique sua conexão e tente novamente.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktPt extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Ao marcar itens como assistidos no Plezy, eles também serão marcados no Trakt.'; @override String get watchedSyncDescription => 'Ao marcar itens como assistidos no Plezy, eles também serão marcados no Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersPt extends TranslationsTrackersEn { class _TranslationsSeerrPt extends TranslationsSeerrEn {
_TranslationsTrackersPt._(TranslationsPt root) : this._root = root, super.internal(root); _TranslationsSeerrPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field final TranslationsPt _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Rastreadores'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Sincronize o progresso assistido com Trakt e outros serviços.'; @override String get connectTitle => 'Conectar Seerr';
@override String get serverUrl => 'URL do servidor';
@override String get serverUrlHelper => 'O endereço da sua instância do Seerr';
@override String get checkServer => 'Continuar';
@override String get signInWithJellyfin => 'Entrar com Jellyfin';
@override String get signInWithEmby => 'Entrar com Emby';
@override String get signInWithLocal => 'Usar uma conta local';
@override String get email => 'E-mail';
@override String get noSignInMethods => 'Esta instância do Seerr não oferece nenhum método de login compatível com o Plezy.';
@override String get instance => 'Instância';
@override String get disconnectConfirm => 'Desconectar Seerr?';
@override String get disconnectConfirmBody => 'O Plezy esquecerá esta instância do Seerr. Reconecte quando quiser.';
@override String get request => 'Solicitar';
@override String get request4k => 'Solicitar em 4K';
@override String get seasons => 'Temporadas';
@override String get allSeasons => 'Todas as temporadas';
@override String get advancedOptions => 'Avançado';
@override String get destinationServer => 'Servidor de destino';
@override String get qualityProfile => 'Perfil de qualidade';
@override String get rootFolder => 'Pasta raiz';
@override String get languageProfile => 'Perfil de idioma';
@override String get requestSubmitted => 'Solicitação enviada';
@override String requestFailed({required Object error}) => 'Falha na solicitação: ${error}';
@override String get requestsLoadFailed => 'Não foi possível carregar as opções de solicitação';
@override String get nothingToRequest => 'Tudo já está disponível ou solicitado.';
@override String get statusAvailable => 'Disponível';
@override String get statusPartiallyAvailable => 'Parcialmente disponível';
@override String get statusRequested => 'Solicitado';
@override String get statusProcessing => 'Processando';
}
// Path: services
class _TranslationsServicesPt extends TranslationsServicesEn {
_TranslationsServicesPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get title => 'Serviços';
@override String get hubSubtitle => 'Sincronize o progresso de exibição e solicite novos títulos.';
@override String get notConnected => 'Não conectado'; @override String get notConnected => 'Não conectado';
@override String connectedAs({required Object username}) => 'Conectado como @${username}'; @override String connectedAs({required Object username}) => 'Conectado como @${username}';
@override String get scrobble => 'Registrar progresso automaticamente'; @override String get scrobble => 'Registrar progresso automaticamente';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersPt extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Desconectar ${service}?'; @override String disconnectConfirm({required Object service}) => 'Desconectar ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy deixará de atualizar ${service}. Reconecte quando quiser.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy deixará de atualizar ${service}. Reconecte quando quiser.';
@override String connectFailed({required Object service}) => 'Não foi possível conectar ao ${service}. Tente novamente.'; @override String connectFailed({required Object service}) => 'Não foi possível conectar ao ${service}. Tente novamente.';
@override late final _TranslationsTrackersServicesPt services = _TranslationsTrackersServicesPt._(_root); @override late final _TranslationsServicesNamesPt names = _TranslationsServicesNamesPt._(_root);
@override late final _TranslationsTrackersDeviceCodePt deviceCode = _TranslationsTrackersDeviceCodePt._(_root); @override late final _TranslationsServicesDeviceCodePt deviceCode = _TranslationsServicesDeviceCodePt._(_root);
@override late final _TranslationsTrackersOauthProxyPt oauthProxy = _TranslationsTrackersOauthProxyPt._(_root); @override late final _TranslationsServicesOauthProxyPt oauthProxy = _TranslationsServicesOauthProxyPt._(_root);
@override late final _TranslationsTrackersLibraryFilterPt libraryFilter = _TranslationsTrackersLibraryFilterPt._(_root); @override late final _TranslationsServicesLibraryFilterPt libraryFilter = _TranslationsServicesLibraryFilterPt._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsPt extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Data de adição do último episódio'; @override String get lastEpisodeDateAdded => 'Data de adição do último episódio';
} }
// Path: explore.rows
class _TranslationsExploreRowsPt extends TranslationsExploreRowsEn {
_TranslationsExploreRowsPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Lista para ver';
@override String get recommendedMovies => 'Filmes recomendados';
@override String get recommendedShows => 'Séries recomendadas';
@override String get trendingMovies => 'Filmes em alta';
@override String get trendingShows => 'Séries em alta';
@override String get popularMovies => 'Filmes populares';
@override String get popularShows => 'Séries populares';
@override String get suggestedAnime => 'Anime sugerido';
@override String get airingAnime => 'Melhor anime em exibição';
@override String get popularAnime => 'Anime mais popular';
@override String get trending => 'Em alta';
@override String get upcomingMovies => 'Próximos filmes';
@override String get upcomingShows => 'Próximas séries';
}
// Path: explore.status
class _TranslationsExploreStatusPt extends TranslationsExploreStatusEn {
_TranslationsExploreStatusPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get airing => 'Em exibição';
@override String get ended => 'Finalizada';
@override String get canceled => 'Cancelada';
@override String get upcoming => 'Em breve';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionPt extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionPt extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionPt._(TranslationsPt root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionPt._(TranslationsPt root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsPt extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Conexão perdida'; @override String get connectionLost => 'Conexão perdida';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesPt extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesPt extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesPt._(TranslationsPt root) : this._root = root, super.internal(root); _TranslationsServicesNamesPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field final TranslationsPt _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesPt extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodePt extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodePt extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodePt._(TranslationsPt root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodePt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field final TranslationsPt _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodePt extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Código copiado'; @override String get codeCopied => 'Código copiado';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyPt extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyPt extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyPt._(TranslationsPt root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field final TranslationsPt _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxyPt extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL copiado'; @override String get urlCopied => 'URL copiado';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterPt extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterPt extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterPt._(TranslationsPt root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field final TranslationsPt _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsPt {
'settings.discordRichPresenceDescription' => 'Mostrar o que você está assistindo no Discord', 'settings.discordRichPresenceDescription' => 'Mostrar o que você está assistindo no Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Sincronizar histórico de exibição com Trakt', 'settings.traktDescription' => 'Sincronizar histórico de exibição com Trakt',
'settings.trackers' => 'Rastreadores', 'settings.services' => 'Serviços',
'settings.trackersDescription' => 'Sincronizar progresso com Trakt, MyAnimeList, AniList e Simkl', 'settings.servicesDescription' => 'Conecte Trakt, MyAnimeList, Seerr e mais',
'settings.companionRemoteServer' => 'Servidor de controlo remoto', 'settings.companionRemoteServer' => 'Servidor de controlo remoto',
'settings.companionRemoteServerDescription' => 'Permitir que dispositivos móveis na sua rede controlem esta aplicação', 'settings.companionRemoteServerDescription' => 'Permitir que dispositivos móveis na sua rede controlem esta aplicação',
'settings.autoPip' => 'Picture-in-Picture Automático', 'settings.autoPip' => 'Picture-in-Picture Automático',
@@ -2390,7 +2500,7 @@ extension on TranslationsPt {
'rateSheet.setScore' => 'Definir pontuação', 'rateSheet.setScore' => 'Definir pontuação',
'rateSheet.saved' => 'Salvo', 'rateSheet.saved' => 'Salvo',
'rateSheet.notAvailable' => 'Nenhuma correspondência encontrada', 'rateSheet.notAvailable' => 'Nenhuma correspondência encontrada',
'rateSheet.noConnectedTrackers' => 'Conecte um rastreador em Configurações para avaliar lá.', 'rateSheet.noConnectedServices' => 'Conecte um serviço nas Configurações para avaliar por lá.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, filme', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, filme',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, série de TV', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, série de TV',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsPt {
'navigation.libraries' => 'Bibliotecas', 'navigation.libraries' => 'Bibliotecas',
'navigation.downloads' => 'Downloads', 'navigation.downloads' => 'Downloads',
'navigation.liveTv' => 'TV ao Vivo', 'navigation.liveTv' => 'TV ao Vivo',
'navigation.explore' => 'Explorar',
'explore.title' => 'Explorar',
'explore.selectSource' => 'Selecionar fonte',
'explore.rows.watchlist' => 'Lista para ver',
'explore.rows.recommendedMovies' => 'Filmes recomendados',
'explore.rows.recommendedShows' => 'Séries recomendadas',
'explore.rows.trendingMovies' => 'Filmes em alta',
'explore.rows.trendingShows' => 'Séries em alta',
'explore.rows.popularMovies' => 'Filmes populares',
'explore.rows.popularShows' => 'Séries populares',
'explore.rows.suggestedAnime' => 'Anime sugerido',
'explore.rows.airingAnime' => 'Melhor anime em exibição',
'explore.rows.popularAnime' => 'Anime mais popular',
'explore.rows.trending' => 'Em alta',
'explore.rows.upcomingMovies' => 'Próximos filmes',
'explore.rows.upcomingShows' => 'Próximas séries',
'explore.status.airing' => 'Em exibição',
'explore.status.ended' => 'Finalizada',
'explore.status.canceled' => 'Cancelada',
'explore.status.upcoming' => 'Em breve',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('pt'))(n, one: '${n} episódio', other: '${n} episódios', ),
'explore.cast' => 'Elenco',
'explore.characters' => 'Personagens',
'explore.addToWatchlist' => 'Adicionar à lista para ver',
'explore.removeFromWatchlist' => 'Remover da lista para ver',
'explore.watchlistUpdateFailed' => 'Não foi possível atualizar a lista para ver',
'explore.notInLibrary' => 'Não está na sua biblioteca',
'explore.inTheseLibraries' => 'Nestas bibliotecas',
'explore.availableOn' => ({required Object server}) => 'Disponível em ${server}',
'explore.checkingLibrary' => 'Verificando a sua biblioteca...',
'explore.emptyTitle' => 'Ainda não há nada aqui',
'explore.emptyMessage' => ({required Object source}) => 'As linhas de ${source} aparecerão aqui quando tiverem conteúdo.',
'explore.searchHint' => ({required Object source}) => 'Buscar em ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Nenhum resultado para "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Busque filmes e séries em ${source}.',
'explore.searchFailed' => 'Falha na busca. Verifique sua conexão e tente novamente.',
'liveTv.title' => 'TV ao Vivo', 'liveTv.title' => 'TV ao Vivo',
'liveTv.guide' => 'Guia', 'liveTv.guide' => 'Guia',
'liveTv.noChannels' => 'Nenhum canal disponível', 'liveTv.noChannels' => 'Nenhum canal disponível',
@@ -2986,6 +3132,8 @@ extension on TranslationsPt {
'downloads.cancelledDownloadMessage' => 'Este download foi cancelado. O que você deseja fazer?', 'downloads.cancelledDownloadMessage' => 'Este download foi cancelado. O que você deseja fazer?',
'downloads.allEpisodesAlreadyDownloaded' => 'Todos os episódios já foram baixados', 'downloads.allEpisodesAlreadyDownloaded' => 'Todos os episódios já foram baixados',
'downloads.resumeDownload' => 'Retomar download', 'downloads.resumeDownload' => 'Retomar download',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Download cancelado', 'downloads.cancelledDownload' => 'Download cancelado',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (sincronizando ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (sincronizando ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} baixado — clique para concluir', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} baixado — clique para concluir',
@@ -3022,8 +3170,6 @@ extension on TranslationsPt {
'downloads.noSyncRules' => 'Nenhuma regra de sincronização', 'downloads.noSyncRules' => 'Nenhuma regra de sincronização',
'downloads.manageSyncRule' => 'Gerenciar sincronização', 'downloads.manageSyncRule' => 'Gerenciar sincronização',
'downloads.editEpisodeCount' => 'Número de episódios', 'downloads.editEpisodeCount' => 'Número de episódios',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Filtro de sincronização', 'downloads.editSyncFilter' => 'Filtro de sincronização',
'downloads.syncAllItems' => 'Sincronizando todos os itens', 'downloads.syncAllItems' => 'Sincronizando todos os itens',
'downloads.syncUnwatchedItems' => 'Sincronizando itens não vistos', 'downloads.syncUnwatchedItems' => 'Sincronizando itens não vistos',
@@ -3272,39 +3418,70 @@ extension on TranslationsPt {
'trakt.scrobbleDescription' => 'Envia eventos de reprodução, pausa e parada ao Trakt durante a exibição.', 'trakt.scrobbleDescription' => 'Envia eventos de reprodução, pausa e parada ao Trakt durante a exibição.',
'trakt.watchedSync' => 'Sincronizar status de assistido', 'trakt.watchedSync' => 'Sincronizar status de assistido',
'trakt.watchedSyncDescription' => 'Ao marcar itens como assistidos no Plezy, eles também serão marcados no Trakt.', 'trakt.watchedSyncDescription' => 'Ao marcar itens como assistidos no Plezy, eles também serão marcados no Trakt.',
'trackers.title' => 'Rastreadores', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Sincronize o progresso assistido com Trakt e outros serviços.', 'seerr.connectTitle' => 'Conectar Seerr',
'trackers.notConnected' => 'Não conectado', 'seerr.serverUrl' => 'URL do servidor',
'trackers.connectedAs' => ({required Object username}) => 'Conectado como @${username}', 'seerr.serverUrlHelper' => 'O endereço da sua instância do Seerr',
'trackers.scrobble' => 'Registrar progresso automaticamente', 'seerr.checkServer' => 'Continuar',
'trackers.scrobbleDescription' => 'Atualiza sua lista quando você termina um episódio ou filme.', 'seerr.signInWithJellyfin' => 'Entrar com Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Desconectar ${service}?', 'seerr.signInWithEmby' => 'Entrar com Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy deixará de atualizar ${service}. Reconecte quando quiser.', 'seerr.signInWithLocal' => 'Usar uma conta local',
'trackers.connectFailed' => ({required Object service}) => 'Não foi possível conectar ao ${service}. Tente novamente.', 'seerr.email' => 'E-mail',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Esta instância do Seerr não oferece nenhum método de login compatível com o Plezy.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instância',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Desconectar Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Ativar Plezy no ${service}', 'seerr.disconnectConfirmBody' => 'O Plezy esquecerá esta instância do Seerr. Reconecte quando quiser.',
'trackers.deviceCode.body' => ({required Object url}) => 'Acesse ${url} e insira este código:', 'seerr.request' => 'Solicitar',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Abrir ${service} para ativar', 'seerr.request4k' => 'Solicitar em 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Aguardando autorização…', 'seerr.seasons' => 'Temporadas',
'trackers.deviceCode.codeCopied' => 'Código copiado', 'seerr.allSeasons' => 'Todas as temporadas',
'trackers.oauthProxy.title' => ({required Object service}) => 'Entrar no ${service}', 'seerr.advancedOptions' => 'Avançado',
'trackers.oauthProxy.body' => 'Escaneie este código QR ou abra a URL em qualquer dispositivo.', 'seerr.destinationServer' => 'Servidor de destino',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Abrir ${service} para entrar', 'seerr.qualityProfile' => 'Perfil de qualidade',
'trackers.oauthProxy.urlCopied' => 'URL copiado', 'seerr.rootFolder' => 'Pasta raiz',
'trackers.libraryFilter.title' => 'Filtro de bibliotecas', 'seerr.languageProfile' => 'Perfil de idioma',
'trackers.libraryFilter.subtitleAllSyncing' => 'Sincronizando todas as bibliotecas', 'seerr.requestSubmitted' => 'Solicitação enviada',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Nada a sincronizar', 'seerr.requestFailed' => ({required Object error}) => 'Falha na solicitação: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} bloqueadas', 'seerr.requestsLoadFailed' => 'Não foi possível carregar as opções de solicitação',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} permitidas', 'seerr.nothingToRequest' => 'Tudo já está disponível ou solicitado.',
'trackers.libraryFilter.mode' => 'Modo de filtro', 'seerr.statusAvailable' => 'Disponível',
'trackers.libraryFilter.modeBlacklist' => 'Lista negra', 'seerr.statusPartiallyAvailable' => 'Parcialmente disponível',
'trackers.libraryFilter.modeWhitelist' => 'Lista branca', 'seerr.statusRequested' => 'Solicitado',
'trackers.libraryFilter.modeHintBlacklist' => 'Sincronizar todas as bibliotecas exceto as marcadas abaixo.', 'seerr.statusProcessing' => 'Processando',
'trackers.libraryFilter.modeHintWhitelist' => 'Sincronizar apenas as bibliotecas marcadas abaixo.', 'services.title' => 'Serviços',
'trackers.libraryFilter.libraries' => 'Bibliotecas', 'services.hubSubtitle' => 'Sincronize o progresso de exibição e solicite novos títulos.',
'trackers.libraryFilter.noLibraries' => 'Nenhuma biblioteca disponível', 'services.notConnected' => 'Não conectado',
'services.connectedAs' => ({required Object username}) => 'Conectado como @${username}',
'services.scrobble' => 'Registrar progresso automaticamente',
'services.scrobbleDescription' => 'Atualiza sua lista quando você termina um episódio ou filme.',
'services.disconnectConfirm' => ({required Object service}) => 'Desconectar ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy deixará de atualizar ${service}. Reconecte quando quiser.',
'services.connectFailed' => ({required Object service}) => 'Não foi possível conectar ao ${service}. Tente novamente.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Ativar Plezy no ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Acesse ${url} e insira este código:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Abrir ${service} para ativar',
'services.deviceCode.waitingForAuthorization' => 'Aguardando autorização…',
'services.deviceCode.codeCopied' => 'Código copiado',
'services.oauthProxy.title' => ({required Object service}) => 'Entrar no ${service}',
'services.oauthProxy.body' => 'Escaneie este código QR ou abra a URL em qualquer dispositivo.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Abrir ${service} para entrar',
'services.oauthProxy.urlCopied' => 'URL copiado',
'services.libraryFilter.title' => 'Filtro de bibliotecas',
'services.libraryFilter.subtitleAllSyncing' => 'Sincronizando todas as bibliotecas',
'services.libraryFilter.subtitleNoneSyncing' => 'Nada a sincronizar',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} bloqueadas',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} permitidas',
'services.libraryFilter.mode' => 'Modo de filtro',
'services.libraryFilter.modeBlacklist' => 'Lista negra',
'services.libraryFilter.modeWhitelist' => 'Lista branca',
'services.libraryFilter.modeHintBlacklist' => 'Sincronizar todas as bibliotecas exceto as marcadas abaixo.',
'services.libraryFilter.modeHintWhitelist' => 'Sincronizar apenas as bibliotecas marcadas abaixo.',
'services.libraryFilter.libraries' => 'Bibliotecas',
'services.libraryFilter.noLibraries' => 'Nenhuma biblioteca disponível',
'addServer.addJellyfinTitle' => 'Adicionar servidor Jellyfin', 'addServer.addJellyfinTitle' => 'Adicionar servidor Jellyfin',
'addServer.serverUrls' => 'URLs do servidor', 'addServer.serverUrls' => 'URLs do servidor',
'addServer.serverUrlsHelper' => 'Vários URLs permitidos, separados por vírgulas.', 'addServer.serverUrlsHelper' => 'Vários URLs permitidos, separados por vírgulas.',
+242 -63
View File
@@ -69,6 +69,7 @@ class TranslationsRu extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsRu logs = _TranslationsLogsRu._(_root); @override late final _TranslationsLogsRu logs = _TranslationsLogsRu._(_root);
@override late final _TranslationsLicensesRu licenses = _TranslationsLicensesRu._(_root); @override late final _TranslationsLicensesRu licenses = _TranslationsLicensesRu._(_root);
@override late final _TranslationsNavigationRu navigation = _TranslationsNavigationRu._(_root); @override late final _TranslationsNavigationRu navigation = _TranslationsNavigationRu._(_root);
@override late final _TranslationsExploreRu explore = _TranslationsExploreRu._(_root);
@override late final _TranslationsLiveTvRu liveTv = _TranslationsLiveTvRu._(_root); @override late final _TranslationsLiveTvRu liveTv = _TranslationsLiveTvRu._(_root);
@override late final _TranslationsCollectionsRu collections = _TranslationsCollectionsRu._(_root); @override late final _TranslationsCollectionsRu collections = _TranslationsCollectionsRu._(_root);
@override late final _TranslationsPlaylistsRu playlists = _TranslationsPlaylistsRu._(_root); @override late final _TranslationsPlaylistsRu playlists = _TranslationsPlaylistsRu._(_root);
@@ -84,7 +85,8 @@ class TranslationsRu extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenRu matchScreen = _TranslationsMatchScreenRu._(_root); @override late final _TranslationsMatchScreenRu matchScreen = _TranslationsMatchScreenRu._(_root);
@override late final _TranslationsServerTasksRu serverTasks = _TranslationsServerTasksRu._(_root); @override late final _TranslationsServerTasksRu serverTasks = _TranslationsServerTasksRu._(_root);
@override late final _TranslationsTraktRu trakt = _TranslationsTraktRu._(_root); @override late final _TranslationsTraktRu trakt = _TranslationsTraktRu._(_root);
@override late final _TranslationsTrackersRu trackers = _TranslationsTrackersRu._(_root); @override late final _TranslationsSeerrRu seerr = _TranslationsSeerrRu._(_root);
@override late final _TranslationsServicesRu services = _TranslationsServicesRu._(_root);
@override late final _TranslationsAddServerRu addServer = _TranslationsAddServerRu._(_root); @override late final _TranslationsAddServerRu addServer = _TranslationsAddServerRu._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsRu extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Показывать, что вы смотрите, в Discord'; @override String get discordRichPresenceDescription => 'Показывать, что вы смотрите, в Discord';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Синхронизировать историю просмотров с Trakt'; @override String get traktDescription => 'Синхронизировать историю просмотров с Trakt';
@override String get trackers => 'Трекеры'; @override String get services => 'Сервисы';
@override String get trackersDescription => 'Синхронизировать прогресс с Trakt, MyAnimeList, AniList и Simkl'; @override String get servicesDescription => 'Подключите Trakt, MyAnimeList, Seerr и другие';
@override String get companionRemoteServer => 'Сервер удалённого управления'; @override String get companionRemoteServer => 'Сервер удалённого управления';
@override String get companionRemoteServerDescription => 'Разрешить мобильным устройствам в сети управлять этим приложением'; @override String get companionRemoteServerDescription => 'Разрешить мобильным устройствам в сети управлять этим приложением';
@override String get autoPip => 'Автоматический «картинка в картинке»'; @override String get autoPip => 'Автоматический «картинка в картинке»';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetRu extends TranslationsRateSheetEn {
@override String get setScore => 'Установить оценку'; @override String get setScore => 'Установить оценку';
@override String get saved => 'Сохранено'; @override String get saved => 'Сохранено';
@override String get notAvailable => 'Совпадений не найдено'; @override String get notAvailable => 'Совпадений не найдено';
@override String get noConnectedTrackers => 'Подключите трекер в настройках, чтобы оценивать там.'; @override String get noConnectedServices => 'Подключите сервис в настройках, чтобы оценивать здесь.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,41 @@ class _TranslationsNavigationRu extends TranslationsNavigationEn {
@override String get libraries => 'Библиотеки'; @override String get libraries => 'Библиотеки';
@override String get downloads => 'Загрузки'; @override String get downloads => 'Загрузки';
@override String get liveTv => 'ТВ в прямом эфире'; @override String get liveTv => 'ТВ в прямом эфире';
@override String get explore => 'Исследовать';
}
// Path: explore
class _TranslationsExploreRu extends TranslationsExploreEn {
_TranslationsExploreRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get title => 'Исследовать';
@override String get selectSource => 'Выбрать источник';
@override late final _TranslationsExploreRowsRu rows = _TranslationsExploreRowsRu._(_root);
@override late final _TranslationsExploreStatusRu status = _TranslationsExploreStatusRu._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n,
one: '${n} эпизод',
few: '${n} эпизода',
many: '${n} эпизодов',
other: '${n} эпизода',
);
@override String get cast => 'В ролях';
@override String get characters => 'Персонажи';
@override String get addToWatchlist => 'Добавить в список для просмотра';
@override String get removeFromWatchlist => 'Удалить из списка для просмотра';
@override String get watchlistUpdateFailed => 'Не удалось обновить список для просмотра';
@override String get notInLibrary => 'Нет в вашей библиотеке';
@override String get inTheseLibraries => 'В этих библиотеках';
@override String availableOn({required Object server}) => 'Доступно на ${server}';
@override String get checkingLibrary => 'Проверка вашей библиотеки...';
@override String get emptyTitle => 'Здесь пока ничего нет';
@override String emptyMessage({required Object source}) => 'Строки из ${source} появятся здесь, когда в них будет контент.';
@override String searchHint({required Object source}) => 'Поиск в ${source}';
@override String searchEmpty({required Object query}) => 'Нет результатов по запросу "${query}"';
@override String searchPrompt({required Object source}) => 'Ищите фильмы и сериалы в ${source}.';
@override String get searchFailed => 'Ошибка поиска. Проверьте подключение и повторите попытку.';
} }
// Path: liveTv // Path: liveTv
@@ -1648,15 +1685,54 @@ class _TranslationsTraktRu extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'Когда вы отмечаете элементы как просмотренные в Plezy, они отмечаются и в Trakt.'; @override String get watchedSyncDescription => 'Когда вы отмечаете элементы как просмотренные в Plezy, они отмечаются и в Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersRu extends TranslationsTrackersEn { class _TranslationsSeerrRu extends TranslationsSeerrEn {
_TranslationsTrackersRu._(TranslationsRu root) : this._root = root, super.internal(root); _TranslationsSeerrRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field final TranslationsRu _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Трекеры'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Синхронизируйте прогресс просмотра с Trakt и другими сервисами.'; @override String get connectTitle => 'Подключить Seerr';
@override String get serverUrl => 'URL сервера';
@override String get serverUrlHelper => 'Адрес вашего экземпляра Seerr';
@override String get checkServer => 'Продолжить';
@override String get signInWithJellyfin => 'Войти через Jellyfin';
@override String get signInWithEmby => 'Войти через Emby';
@override String get signInWithLocal => 'Использовать локальную учётную запись';
@override String get email => 'Эл. почта';
@override String get noSignInMethods => 'Этот экземпляр Seerr не предлагает способа входа, поддерживаемого Plezy.';
@override String get instance => 'Экземпляр';
@override String get disconnectConfirm => 'Отключить Seerr?';
@override String get disconnectConfirmBody => 'Plezy забудет этот экземпляр Seerr. Подключитесь снова в любое время.';
@override String get request => 'Запросить';
@override String get request4k => 'Запросить в 4K';
@override String get seasons => 'Сезоны';
@override String get allSeasons => 'Все сезоны';
@override String get advancedOptions => 'Дополнительно';
@override String get destinationServer => 'Целевой сервер';
@override String get qualityProfile => 'Профиль качества';
@override String get rootFolder => 'Корневая папка';
@override String get languageProfile => 'Языковой профиль';
@override String get requestSubmitted => 'Запрос отправлен';
@override String requestFailed({required Object error}) => 'Ошибка запроса: ${error}';
@override String get requestsLoadFailed => 'Не удалось загрузить параметры запроса';
@override String get nothingToRequest => 'Всё уже доступно или запрошено.';
@override String get statusAvailable => 'Доступно';
@override String get statusPartiallyAvailable => 'Частично доступно';
@override String get statusRequested => 'Запрошено';
@override String get statusProcessing => 'Обработка';
}
// Path: services
class _TranslationsServicesRu extends TranslationsServicesEn {
_TranslationsServicesRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get title => 'Сервисы';
@override String get hubSubtitle => 'Синхронизируйте прогресс просмотра и запрашивайте новые тайтлы.';
@override String get notConnected => 'Не подключено'; @override String get notConnected => 'Не подключено';
@override String connectedAs({required Object username}) => 'Подключено как @${username}'; @override String connectedAs({required Object username}) => 'Подключено как @${username}';
@override String get scrobble => 'Автоматически отслеживать прогресс'; @override String get scrobble => 'Автоматически отслеживать прогресс';
@@ -1664,10 +1740,10 @@ class _TranslationsTrackersRu extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Отключить ${service}?'; @override String disconnectConfirm({required Object service}) => 'Отключить ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy перестанет обновлять ${service}. Подключите снова в любое время.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy перестанет обновлять ${service}. Подключите снова в любое время.';
@override String connectFailed({required Object service}) => 'Не удалось подключиться к ${service}. Попробуйте ещё раз.'; @override String connectFailed({required Object service}) => 'Не удалось подключиться к ${service}. Попробуйте ещё раз.';
@override late final _TranslationsTrackersServicesRu services = _TranslationsTrackersServicesRu._(_root); @override late final _TranslationsServicesNamesRu names = _TranslationsServicesNamesRu._(_root);
@override late final _TranslationsTrackersDeviceCodeRu deviceCode = _TranslationsTrackersDeviceCodeRu._(_root); @override late final _TranslationsServicesDeviceCodeRu deviceCode = _TranslationsServicesDeviceCodeRu._(_root);
@override late final _TranslationsTrackersOauthProxyRu oauthProxy = _TranslationsTrackersOauthProxyRu._(_root); @override late final _TranslationsServicesOauthProxyRu oauthProxy = _TranslationsServicesOauthProxyRu._(_root);
@override late final _TranslationsTrackersLibraryFilterRu libraryFilter = _TranslationsTrackersLibraryFilterRu._(_root); @override late final _TranslationsServicesLibraryFilterRu libraryFilter = _TranslationsServicesLibraryFilterRu._(_root);
} }
// Path: addServer // Path: addServer
@@ -1834,6 +1910,41 @@ class _TranslationsLibrariesSortLabelsRu extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Дата добавления последнего эпизода'; @override String get lastEpisodeDateAdded => 'Дата добавления последнего эпизода';
} }
// Path: explore.rows
class _TranslationsExploreRowsRu extends TranslationsExploreRowsEn {
_TranslationsExploreRowsRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Список для просмотра';
@override String get recommendedMovies => 'Рекомендуемые фильмы';
@override String get recommendedShows => 'Рекомендуемые сериалы';
@override String get trendingMovies => 'Фильмы в тренде';
@override String get trendingShows => 'Сериалы в тренде';
@override String get popularMovies => 'Популярные фильмы';
@override String get popularShows => 'Популярные сериалы';
@override String get suggestedAnime => 'Рекомендуемые аниме';
@override String get airingAnime => 'Топ выходящих аниме';
@override String get popularAnime => 'Самые популярные аниме';
@override String get trending => 'В тренде';
@override String get upcomingMovies => 'Ожидаемые фильмы';
@override String get upcomingShows => 'Ожидаемые сериалы';
}
// Path: explore.status
class _TranslationsExploreStatusRu extends TranslationsExploreStatusEn {
_TranslationsExploreStatusRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field
// Translations
@override String get airing => 'Выходит';
@override String get ended => 'Завершён';
@override String get canceled => 'Отменён';
@override String get upcoming => 'Скоро';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionRu extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionRu extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionRu._(TranslationsRu root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionRu._(TranslationsRu root) : this._root = root, super.internal(root);
@@ -1930,9 +2041,9 @@ class _TranslationsCompanionRemoteErrorsRu extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Соединение потеряно'; @override String get connectionLost => 'Соединение потеряно';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesRu extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesRu extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesRu._(TranslationsRu root) : this._root = root, super.internal(root); _TranslationsServicesNamesRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field final TranslationsRu _root; // ignore: unused_field
@@ -1940,11 +2051,12 @@ class _TranslationsTrackersServicesRu extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeRu extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeRu extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeRu._(TranslationsRu root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field final TranslationsRu _root; // ignore: unused_field
@@ -1956,9 +2068,9 @@ class _TranslationsTrackersDeviceCodeRu extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Код скопирован'; @override String get codeCopied => 'Код скопирован';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyRu extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyRu extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyRu._(TranslationsRu root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field final TranslationsRu _root; // ignore: unused_field
@@ -1969,9 +2081,9 @@ class _TranslationsTrackersOauthProxyRu extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL скопирован'; @override String get urlCopied => 'URL скопирован';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterRu extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterRu extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterRu._(TranslationsRu root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterRu._(TranslationsRu root) : this._root = root, super.internal(root);
final TranslationsRu _root; // ignore: unused_field final TranslationsRu _root; // ignore: unused_field
@@ -2235,8 +2347,8 @@ extension on TranslationsRu {
'settings.discordRichPresenceDescription' => 'Показывать, что вы смотрите, в Discord', 'settings.discordRichPresenceDescription' => 'Показывать, что вы смотрите, в Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Синхронизировать историю просмотров с Trakt', 'settings.traktDescription' => 'Синхронизировать историю просмотров с Trakt',
'settings.trackers' => 'Трекеры', 'settings.services' => 'Сервисы',
'settings.trackersDescription' => 'Синхронизировать прогресс с Trakt, MyAnimeList, AniList и Simkl', 'settings.servicesDescription' => 'Подключите Trakt, MyAnimeList, Seerr и другие',
'settings.companionRemoteServer' => 'Сервер удалённого управления', 'settings.companionRemoteServer' => 'Сервер удалённого управления',
'settings.companionRemoteServerDescription' => 'Разрешить мобильным устройствам в сети управлять этим приложением', 'settings.companionRemoteServerDescription' => 'Разрешить мобильным устройствам в сети управлять этим приложением',
'settings.autoPip' => 'Автоматический «картинка в картинке»', 'settings.autoPip' => 'Автоматический «картинка в картинке»',
@@ -2392,7 +2504,7 @@ extension on TranslationsRu {
'rateSheet.setScore' => 'Установить оценку', 'rateSheet.setScore' => 'Установить оценку',
'rateSheet.saved' => 'Сохранено', 'rateSheet.saved' => 'Сохранено',
'rateSheet.notAvailable' => 'Совпадений не найдено', 'rateSheet.notAvailable' => 'Совпадений не найдено',
'rateSheet.noConnectedTrackers' => 'Подключите трекер в настройках, чтобы оценивать там.', 'rateSheet.noConnectedServices' => 'Подключите сервис в настройках, чтобы оценивать здесь.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, фильм', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, фильм',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, сериал', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, сериал',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2773,6 +2885,42 @@ extension on TranslationsRu {
'navigation.libraries' => 'Библиотеки', 'navigation.libraries' => 'Библиотеки',
'navigation.downloads' => 'Загрузки', 'navigation.downloads' => 'Загрузки',
'navigation.liveTv' => 'ТВ в прямом эфире', 'navigation.liveTv' => 'ТВ в прямом эфире',
'navigation.explore' => 'Исследовать',
'explore.title' => 'Исследовать',
'explore.selectSource' => 'Выбрать источник',
'explore.rows.watchlist' => 'Список для просмотра',
'explore.rows.recommendedMovies' => 'Рекомендуемые фильмы',
'explore.rows.recommendedShows' => 'Рекомендуемые сериалы',
'explore.rows.trendingMovies' => 'Фильмы в тренде',
'explore.rows.trendingShows' => 'Сериалы в тренде',
'explore.rows.popularMovies' => 'Популярные фильмы',
'explore.rows.popularShows' => 'Популярные сериалы',
'explore.rows.suggestedAnime' => 'Рекомендуемые аниме',
'explore.rows.airingAnime' => 'Топ выходящих аниме',
'explore.rows.popularAnime' => 'Самые популярные аниме',
'explore.rows.trending' => 'В тренде',
'explore.rows.upcomingMovies' => 'Ожидаемые фильмы',
'explore.rows.upcomingShows' => 'Ожидаемые сериалы',
'explore.status.airing' => 'Выходит',
'explore.status.ended' => 'Завершён',
'explore.status.canceled' => 'Отменён',
'explore.status.upcoming' => 'Скоро',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('ru'))(n, one: '${n} эпизод', few: '${n} эпизода', many: '${n} эпизодов', other: '${n} эпизода', ),
'explore.cast' => 'В ролях',
'explore.characters' => 'Персонажи',
'explore.addToWatchlist' => 'Добавить в список для просмотра',
'explore.removeFromWatchlist' => 'Удалить из списка для просмотра',
'explore.watchlistUpdateFailed' => 'Не удалось обновить список для просмотра',
'explore.notInLibrary' => 'Нет в вашей библиотеке',
'explore.inTheseLibraries' => 'В этих библиотеках',
'explore.availableOn' => ({required Object server}) => 'Доступно на ${server}',
'explore.checkingLibrary' => 'Проверка вашей библиотеки...',
'explore.emptyTitle' => 'Здесь пока ничего нет',
'explore.emptyMessage' => ({required Object source}) => 'Строки из ${source} появятся здесь, когда в них будет контент.',
'explore.searchHint' => ({required Object source}) => 'Поиск в ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Нет результатов по запросу "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Ищите фильмы и сериалы в ${source}.',
'explore.searchFailed' => 'Ошибка поиска. Проверьте подключение и повторите попытку.',
'liveTv.title' => 'ТВ в прямом эфире', 'liveTv.title' => 'ТВ в прямом эфире',
'liveTv.guide' => 'Программа', 'liveTv.guide' => 'Программа',
'liveTv.noChannels' => 'Нет доступных каналов', 'liveTv.noChannels' => 'Нет доступных каналов',
@@ -2988,6 +3136,8 @@ extension on TranslationsRu {
'downloads.cancelledDownloadMessage' => 'Эта загрузка была отменена. Что вы хотите сделать?', 'downloads.cancelledDownloadMessage' => 'Эта загрузка была отменена. Что вы хотите сделать?',
'downloads.allEpisodesAlreadyDownloaded' => 'Все эпизоды уже загружены', 'downloads.allEpisodesAlreadyDownloaded' => 'Все эпизоды уже загружены',
'downloads.resumeDownload' => 'Возобновить загрузку', 'downloads.resumeDownload' => 'Возобновить загрузку',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Загрузка отменена', 'downloads.cancelledDownload' => 'Загрузка отменена',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (синхронизация ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (синхронизация ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} загружен — нажмите, чтобы завершить', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} загружен — нажмите, чтобы завершить',
@@ -3024,8 +3174,6 @@ extension on TranslationsRu {
'downloads.noSyncRules' => 'Нет правил синхронизации', 'downloads.noSyncRules' => 'Нет правил синхронизации',
'downloads.manageSyncRule' => 'Управление синхронизацией', 'downloads.manageSyncRule' => 'Управление синхронизацией',
'downloads.editEpisodeCount' => 'Количество эпизодов', 'downloads.editEpisodeCount' => 'Количество эпизодов',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Фильтр синхронизации', 'downloads.editSyncFilter' => 'Фильтр синхронизации',
'downloads.syncAllItems' => 'Синхронизация всех элементов', 'downloads.syncAllItems' => 'Синхронизация всех элементов',
'downloads.syncUnwatchedItems' => 'Синхронизация непросмотренных элементов', 'downloads.syncUnwatchedItems' => 'Синхронизация непросмотренных элементов',
@@ -3274,39 +3422,70 @@ extension on TranslationsRu {
'trakt.scrobbleDescription' => 'Отправлять события воспроизведения, паузы и остановки в Trakt во время просмотра.', 'trakt.scrobbleDescription' => 'Отправлять события воспроизведения, паузы и остановки в Trakt во время просмотра.',
'trakt.watchedSync' => 'Синхронизация статуса просмотра', 'trakt.watchedSync' => 'Синхронизация статуса просмотра',
'trakt.watchedSyncDescription' => 'Когда вы отмечаете элементы как просмотренные в Plezy, они отмечаются и в Trakt.', 'trakt.watchedSyncDescription' => 'Когда вы отмечаете элементы как просмотренные в Plezy, они отмечаются и в Trakt.',
'trackers.title' => 'Трекеры', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Синхронизируйте прогресс просмотра с Trakt и другими сервисами.', 'seerr.connectTitle' => 'Подключить Seerr',
'trackers.notConnected' => 'Не подключено', 'seerr.serverUrl' => 'URL сервера',
'trackers.connectedAs' => ({required Object username}) => 'Подключено как @${username}', 'seerr.serverUrlHelper' => 'Адрес вашего экземпляра Seerr',
'trackers.scrobble' => 'Автоматически отслеживать прогресс', 'seerr.checkServer' => 'Продолжить',
'trackers.scrobbleDescription' => 'Обновляет список, когда вы заканчиваете эпизод или фильм.', 'seerr.signInWithJellyfin' => 'Войти через Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Отключить ${service}?', 'seerr.signInWithEmby' => 'Войти через Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy перестанет обновлять ${service}. Подключите снова в любое время.', 'seerr.signInWithLocal' => 'Использовать локальную учётную запись',
'trackers.connectFailed' => ({required Object service}) => 'Не удалось подключиться к ${service}. Попробуйте ещё раз.', 'seerr.email' => 'Эл. почта',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Этот экземпляр Seerr не предлагает способа входа, поддерживаемого Plezy.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Экземпляр',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Отключить Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Активируйте Plezy в ${service}', 'seerr.disconnectConfirmBody' => 'Plezy забудет этот экземпляр Seerr. Подключитесь снова в любое время.',
'trackers.deviceCode.body' => ({required Object url}) => 'Перейдите на ${url} и введите этот код:', 'seerr.request' => 'Запросить',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Открыть ${service} для активации', 'seerr.request4k' => 'Запросить в 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Ожидание авторизации…', 'seerr.seasons' => 'Сезоны',
'trackers.deviceCode.codeCopied' => 'Код скопирован', 'seerr.allSeasons' => 'Все сезоны',
'trackers.oauthProxy.title' => ({required Object service}) => 'Войти в ${service}', 'seerr.advancedOptions' => 'Дополнительно',
'trackers.oauthProxy.body' => 'Отсканируйте этот QR-код или откройте URL на любом устройстве.', 'seerr.destinationServer' => 'Целевой сервер',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Открыть ${service} для входа', 'seerr.qualityProfile' => 'Профиль качества',
'trackers.oauthProxy.urlCopied' => 'URL скопирован', 'seerr.rootFolder' => 'Корневая папка',
'trackers.libraryFilter.title' => 'Фильтр библиотек', 'seerr.languageProfile' => 'Языковой профиль',
'trackers.libraryFilter.subtitleAllSyncing' => 'Синхронизация всех библиотек', 'seerr.requestSubmitted' => 'Запрос отправлен',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Ничего не синхронизируется', 'seerr.requestFailed' => ({required Object error}) => 'Ошибка запроса: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} заблокировано', 'seerr.requestsLoadFailed' => 'Не удалось загрузить параметры запроса',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} разрешено', 'seerr.nothingToRequest' => 'Всё уже доступно или запрошено.',
'trackers.libraryFilter.mode' => 'Режим фильтра', 'seerr.statusAvailable' => 'Доступно',
'trackers.libraryFilter.modeBlacklist' => 'Чёрный список', 'seerr.statusPartiallyAvailable' => 'Частично доступно',
'trackers.libraryFilter.modeWhitelist' => 'Белый список', 'seerr.statusRequested' => 'Запрошено',
'trackers.libraryFilter.modeHintBlacklist' => 'Синхронизировать все библиотеки, кроме отмеченных ниже.', 'seerr.statusProcessing' => 'Обработка',
'trackers.libraryFilter.modeHintWhitelist' => 'Синхронизировать только библиотеки, отмеченные ниже.', 'services.title' => 'Сервисы',
'trackers.libraryFilter.libraries' => 'Библиотеки', 'services.hubSubtitle' => 'Синхронизируйте прогресс просмотра и запрашивайте новые тайтлы.',
'trackers.libraryFilter.noLibraries' => 'Библиотеки недоступны', 'services.notConnected' => 'Не подключено',
'services.connectedAs' => ({required Object username}) => 'Подключено как @${username}',
'services.scrobble' => 'Автоматически отслеживать прогресс',
'services.scrobbleDescription' => 'Обновляет список, когда вы заканчиваете эпизод или фильм.',
'services.disconnectConfirm' => ({required Object service}) => 'Отключить ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy перестанет обновлять ${service}. Подключите снова в любое время.',
'services.connectFailed' => ({required Object service}) => 'Не удалось подключиться к ${service}. Попробуйте ещё раз.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Активируйте Plezy в ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Перейдите на ${url} и введите этот код:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Открыть ${service} для активации',
'services.deviceCode.waitingForAuthorization' => 'Ожидание авторизации…',
'services.deviceCode.codeCopied' => 'Код скопирован',
'services.oauthProxy.title' => ({required Object service}) => 'Войти в ${service}',
'services.oauthProxy.body' => 'Отсканируйте этот QR-код или откройте URL на любом устройстве.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Открыть ${service} для входа',
'services.oauthProxy.urlCopied' => 'URL скопирован',
'services.libraryFilter.title' => 'Фильтр библиотек',
'services.libraryFilter.subtitleAllSyncing' => 'Синхронизация всех библиотек',
'services.libraryFilter.subtitleNoneSyncing' => 'Ничего не синхронизируется',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} заблокировано',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} разрешено',
'services.libraryFilter.mode' => 'Режим фильтра',
'services.libraryFilter.modeBlacklist' => 'Чёрный список',
'services.libraryFilter.modeWhitelist' => 'Белый список',
'services.libraryFilter.modeHintBlacklist' => 'Синхронизировать все библиотеки, кроме отмеченных ниже.',
'services.libraryFilter.modeHintWhitelist' => 'Синхронизировать только библиотеки, отмеченные ниже.',
'services.libraryFilter.libraries' => 'Библиотеки',
'services.libraryFilter.noLibraries' => 'Библиотеки недоступны',
'addServer.addJellyfinTitle' => 'Добавить сервер Jellyfin', 'addServer.addJellyfinTitle' => 'Добавить сервер Jellyfin',
'addServer.serverUrls' => 'URL сервера', 'addServer.serverUrls' => 'URL сервера',
'addServer.serverUrlsHelper' => 'Можно указать несколько URL через запятую.', 'addServer.serverUrlsHelper' => 'Можно указать несколько URL через запятую.',
+240 -63
View File
@@ -69,6 +69,7 @@ class TranslationsSv extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsSv logs = _TranslationsLogsSv._(_root); @override late final _TranslationsLogsSv logs = _TranslationsLogsSv._(_root);
@override late final _TranslationsLicensesSv licenses = _TranslationsLicensesSv._(_root); @override late final _TranslationsLicensesSv licenses = _TranslationsLicensesSv._(_root);
@override late final _TranslationsNavigationSv navigation = _TranslationsNavigationSv._(_root); @override late final _TranslationsNavigationSv navigation = _TranslationsNavigationSv._(_root);
@override late final _TranslationsExploreSv explore = _TranslationsExploreSv._(_root);
@override late final _TranslationsLiveTvSv liveTv = _TranslationsLiveTvSv._(_root); @override late final _TranslationsLiveTvSv liveTv = _TranslationsLiveTvSv._(_root);
@override late final _TranslationsCollectionsSv collections = _TranslationsCollectionsSv._(_root); @override late final _TranslationsCollectionsSv collections = _TranslationsCollectionsSv._(_root);
@override late final _TranslationsPlaylistsSv playlists = _TranslationsPlaylistsSv._(_root); @override late final _TranslationsPlaylistsSv playlists = _TranslationsPlaylistsSv._(_root);
@@ -84,7 +85,8 @@ class TranslationsSv extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenSv matchScreen = _TranslationsMatchScreenSv._(_root); @override late final _TranslationsMatchScreenSv matchScreen = _TranslationsMatchScreenSv._(_root);
@override late final _TranslationsServerTasksSv serverTasks = _TranslationsServerTasksSv._(_root); @override late final _TranslationsServerTasksSv serverTasks = _TranslationsServerTasksSv._(_root);
@override late final _TranslationsTraktSv trakt = _TranslationsTraktSv._(_root); @override late final _TranslationsTraktSv trakt = _TranslationsTraktSv._(_root);
@override late final _TranslationsTrackersSv trackers = _TranslationsTrackersSv._(_root); @override late final _TranslationsSeerrSv seerr = _TranslationsSeerrSv._(_root);
@override late final _TranslationsServicesSv services = _TranslationsServicesSv._(_root);
@override late final _TranslationsAddServerSv addServer = _TranslationsAddServerSv._(_root); @override late final _TranslationsAddServerSv addServer = _TranslationsAddServerSv._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsSv extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => 'Visa vad du tittar på i Discord'; @override String get discordRichPresenceDescription => 'Visa vad du tittar på i Discord';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => 'Synkronisera visningshistorik med Trakt'; @override String get traktDescription => 'Synkronisera visningshistorik med Trakt';
@override String get trackers => 'Spårare'; @override String get services => 'Tjänster';
@override String get trackersDescription => 'Synkronisera framsteg till Trakt, MyAnimeList, AniList och Simkl'; @override String get servicesDescription => 'Anslut Trakt, MyAnimeList, Seerr med mera';
@override String get companionRemoteServer => 'Companion Remote-server'; @override String get companionRemoteServer => 'Companion Remote-server';
@override String get companionRemoteServerDescription => 'Tillåt mobila enheter i ditt nätverk att styra denna app'; @override String get companionRemoteServerDescription => 'Tillåt mobila enheter i ditt nätverk att styra denna app';
@override String get autoPip => 'Automatisk bild-i-bild'; @override String get autoPip => 'Automatisk bild-i-bild';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetSv extends TranslationsRateSheetEn {
@override String get setScore => 'Ange betyg'; @override String get setScore => 'Ange betyg';
@override String get saved => 'Sparat'; @override String get saved => 'Sparat';
@override String get notAvailable => 'Ingen matchning hittades'; @override String get notAvailable => 'Ingen matchning hittades';
@override String get noConnectedTrackers => 'Anslut en spårare i Inställningar för att betygsätta där.'; @override String get noConnectedServices => 'Anslut en tjänst i Inställningar för att betygsätta där.';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,39 @@ class _TranslationsNavigationSv extends TranslationsNavigationEn {
@override String get libraries => 'Bibliotek'; @override String get libraries => 'Bibliotek';
@override String get downloads => 'Nerladdat'; @override String get downloads => 'Nerladdat';
@override String get liveTv => 'Live-TV'; @override String get liveTv => 'Live-TV';
@override String get explore => 'Utforska';
}
// Path: explore
class _TranslationsExploreSv extends TranslationsExploreEn {
_TranslationsExploreSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get title => 'Utforska';
@override String get selectSource => 'Välj källa';
@override late final _TranslationsExploreRowsSv rows = _TranslationsExploreRowsSv._(_root);
@override late final _TranslationsExploreStatusSv status = _TranslationsExploreStatusSv._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sv'))(n,
one: '${n} avsnitt',
other: '${n} avsnitt',
);
@override String get cast => 'Rollbesättning';
@override String get characters => 'Karaktärer';
@override String get addToWatchlist => 'Lägg till i bevakningslista';
@override String get removeFromWatchlist => 'Ta bort från bevakningslista';
@override String get watchlistUpdateFailed => 'Det gick inte att uppdatera bevakningslistan';
@override String get notInLibrary => 'Finns inte i ditt bibliotek';
@override String get inTheseLibraries => 'I dessa bibliotek';
@override String availableOn({required Object server}) => 'Tillgänglig på ${server}';
@override String get checkingLibrary => 'Kontrollerar ditt bibliotek...';
@override String get emptyTitle => 'Inget här ännu';
@override String emptyMessage({required Object source}) => 'Rader från ${source} visas här när de har innehåll.';
@override String searchHint({required Object source}) => 'Sök i ${source}';
@override String searchEmpty({required Object query}) => 'Inga resultat för "${query}"';
@override String searchPrompt({required Object source}) => 'Sök efter filmer och serier på ${source}.';
@override String get searchFailed => 'Sökningen misslyckades. Kontrollera din anslutning och försök igen.';
} }
// Path: liveTv // Path: liveTv
@@ -1646,15 +1681,54 @@ class _TranslationsTraktSv extends TranslationsTraktEn {
@override String get watchedSyncDescription => 'När du markerar något som tittat i Plezy markeras det också på Trakt.'; @override String get watchedSyncDescription => 'När du markerar något som tittat i Plezy markeras det också på Trakt.';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersSv extends TranslationsTrackersEn { class _TranslationsSeerrSv extends TranslationsSeerrEn {
_TranslationsTrackersSv._(TranslationsSv root) : this._root = root, super.internal(root); _TranslationsSeerrSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field final TranslationsSv _root; // ignore: unused_field
// Translations // Translations
@override String get title => 'Spårare'; @override String get title => 'Seerr';
@override String get hubSubtitle => 'Synka tittförlopp med Trakt och andra tjänster.'; @override String get connectTitle => 'Anslut Seerr';
@override String get serverUrl => 'Server-URL';
@override String get serverUrlHelper => 'Adressen till din Seerr-instans';
@override String get checkServer => 'Fortsätt';
@override String get signInWithJellyfin => 'Logga in med Jellyfin';
@override String get signInWithEmby => 'Logga in med Emby';
@override String get signInWithLocal => 'Använd ett lokalt konto';
@override String get email => 'E-post';
@override String get noSignInMethods => 'Den här Seerr-instansen erbjuder ingen inloggningsmetod som Plezy stöder.';
@override String get instance => 'Instans';
@override String get disconnectConfirm => 'Koppla från Seerr?';
@override String get disconnectConfirmBody => 'Plezy glömmer den här Seerr-instansen. Återanslut när som helst.';
@override String get request => 'Begär';
@override String get request4k => 'Begär i 4K';
@override String get seasons => 'Säsonger';
@override String get allSeasons => 'Alla säsonger';
@override String get advancedOptions => 'Avancerat';
@override String get destinationServer => 'Målserver';
@override String get qualityProfile => 'Kvalitetsprofil';
@override String get rootFolder => 'Rotmapp';
@override String get languageProfile => 'Språkprofil';
@override String get requestSubmitted => 'Begäran skickad';
@override String requestFailed({required Object error}) => 'Begäran misslyckades: ${error}';
@override String get requestsLoadFailed => 'Det gick inte att läsa in alternativ för begäran';
@override String get nothingToRequest => 'Allt är redan tillgängligt eller begärt.';
@override String get statusAvailable => 'Tillgänglig';
@override String get statusPartiallyAvailable => 'Delvis tillgänglig';
@override String get statusRequested => 'Begärd';
@override String get statusProcessing => 'Bearbetas';
}
// Path: services
class _TranslationsServicesSv extends TranslationsServicesEn {
_TranslationsServicesSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get title => 'Tjänster';
@override String get hubSubtitle => 'Synkronisera dina framsteg och begär nya titlar.';
@override String get notConnected => 'Ej ansluten'; @override String get notConnected => 'Ej ansluten';
@override String connectedAs({required Object username}) => 'Ansluten som @${username}'; @override String connectedAs({required Object username}) => 'Ansluten som @${username}';
@override String get scrobble => 'Spåra framsteg automatiskt'; @override String get scrobble => 'Spåra framsteg automatiskt';
@@ -1662,10 +1736,10 @@ class _TranslationsTrackersSv extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => 'Koppla från ${service}?'; @override String disconnectConfirm({required Object service}) => 'Koppla från ${service}?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy slutar uppdatera ${service}. Återanslut när som helst.'; @override String disconnectConfirmBody({required Object service}) => 'Plezy slutar uppdatera ${service}. Återanslut när som helst.';
@override String connectFailed({required Object service}) => 'Kunde inte ansluta till ${service}. Försök igen.'; @override String connectFailed({required Object service}) => 'Kunde inte ansluta till ${service}. Försök igen.';
@override late final _TranslationsTrackersServicesSv services = _TranslationsTrackersServicesSv._(_root); @override late final _TranslationsServicesNamesSv names = _TranslationsServicesNamesSv._(_root);
@override late final _TranslationsTrackersDeviceCodeSv deviceCode = _TranslationsTrackersDeviceCodeSv._(_root); @override late final _TranslationsServicesDeviceCodeSv deviceCode = _TranslationsServicesDeviceCodeSv._(_root);
@override late final _TranslationsTrackersOauthProxySv oauthProxy = _TranslationsTrackersOauthProxySv._(_root); @override late final _TranslationsServicesOauthProxySv oauthProxy = _TranslationsServicesOauthProxySv._(_root);
@override late final _TranslationsTrackersLibraryFilterSv libraryFilter = _TranslationsTrackersLibraryFilterSv._(_root); @override late final _TranslationsServicesLibraryFilterSv libraryFilter = _TranslationsServicesLibraryFilterSv._(_root);
} }
// Path: addServer // Path: addServer
@@ -1832,6 +1906,41 @@ class _TranslationsLibrariesSortLabelsSv extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => 'Datum då senaste avsnittet lades till'; @override String get lastEpisodeDateAdded => 'Datum då senaste avsnittet lades till';
} }
// Path: explore.rows
class _TranslationsExploreRowsSv extends TranslationsExploreRowsEn {
_TranslationsExploreRowsSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get watchlist => 'Bevakningslista';
@override String get recommendedMovies => 'Rekommenderade filmer';
@override String get recommendedShows => 'Rekommenderade serier';
@override String get trendingMovies => 'Trendande filmer';
@override String get trendingShows => 'Trendande serier';
@override String get popularMovies => 'Populära filmer';
@override String get popularShows => 'Populära serier';
@override String get suggestedAnime => 'Föreslagna anime';
@override String get airingAnime => 'Bästa pågående anime';
@override String get popularAnime => 'Mest populära anime';
@override String get trending => 'Trendar nu';
@override String get upcomingMovies => 'Kommande filmer';
@override String get upcomingShows => 'Kommande serier';
}
// Path: explore.status
class _TranslationsExploreStatusSv extends TranslationsExploreStatusEn {
_TranslationsExploreStatusSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field
// Translations
@override String get airing => 'Pågår';
@override String get ended => 'Avslutad';
@override String get canceled => 'Nedlagd';
@override String get upcoming => 'Kommande';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionSv extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionSv extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionSv._(TranslationsSv root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionSv._(TranslationsSv root) : this._root = root, super.internal(root);
@@ -1928,9 +2037,9 @@ class _TranslationsCompanionRemoteErrorsSv extends TranslationsCompanionRemoteEr
@override String get connectionLost => 'Anslutning förlorad'; @override String get connectionLost => 'Anslutning förlorad';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesSv extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesSv extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesSv._(TranslationsSv root) : this._root = root, super.internal(root); _TranslationsServicesNamesSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field final TranslationsSv _root; // ignore: unused_field
@@ -1938,11 +2047,12 @@ class _TranslationsTrackersServicesSv extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeSv extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeSv extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeSv._(TranslationsSv root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field final TranslationsSv _root; // ignore: unused_field
@@ -1954,9 +2064,9 @@ class _TranslationsTrackersDeviceCodeSv extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => 'Kod kopierad'; @override String get codeCopied => 'Kod kopierad';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxySv extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxySv extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxySv._(TranslationsSv root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxySv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field final TranslationsSv _root; // ignore: unused_field
@@ -1967,9 +2077,9 @@ class _TranslationsTrackersOauthProxySv extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL kopierad'; @override String get urlCopied => 'URL kopierad';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterSv extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterSv extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterSv._(TranslationsSv root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterSv._(TranslationsSv root) : this._root = root, super.internal(root);
final TranslationsSv _root; // ignore: unused_field final TranslationsSv _root; // ignore: unused_field
@@ -2233,8 +2343,8 @@ extension on TranslationsSv {
'settings.discordRichPresenceDescription' => 'Visa vad du tittar på i Discord', 'settings.discordRichPresenceDescription' => 'Visa vad du tittar på i Discord',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => 'Synkronisera visningshistorik med Trakt', 'settings.traktDescription' => 'Synkronisera visningshistorik med Trakt',
'settings.trackers' => 'Spårare', 'settings.services' => 'Tjänster',
'settings.trackersDescription' => 'Synkronisera framsteg till Trakt, MyAnimeList, AniList och Simkl', 'settings.servicesDescription' => 'Anslut Trakt, MyAnimeList, Seerr med mera',
'settings.companionRemoteServer' => 'Companion Remote-server', 'settings.companionRemoteServer' => 'Companion Remote-server',
'settings.companionRemoteServerDescription' => 'Tillåt mobila enheter i ditt nätverk att styra denna app', 'settings.companionRemoteServerDescription' => 'Tillåt mobila enheter i ditt nätverk att styra denna app',
'settings.autoPip' => 'Automatisk bild-i-bild', 'settings.autoPip' => 'Automatisk bild-i-bild',
@@ -2390,7 +2500,7 @@ extension on TranslationsSv {
'rateSheet.setScore' => 'Ange betyg', 'rateSheet.setScore' => 'Ange betyg',
'rateSheet.saved' => 'Sparat', 'rateSheet.saved' => 'Sparat',
'rateSheet.notAvailable' => 'Ingen matchning hittades', 'rateSheet.notAvailable' => 'Ingen matchning hittades',
'rateSheet.noConnectedTrackers' => 'Anslut en spårare i Inställningar för att betygsätta där.', 'rateSheet.noConnectedServices' => 'Anslut en tjänst i Inställningar för att betygsätta där.',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, film',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV-serie', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV-serie',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2771,6 +2881,42 @@ extension on TranslationsSv {
'navigation.libraries' => 'Bibliotek', 'navigation.libraries' => 'Bibliotek',
'navigation.downloads' => 'Nerladdat', 'navigation.downloads' => 'Nerladdat',
'navigation.liveTv' => 'Live-TV', 'navigation.liveTv' => 'Live-TV',
'navigation.explore' => 'Utforska',
'explore.title' => 'Utforska',
'explore.selectSource' => 'Välj källa',
'explore.rows.watchlist' => 'Bevakningslista',
'explore.rows.recommendedMovies' => 'Rekommenderade filmer',
'explore.rows.recommendedShows' => 'Rekommenderade serier',
'explore.rows.trendingMovies' => 'Trendande filmer',
'explore.rows.trendingShows' => 'Trendande serier',
'explore.rows.popularMovies' => 'Populära filmer',
'explore.rows.popularShows' => 'Populära serier',
'explore.rows.suggestedAnime' => 'Föreslagna anime',
'explore.rows.airingAnime' => 'Bästa pågående anime',
'explore.rows.popularAnime' => 'Mest populära anime',
'explore.rows.trending' => 'Trendar nu',
'explore.rows.upcomingMovies' => 'Kommande filmer',
'explore.rows.upcomingShows' => 'Kommande serier',
'explore.status.airing' => 'Pågår',
'explore.status.ended' => 'Avslutad',
'explore.status.canceled' => 'Nedlagd',
'explore.status.upcoming' => 'Kommande',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('sv'))(n, one: '${n} avsnitt', other: '${n} avsnitt', ),
'explore.cast' => 'Rollbesättning',
'explore.characters' => 'Karaktärer',
'explore.addToWatchlist' => 'Lägg till i bevakningslista',
'explore.removeFromWatchlist' => 'Ta bort från bevakningslista',
'explore.watchlistUpdateFailed' => 'Det gick inte att uppdatera bevakningslistan',
'explore.notInLibrary' => 'Finns inte i ditt bibliotek',
'explore.inTheseLibraries' => 'I dessa bibliotek',
'explore.availableOn' => ({required Object server}) => 'Tillgänglig på ${server}',
'explore.checkingLibrary' => 'Kontrollerar ditt bibliotek...',
'explore.emptyTitle' => 'Inget här ännu',
'explore.emptyMessage' => ({required Object source}) => 'Rader från ${source} visas här när de har innehåll.',
'explore.searchHint' => ({required Object source}) => 'Sök i ${source}',
'explore.searchEmpty' => ({required Object query}) => 'Inga resultat för "${query}"',
'explore.searchPrompt' => ({required Object source}) => 'Sök efter filmer och serier på ${source}.',
'explore.searchFailed' => 'Sökningen misslyckades. Kontrollera din anslutning och försök igen.',
'liveTv.title' => 'Live-TV', 'liveTv.title' => 'Live-TV',
'liveTv.guide' => 'Programguide', 'liveTv.guide' => 'Programguide',
'liveTv.noChannels' => 'Inga kanaler tillgängliga', 'liveTv.noChannels' => 'Inga kanaler tillgängliga',
@@ -2986,6 +3132,8 @@ extension on TranslationsSv {
'downloads.cancelledDownloadMessage' => 'Den här nedladdningen avbröts. Vad vill du göra?', 'downloads.cancelledDownloadMessage' => 'Den här nedladdningen avbröts. Vad vill du göra?',
'downloads.allEpisodesAlreadyDownloaded' => 'Alla avsnitt är redan nedladdade', 'downloads.allEpisodesAlreadyDownloaded' => 'Alla avsnitt är redan nedladdade',
'downloads.resumeDownload' => 'Återuppta nedladdning', 'downloads.resumeDownload' => 'Återuppta nedladdning',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => 'Avbruten nedladdning', 'downloads.cancelledDownload' => 'Avbruten nedladdning',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synkroniserar ${status})', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (synkroniserar ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} nedladdad klicka för att slutföra', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} nedladdad klicka för att slutföra',
@@ -3022,8 +3170,6 @@ extension on TranslationsSv {
'downloads.noSyncRules' => 'Inga synkregler', 'downloads.noSyncRules' => 'Inga synkregler',
'downloads.manageSyncRule' => 'Hantera synkronisering', 'downloads.manageSyncRule' => 'Hantera synkronisering',
'downloads.editEpisodeCount' => 'Antal avsnitt', 'downloads.editEpisodeCount' => 'Antal avsnitt',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => 'Synkroniseringsfilter', 'downloads.editSyncFilter' => 'Synkroniseringsfilter',
'downloads.syncAllItems' => 'Synkroniserar alla objekt', 'downloads.syncAllItems' => 'Synkroniserar alla objekt',
'downloads.syncUnwatchedItems' => 'Synkroniserar osedda objekt', 'downloads.syncUnwatchedItems' => 'Synkroniserar osedda objekt',
@@ -3272,39 +3418,70 @@ extension on TranslationsSv {
'trakt.scrobbleDescription' => 'Skicka uppspelnings-, paus- och stopphändelser till Trakt under uppspelning.', 'trakt.scrobbleDescription' => 'Skicka uppspelnings-, paus- och stopphändelser till Trakt under uppspelning.',
'trakt.watchedSync' => 'Synkronisera tittad-status', 'trakt.watchedSync' => 'Synkronisera tittad-status',
'trakt.watchedSyncDescription' => 'När du markerar något som tittat i Plezy markeras det också på Trakt.', 'trakt.watchedSyncDescription' => 'När du markerar något som tittat i Plezy markeras det också på Trakt.',
'trackers.title' => 'Spårare', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => 'Synka tittförlopp med Trakt och andra tjänster.', 'seerr.connectTitle' => 'Anslut Seerr',
'trackers.notConnected' => 'Ej ansluten', 'seerr.serverUrl' => 'Server-URL',
'trackers.connectedAs' => ({required Object username}) => 'Ansluten som @${username}', 'seerr.serverUrlHelper' => 'Adressen till din Seerr-instans',
'trackers.scrobble' => 'Spåra framsteg automatiskt', 'seerr.checkServer' => 'Fortsätt',
'trackers.scrobbleDescription' => 'Uppdaterar din lista när du är klar med ett avsnitt eller en film.', 'seerr.signInWithJellyfin' => 'Logga in med Jellyfin',
'trackers.disconnectConfirm' => ({required Object service}) => 'Koppla från ${service}?', 'seerr.signInWithEmby' => 'Logga in med Emby',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy slutar uppdatera ${service}. Återanslut när som helst.', 'seerr.signInWithLocal' => 'Använd ett lokalt konto',
'trackers.connectFailed' => ({required Object service}) => 'Kunde inte ansluta till ${service}. Försök igen.', 'seerr.email' => 'E-post',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => 'Den här Seerr-instansen erbjuder ingen inloggningsmetod som Plezy stöder.',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => 'Instans',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => 'Koppla från Seerr?',
'trackers.deviceCode.title' => ({required Object service}) => 'Aktivera Plezy på ${service}', 'seerr.disconnectConfirmBody' => 'Plezy glömmer den här Seerr-instansen. Återanslut när som helst.',
'trackers.deviceCode.body' => ({required Object url}) => 'Besök ${url} och ange den här koden:', 'seerr.request' => 'Begär',
'trackers.deviceCode.openToActivate' => ({required Object service}) => 'Öppna ${service} för att aktivera', 'seerr.request4k' => 'Begär i 4K',
'trackers.deviceCode.waitingForAuthorization' => 'Väntar på auktorisering…', 'seerr.seasons' => 'Säsonger',
'trackers.deviceCode.codeCopied' => 'Kod kopierad', 'seerr.allSeasons' => 'Alla säsonger',
'trackers.oauthProxy.title' => ({required Object service}) => 'Logga in på ${service}', 'seerr.advancedOptions' => 'Avancerat',
'trackers.oauthProxy.body' => 'Skanna den här QR-koden eller öppna URL:en på valfri enhet.', 'seerr.destinationServer' => 'Målserver',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => 'Öppna ${service} för att logga in', 'seerr.qualityProfile' => 'Kvalitetsprofil',
'trackers.oauthProxy.urlCopied' => 'URL kopierad', 'seerr.rootFolder' => 'Rotmapp',
'trackers.libraryFilter.title' => 'Biblioteksfilter', 'seerr.languageProfile' => 'Språkprofil',
'trackers.libraryFilter.subtitleAllSyncing' => 'Synkroniserar alla bibliotek', 'seerr.requestSubmitted' => 'Begäran skickad',
'trackers.libraryFilter.subtitleNoneSyncing' => 'Ingenting synkroniseras', 'seerr.requestFailed' => ({required Object error}) => 'Begäran misslyckades: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blockerade', 'seerr.requestsLoadFailed' => 'Det gick inte att läsa in alternativ för begäran',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} tillåtna', 'seerr.nothingToRequest' => 'Allt är redan tillgängligt eller begärt.',
'trackers.libraryFilter.mode' => 'Filterläge', 'seerr.statusAvailable' => 'Tillgänglig',
'trackers.libraryFilter.modeBlacklist' => 'Svartlista', 'seerr.statusPartiallyAvailable' => 'Delvis tillgänglig',
'trackers.libraryFilter.modeWhitelist' => 'Vitlista', 'seerr.statusRequested' => 'Begärd',
'trackers.libraryFilter.modeHintBlacklist' => 'Synkronisera alla bibliotek utom de som markerats nedan.', 'seerr.statusProcessing' => 'Bearbetas',
'trackers.libraryFilter.modeHintWhitelist' => 'Synkronisera endast de bibliotek som markerats nedan.', 'services.title' => 'Tjänster',
'trackers.libraryFilter.libraries' => 'Bibliotek', 'services.hubSubtitle' => 'Synkronisera dina framsteg och begär nya titlar.',
'trackers.libraryFilter.noLibraries' => 'Inga bibliotek tillgängliga', 'services.notConnected' => 'Ej ansluten',
'services.connectedAs' => ({required Object username}) => 'Ansluten som @${username}',
'services.scrobble' => 'Spåra framsteg automatiskt',
'services.scrobbleDescription' => 'Uppdaterar din lista när du är klar med ett avsnitt eller en film.',
'services.disconnectConfirm' => ({required Object service}) => 'Koppla från ${service}?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy slutar uppdatera ${service}. Återanslut när som helst.',
'services.connectFailed' => ({required Object service}) => 'Kunde inte ansluta till ${service}. Försök igen.',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => 'Aktivera Plezy på ${service}',
'services.deviceCode.body' => ({required Object url}) => 'Besök ${url} och ange den här koden:',
'services.deviceCode.openToActivate' => ({required Object service}) => 'Öppna ${service} för att aktivera',
'services.deviceCode.waitingForAuthorization' => 'Väntar på auktorisering…',
'services.deviceCode.codeCopied' => 'Kod kopierad',
'services.oauthProxy.title' => ({required Object service}) => 'Logga in på ${service}',
'services.oauthProxy.body' => 'Skanna den här QR-koden eller öppna URL:en på valfri enhet.',
'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Öppna ${service} för att logga in',
'services.oauthProxy.urlCopied' => 'URL kopierad',
'services.libraryFilter.title' => 'Biblioteksfilter',
'services.libraryFilter.subtitleAllSyncing' => 'Synkroniserar alla bibliotek',
'services.libraryFilter.subtitleNoneSyncing' => 'Ingenting synkroniseras',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blockerade',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} tillåtna',
'services.libraryFilter.mode' => 'Filterläge',
'services.libraryFilter.modeBlacklist' => 'Svartlista',
'services.libraryFilter.modeWhitelist' => 'Vitlista',
'services.libraryFilter.modeHintBlacklist' => 'Synkronisera alla bibliotek utom de som markerats nedan.',
'services.libraryFilter.modeHintWhitelist' => 'Synkronisera endast de bibliotek som markerats nedan.',
'services.libraryFilter.libraries' => 'Bibliotek',
'services.libraryFilter.noLibraries' => 'Inga bibliotek tillgängliga',
'addServer.addJellyfinTitle' => 'Lägg till Jellyfin-server', 'addServer.addJellyfinTitle' => 'Lägg till Jellyfin-server',
'addServer.serverUrls' => 'Server-URL:er', 'addServer.serverUrls' => 'Server-URL:er',
'addServer.serverUrlsHelper' => 'Flera URL:er tillåtna, separerade med kommatecken.', 'addServer.serverUrlsHelper' => 'Flera URL:er tillåtna, separerade med kommatecken.',
+239 -63
View File
@@ -69,6 +69,7 @@ class TranslationsZh extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsLogsZh logs = _TranslationsLogsZh._(_root); @override late final _TranslationsLogsZh logs = _TranslationsLogsZh._(_root);
@override late final _TranslationsLicensesZh licenses = _TranslationsLicensesZh._(_root); @override late final _TranslationsLicensesZh licenses = _TranslationsLicensesZh._(_root);
@override late final _TranslationsNavigationZh navigation = _TranslationsNavigationZh._(_root); @override late final _TranslationsNavigationZh navigation = _TranslationsNavigationZh._(_root);
@override late final _TranslationsExploreZh explore = _TranslationsExploreZh._(_root);
@override late final _TranslationsLiveTvZh liveTv = _TranslationsLiveTvZh._(_root); @override late final _TranslationsLiveTvZh liveTv = _TranslationsLiveTvZh._(_root);
@override late final _TranslationsCollectionsZh collections = _TranslationsCollectionsZh._(_root); @override late final _TranslationsCollectionsZh collections = _TranslationsCollectionsZh._(_root);
@override late final _TranslationsPlaylistsZh playlists = _TranslationsPlaylistsZh._(_root); @override late final _TranslationsPlaylistsZh playlists = _TranslationsPlaylistsZh._(_root);
@@ -84,7 +85,8 @@ class TranslationsZh extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsMatchScreenZh matchScreen = _TranslationsMatchScreenZh._(_root); @override late final _TranslationsMatchScreenZh matchScreen = _TranslationsMatchScreenZh._(_root);
@override late final _TranslationsServerTasksZh serverTasks = _TranslationsServerTasksZh._(_root); @override late final _TranslationsServerTasksZh serverTasks = _TranslationsServerTasksZh._(_root);
@override late final _TranslationsTraktZh trakt = _TranslationsTraktZh._(_root); @override late final _TranslationsTraktZh trakt = _TranslationsTraktZh._(_root);
@override late final _TranslationsTrackersZh trackers = _TranslationsTrackersZh._(_root); @override late final _TranslationsSeerrZh seerr = _TranslationsSeerrZh._(_root);
@override late final _TranslationsServicesZh services = _TranslationsServicesZh._(_root);
@override late final _TranslationsAddServerZh addServer = _TranslationsAddServerZh._(_root); @override late final _TranslationsAddServerZh addServer = _TranslationsAddServerZh._(_root);
} }
@@ -377,8 +379,8 @@ class _TranslationsSettingsZh extends TranslationsSettingsEn {
@override String get discordRichPresenceDescription => '在 Discord 上显示您正在观看的内容'; @override String get discordRichPresenceDescription => '在 Discord 上显示您正在观看的内容';
@override String get trakt => 'Trakt'; @override String get trakt => 'Trakt';
@override String get traktDescription => '将观看历史与 Trakt 同步'; @override String get traktDescription => '将观看历史与 Trakt 同步';
@override String get trackers => '追踪器'; @override String get services => '服务';
@override String get trackersDescription => '将进度同步到 Trakt、MyAnimeList、AniList 和 Simkl'; @override String get servicesDescription => '连接 Trakt、MyAnimeList、Seerr 等';
@override String get companionRemoteServer => '配套遥控服务器'; @override String get companionRemoteServer => '配套遥控服务器';
@override String get companionRemoteServerDescription => '允许网络上的移动设备控制此应用'; @override String get companionRemoteServerDescription => '允许网络上的移动设备控制此应用';
@override String get autoPip => '自动画中画'; @override String get autoPip => '自动画中画';
@@ -555,7 +557,7 @@ class _TranslationsRateSheetZh extends TranslationsRateSheetEn {
@override String get setScore => '设置分数'; @override String get setScore => '设置分数';
@override String get saved => '已保存'; @override String get saved => '已保存';
@override String get notAvailable => '未找到匹配项'; @override String get notAvailable => '未找到匹配项';
@override String get noConnectedTrackers => '在设置中连接跟踪器即可在那里评分。'; @override String get noConnectedServices => '在设置中连接服务,即可在评分。';
} }
// Path: accessibility // Path: accessibility
@@ -1063,6 +1065,38 @@ class _TranslationsNavigationZh extends TranslationsNavigationEn {
@override String get libraries => '媒体库'; @override String get libraries => '媒体库';
@override String get downloads => '下载'; @override String get downloads => '下载';
@override String get liveTv => '电视直播'; @override String get liveTv => '电视直播';
@override String get explore => '探索';
}
// Path: explore
class _TranslationsExploreZh extends TranslationsExploreEn {
_TranslationsExploreZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get title => '探索';
@override String get selectSource => '选择来源';
@override late final _TranslationsExploreRowsZh rows = _TranslationsExploreRowsZh._(_root);
@override late final _TranslationsExploreStatusZh status = _TranslationsExploreStatusZh._(_root);
@override String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n,
other: '${n}',
);
@override String get cast => '演员表';
@override String get characters => '角色';
@override String get addToWatchlist => '添加到想看列表';
@override String get removeFromWatchlist => '从想看列表移除';
@override String get watchlistUpdateFailed => '无法更新想看列表';
@override String get notInLibrary => '不在你的媒体库中';
@override String get inTheseLibraries => '在这些媒体库中';
@override String availableOn({required Object server}) => '${server} 上可用';
@override String get checkingLibrary => '正在检查你的媒体库...';
@override String get emptyTitle => '这里还什么都没有';
@override String emptyMessage({required Object source}) => '${source} 有内容时,相关内容将显示在这里。';
@override String searchHint({required Object source}) => '搜索 ${source}';
@override String searchEmpty({required Object query}) => '没有“${query}”的结果';
@override String searchPrompt({required Object source}) => '${source} 上搜索电影和剧集。';
@override String get searchFailed => '搜索失败。请检查网络连接后重试。';
} }
// Path: liveTv // Path: liveTv
@@ -1645,15 +1679,54 @@ class _TranslationsTraktZh extends TranslationsTraktEn {
@override String get watchedSyncDescription => '在 Plezy 中将内容标记为已观看时,也会在 Trakt 上标记为已观看。'; @override String get watchedSyncDescription => '在 Plezy 中将内容标记为已观看时,也会在 Trakt 上标记为已观看。';
} }
// Path: trackers // Path: seerr
class _TranslationsTrackersZh extends TranslationsTrackersEn { class _TranslationsSeerrZh extends TranslationsSeerrEn {
_TranslationsTrackersZh._(TranslationsZh root) : this._root = root, super.internal(root); _TranslationsSeerrZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field final TranslationsZh _root; // ignore: unused_field
// Translations // Translations
@override String get title => '追踪器'; @override String get title => 'Seerr';
@override String get hubSubtitle => '与 Trakt 和其他服务同步观看进度。'; @override String get connectTitle => '连接 Seerr';
@override String get serverUrl => '服务器 URL';
@override String get serverUrlHelper => '你的 Seerr 实例的地址';
@override String get checkServer => '继续';
@override String get signInWithJellyfin => '使用 Jellyfin 登录';
@override String get signInWithEmby => '使用 Emby 登录';
@override String get signInWithLocal => '使用本地账户';
@override String get email => '邮箱';
@override String get noSignInMethods => '此 Seerr 实例未提供 Plezy 支持的登录方式。';
@override String get instance => '实例';
@override String get disconnectConfirm => '断开 Seerr 连接?';
@override String get disconnectConfirmBody => 'Plezy 将忘记此 Seerr 实例。可随时重新连接。';
@override String get request => '请求';
@override String get request4k => '请求 4K';
@override String get seasons => '';
@override String get allSeasons => '全部季';
@override String get advancedOptions => '高级';
@override String get destinationServer => '目标服务器';
@override String get qualityProfile => '质量配置文件';
@override String get rootFolder => '根目录';
@override String get languageProfile => '语言配置文件';
@override String get requestSubmitted => '请求已提交';
@override String requestFailed({required Object error}) => '请求失败: ${error}';
@override String get requestsLoadFailed => '无法加载请求选项';
@override String get nothingToRequest => '所有内容都已可用或已请求。';
@override String get statusAvailable => '可用';
@override String get statusPartiallyAvailable => '部分可用';
@override String get statusRequested => '已请求';
@override String get statusProcessing => '处理中';
}
// Path: services
class _TranslationsServicesZh extends TranslationsServicesEn {
_TranslationsServicesZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get title => '服务';
@override String get hubSubtitle => '同步观看进度并请求新内容。';
@override String get notConnected => '未连接'; @override String get notConnected => '未连接';
@override String connectedAs({required Object username}) => '已以 @${username} 身份连接'; @override String connectedAs({required Object username}) => '已以 @${username} 身份连接';
@override String get scrobble => '自动记录进度'; @override String get scrobble => '自动记录进度';
@@ -1661,10 +1734,10 @@ class _TranslationsTrackersZh extends TranslationsTrackersEn {
@override String disconnectConfirm({required Object service}) => '断开 ${service} 连接?'; @override String disconnectConfirm({required Object service}) => '断开 ${service} 连接?';
@override String disconnectConfirmBody({required Object service}) => 'Plezy 将停止更新 ${service}。可随时重新连接。'; @override String disconnectConfirmBody({required Object service}) => 'Plezy 将停止更新 ${service}。可随时重新连接。';
@override String connectFailed({required Object service}) => '无法连接到 ${service}。请重试。'; @override String connectFailed({required Object service}) => '无法连接到 ${service}。请重试。';
@override late final _TranslationsTrackersServicesZh services = _TranslationsTrackersServicesZh._(_root); @override late final _TranslationsServicesNamesZh names = _TranslationsServicesNamesZh._(_root);
@override late final _TranslationsTrackersDeviceCodeZh deviceCode = _TranslationsTrackersDeviceCodeZh._(_root); @override late final _TranslationsServicesDeviceCodeZh deviceCode = _TranslationsServicesDeviceCodeZh._(_root);
@override late final _TranslationsTrackersOauthProxyZh oauthProxy = _TranslationsTrackersOauthProxyZh._(_root); @override late final _TranslationsServicesOauthProxyZh oauthProxy = _TranslationsServicesOauthProxyZh._(_root);
@override late final _TranslationsTrackersLibraryFilterZh libraryFilter = _TranslationsTrackersLibraryFilterZh._(_root); @override late final _TranslationsServicesLibraryFilterZh libraryFilter = _TranslationsServicesLibraryFilterZh._(_root);
} }
// Path: addServer // Path: addServer
@@ -1831,6 +1904,41 @@ class _TranslationsLibrariesSortLabelsZh extends TranslationsLibrariesSortLabels
@override String get lastEpisodeDateAdded => '最新一集添加日期'; @override String get lastEpisodeDateAdded => '最新一集添加日期';
} }
// Path: explore.rows
class _TranslationsExploreRowsZh extends TranslationsExploreRowsEn {
_TranslationsExploreRowsZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get watchlist => '想看列表';
@override String get recommendedMovies => '推荐电影';
@override String get recommendedShows => '推荐剧集';
@override String get trendingMovies => '趋势电影';
@override String get trendingShows => '趋势剧集';
@override String get popularMovies => '热门电影';
@override String get popularShows => '热门剧集';
@override String get suggestedAnime => '推荐动画';
@override String get airingAnime => '热门连载动画';
@override String get popularAnime => '最受欢迎动画';
@override String get trending => '趋势';
@override String get upcomingMovies => '即将上映的电影';
@override String get upcomingShows => '即将播出的剧集';
}
// Path: explore.status
class _TranslationsExploreStatusZh extends TranslationsExploreStatusEn {
_TranslationsExploreStatusZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field
// Translations
@override String get airing => '连载中';
@override String get ended => '已完结';
@override String get canceled => '已取消';
@override String get upcoming => '即将上线';
}
// Path: companionRemote.session // Path: companionRemote.session
class _TranslationsCompanionRemoteSessionZh extends TranslationsCompanionRemoteSessionEn { class _TranslationsCompanionRemoteSessionZh extends TranslationsCompanionRemoteSessionEn {
_TranslationsCompanionRemoteSessionZh._(TranslationsZh root) : this._root = root, super.internal(root); _TranslationsCompanionRemoteSessionZh._(TranslationsZh root) : this._root = root, super.internal(root);
@@ -1927,9 +2035,9 @@ class _TranslationsCompanionRemoteErrorsZh extends TranslationsCompanionRemoteEr
@override String get connectionLost => '连接丢失'; @override String get connectionLost => '连接丢失';
} }
// Path: trackers.services // Path: services.names
class _TranslationsTrackersServicesZh extends TranslationsTrackersServicesEn { class _TranslationsServicesNamesZh extends TranslationsServicesNamesEn {
_TranslationsTrackersServicesZh._(TranslationsZh root) : this._root = root, super.internal(root); _TranslationsServicesNamesZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field final TranslationsZh _root; // ignore: unused_field
@@ -1937,11 +2045,12 @@ class _TranslationsTrackersServicesZh extends TranslationsTrackersServicesEn {
@override String get mal => 'MyAnimeList'; @override String get mal => 'MyAnimeList';
@override String get anilist => 'AniList'; @override String get anilist => 'AniList';
@override String get simkl => 'Simkl'; @override String get simkl => 'Simkl';
@override String get seerr => 'Seerr';
} }
// Path: trackers.deviceCode // Path: services.deviceCode
class _TranslationsTrackersDeviceCodeZh extends TranslationsTrackersDeviceCodeEn { class _TranslationsServicesDeviceCodeZh extends TranslationsServicesDeviceCodeEn {
_TranslationsTrackersDeviceCodeZh._(TranslationsZh root) : this._root = root, super.internal(root); _TranslationsServicesDeviceCodeZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field final TranslationsZh _root; // ignore: unused_field
@@ -1953,9 +2062,9 @@ class _TranslationsTrackersDeviceCodeZh extends TranslationsTrackersDeviceCodeEn
@override String get codeCopied => '代码已复制'; @override String get codeCopied => '代码已复制';
} }
// Path: trackers.oauthProxy // Path: services.oauthProxy
class _TranslationsTrackersOauthProxyZh extends TranslationsTrackersOauthProxyEn { class _TranslationsServicesOauthProxyZh extends TranslationsServicesOauthProxyEn {
_TranslationsTrackersOauthProxyZh._(TranslationsZh root) : this._root = root, super.internal(root); _TranslationsServicesOauthProxyZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field final TranslationsZh _root; // ignore: unused_field
@@ -1966,9 +2075,9 @@ class _TranslationsTrackersOauthProxyZh extends TranslationsTrackersOauthProxyEn
@override String get urlCopied => 'URL 已复制'; @override String get urlCopied => 'URL 已复制';
} }
// Path: trackers.libraryFilter // Path: services.libraryFilter
class _TranslationsTrackersLibraryFilterZh extends TranslationsTrackersLibraryFilterEn { class _TranslationsServicesLibraryFilterZh extends TranslationsServicesLibraryFilterEn {
_TranslationsTrackersLibraryFilterZh._(TranslationsZh root) : this._root = root, super.internal(root); _TranslationsServicesLibraryFilterZh._(TranslationsZh root) : this._root = root, super.internal(root);
final TranslationsZh _root; // ignore: unused_field final TranslationsZh _root; // ignore: unused_field
@@ -2232,8 +2341,8 @@ extension on TranslationsZh {
'settings.discordRichPresenceDescription' => '在 Discord 上显示您正在观看的内容', 'settings.discordRichPresenceDescription' => '在 Discord 上显示您正在观看的内容',
'settings.trakt' => 'Trakt', 'settings.trakt' => 'Trakt',
'settings.traktDescription' => '将观看历史与 Trakt 同步', 'settings.traktDescription' => '将观看历史与 Trakt 同步',
'settings.trackers' => '追踪器', 'settings.services' => '服务',
'settings.trackersDescription' => '将进度同步到 Trakt、MyAnimeList、AniList 和 Simkl', 'settings.servicesDescription' => '连接 Trakt、MyAnimeList、Seerr 等',
'settings.companionRemoteServer' => '配套遥控服务器', 'settings.companionRemoteServer' => '配套遥控服务器',
'settings.companionRemoteServerDescription' => '允许网络上的移动设备控制此应用', 'settings.companionRemoteServerDescription' => '允许网络上的移动设备控制此应用',
'settings.autoPip' => '自动画中画', 'settings.autoPip' => '自动画中画',
@@ -2389,7 +2498,7 @@ extension on TranslationsZh {
'rateSheet.setScore' => '设置分数', 'rateSheet.setScore' => '设置分数',
'rateSheet.saved' => '已保存', 'rateSheet.saved' => '已保存',
'rateSheet.notAvailable' => '未找到匹配项', 'rateSheet.notAvailable' => '未找到匹配项',
'rateSheet.noConnectedTrackers' => '在设置中连接跟踪器即可在那里评分。', 'rateSheet.noConnectedServices' => '在设置中连接服务,即可在评分。',
'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, 电影', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, 电影',
'accessibility.mediaCardShow' => ({required Object title}) => '${title}, 电视剧', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, 电视剧',
'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}',
@@ -2770,6 +2879,42 @@ extension on TranslationsZh {
'navigation.libraries' => '媒体库', 'navigation.libraries' => '媒体库',
'navigation.downloads' => '下载', 'navigation.downloads' => '下载',
'navigation.liveTv' => '电视直播', 'navigation.liveTv' => '电视直播',
'navigation.explore' => '探索',
'explore.title' => '探索',
'explore.selectSource' => '选择来源',
'explore.rows.watchlist' => '想看列表',
'explore.rows.recommendedMovies' => '推荐电影',
'explore.rows.recommendedShows' => '推荐剧集',
'explore.rows.trendingMovies' => '趋势电影',
'explore.rows.trendingShows' => '趋势剧集',
'explore.rows.popularMovies' => '热门电影',
'explore.rows.popularShows' => '热门剧集',
'explore.rows.suggestedAnime' => '推荐动画',
'explore.rows.airingAnime' => '热门连载动画',
'explore.rows.popularAnime' => '最受欢迎动画',
'explore.rows.trending' => '趋势',
'explore.rows.upcomingMovies' => '即将上映的电影',
'explore.rows.upcomingShows' => '即将播出的剧集',
'explore.status.airing' => '连载中',
'explore.status.ended' => '已完结',
'explore.status.canceled' => '已取消',
'explore.status.upcoming' => '即将上线',
'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('zh'))(n, other: '${n}', ),
'explore.cast' => '演员表',
'explore.characters' => '角色',
'explore.addToWatchlist' => '添加到想看列表',
'explore.removeFromWatchlist' => '从想看列表移除',
'explore.watchlistUpdateFailed' => '无法更新想看列表',
'explore.notInLibrary' => '不在你的媒体库中',
'explore.inTheseLibraries' => '在这些媒体库中',
'explore.availableOn' => ({required Object server}) => '${server} 上可用',
'explore.checkingLibrary' => '正在检查你的媒体库...',
'explore.emptyTitle' => '这里还什么都没有',
'explore.emptyMessage' => ({required Object source}) => '${source} 有内容时,相关内容将显示在这里。',
'explore.searchHint' => ({required Object source}) => '搜索 ${source}',
'explore.searchEmpty' => ({required Object query}) => '没有“${query}”的结果',
'explore.searchPrompt' => ({required Object source}) => '${source} 上搜索电影和剧集。',
'explore.searchFailed' => '搜索失败。请检查网络连接后重试。',
'liveTv.title' => '电视直播', 'liveTv.title' => '电视直播',
'liveTv.guide' => '节目指南', 'liveTv.guide' => '节目指南',
'liveTv.noChannels' => '没有可用的频道', 'liveTv.noChannels' => '没有可用的频道',
@@ -2985,6 +3130,8 @@ extension on TranslationsZh {
'downloads.cancelledDownloadMessage' => '此下载已取消。你想怎么做?', 'downloads.cancelledDownloadMessage' => '此下载已取消。你想怎么做?',
'downloads.allEpisodesAlreadyDownloaded' => '所有剧集均已下载', 'downloads.allEpisodesAlreadyDownloaded' => '所有剧集均已下载',
'downloads.resumeDownload' => '继续下载', 'downloads.resumeDownload' => '继续下载',
_ => null,
} ?? switch (path) {
'downloads.cancelledDownload' => '已取消的下载', 'downloads.cancelledDownload' => '已取消的下载',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file}(正在同步 ${status}', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file}(正在同步 ${status}',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '已下载 ${file} — 点击完成', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => '已下载 ${file} — 点击完成',
@@ -3021,8 +3168,6 @@ extension on TranslationsZh {
'downloads.noSyncRules' => '没有同步规则', 'downloads.noSyncRules' => '没有同步规则',
'downloads.manageSyncRule' => '管理同步', 'downloads.manageSyncRule' => '管理同步',
'downloads.editEpisodeCount' => '剧集数量', 'downloads.editEpisodeCount' => '剧集数量',
_ => null,
} ?? switch (path) {
'downloads.editSyncFilter' => '同步筛选', 'downloads.editSyncFilter' => '同步筛选',
'downloads.syncAllItems' => '同步所有项目', 'downloads.syncAllItems' => '同步所有项目',
'downloads.syncUnwatchedItems' => '同步未观看项目', 'downloads.syncUnwatchedItems' => '同步未观看项目',
@@ -3271,39 +3416,70 @@ extension on TranslationsZh {
'trakt.scrobbleDescription' => '在播放时向 Trakt 发送播放、暂停和停止事件。', 'trakt.scrobbleDescription' => '在播放时向 Trakt 发送播放、暂停和停止事件。',
'trakt.watchedSync' => '同步已观看状态', 'trakt.watchedSync' => '同步已观看状态',
'trakt.watchedSyncDescription' => '在 Plezy 中将内容标记为已观看时,也会在 Trakt 上标记为已观看。', 'trakt.watchedSyncDescription' => '在 Plezy 中将内容标记为已观看时,也会在 Trakt 上标记为已观看。',
'trackers.title' => '追踪器', 'seerr.title' => 'Seerr',
'trackers.hubSubtitle' => '与 Trakt 和其他服务同步观看进度。', 'seerr.connectTitle' => '连接 Seerr',
'trackers.notConnected' => '未连接', 'seerr.serverUrl' => '服务器 URL',
'trackers.connectedAs' => ({required Object username}) => '已以 @${username} 身份连接', 'seerr.serverUrlHelper' => '你的 Seerr 实例的地址',
'trackers.scrobble' => '自动记录进度', 'seerr.checkServer' => '继续',
'trackers.scrobbleDescription' => '观看完一集或一部电影后更新你的列表。', 'seerr.signInWithJellyfin' => '使用 Jellyfin 登录',
'trackers.disconnectConfirm' => ({required Object service}) => '断开 ${service} 连接?', 'seerr.signInWithEmby' => '使用 Emby 登录',
'trackers.disconnectConfirmBody' => ({required Object service}) => 'Plezy 将停止更新 ${service}。可随时重新连接。', 'seerr.signInWithLocal' => '使用本地账户',
'trackers.connectFailed' => ({required Object service}) => '无法连接到 ${service}。请重试。', 'seerr.email' => '邮箱',
'trackers.services.mal' => 'MyAnimeList', 'seerr.noSignInMethods' => '此 Seerr 实例未提供 Plezy 支持的登录方式。',
'trackers.services.anilist' => 'AniList', 'seerr.instance' => '实例',
'trackers.services.simkl' => 'Simkl', 'seerr.disconnectConfirm' => '断开 Seerr 连接?',
'trackers.deviceCode.title' => ({required Object service}) => '${service} 上激活 Plezy', 'seerr.disconnectConfirmBody' => 'Plezy 将忘记此 Seerr 实例。可随时重新连接。',
'trackers.deviceCode.body' => ({required Object url}) => '访问 ${url} 并输入此代码:', 'seerr.request' => '请求',
'trackers.deviceCode.openToActivate' => ({required Object service}) => '打开 ${service} 以激活', 'seerr.request4k' => '请求 4K',
'trackers.deviceCode.waitingForAuthorization' => '等待授权…', 'seerr.seasons' => '',
'trackers.deviceCode.codeCopied' => '代码已复制', 'seerr.allSeasons' => '全部季',
'trackers.oauthProxy.title' => ({required Object service}) => '登录 ${service}', 'seerr.advancedOptions' => '高级',
'trackers.oauthProxy.body' => '扫描此二维码,或在任意设备上打开 URL。', 'seerr.destinationServer' => '目标服务器',
'trackers.oauthProxy.openToSignIn' => ({required Object service}) => '打开 ${service} 以登录', 'seerr.qualityProfile' => '质量配置文件',
'trackers.oauthProxy.urlCopied' => 'URL 已复制', 'seerr.rootFolder' => '根目录',
'trackers.libraryFilter.title' => '媒体库筛选', 'seerr.languageProfile' => '语言配置文件',
'trackers.libraryFilter.subtitleAllSyncing' => '同步所有媒体库', 'seerr.requestSubmitted' => '请求已提交',
'trackers.libraryFilter.subtitleNoneSyncing' => '不同步任何内容', 'seerr.requestFailed' => ({required Object error}) => '请求失败: ${error}',
'trackers.libraryFilter.subtitleBlocked' => ({required Object count}) => '已屏蔽 ${count}', 'seerr.requestsLoadFailed' => '无法加载请求选项',
'trackers.libraryFilter.subtitleAllowed' => ({required Object count}) => '已允许 ${count}', 'seerr.nothingToRequest' => '所有内容都已可用或已请求。',
'trackers.libraryFilter.mode' => '筛选模式', 'seerr.statusAvailable' => '可用',
'trackers.libraryFilter.modeBlacklist' => '黑名单', 'seerr.statusPartiallyAvailable' => '部分可用',
'trackers.libraryFilter.modeWhitelist' => '白名单', 'seerr.statusRequested' => '已请求',
'trackers.libraryFilter.modeHintBlacklist' => '同步下方未勾选的所有媒体库。', 'seerr.statusProcessing' => '处理中',
'trackers.libraryFilter.modeHintWhitelist' => '仅同步下方勾选的媒体库。', 'services.title' => '服务',
'trackers.libraryFilter.libraries' => '媒体库', 'services.hubSubtitle' => '同步观看进度并请求新内容。',
'trackers.libraryFilter.noLibraries' => '没有可用的媒体库', 'services.notConnected' => '未连接',
'services.connectedAs' => ({required Object username}) => '已以 @${username} 身份连接',
'services.scrobble' => '自动记录进度',
'services.scrobbleDescription' => '观看完一集或一部电影后更新你的列表。',
'services.disconnectConfirm' => ({required Object service}) => '断开 ${service} 连接?',
'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy 将停止更新 ${service}。可随时重新连接。',
'services.connectFailed' => ({required Object service}) => '无法连接到 ${service}。请重试。',
'services.names.mal' => 'MyAnimeList',
'services.names.anilist' => 'AniList',
'services.names.simkl' => 'Simkl',
'services.names.seerr' => 'Seerr',
'services.deviceCode.title' => ({required Object service}) => '${service} 上激活 Plezy',
'services.deviceCode.body' => ({required Object url}) => '访问 ${url} 并输入此代码:',
'services.deviceCode.openToActivate' => ({required Object service}) => '打开 ${service} 以激活',
'services.deviceCode.waitingForAuthorization' => '等待授权…',
'services.deviceCode.codeCopied' => '代码已复制',
'services.oauthProxy.title' => ({required Object service}) => '登录 ${service}',
'services.oauthProxy.body' => '扫描此二维码,或在任意设备上打开 URL。',
'services.oauthProxy.openToSignIn' => ({required Object service}) => '打开 ${service} 以登录',
'services.oauthProxy.urlCopied' => 'URL 已复制',
'services.libraryFilter.title' => '媒体库筛选',
'services.libraryFilter.subtitleAllSyncing' => '同步所有媒体库',
'services.libraryFilter.subtitleNoneSyncing' => '不同步任何内容',
'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '已屏蔽 ${count}',
'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '已允许 ${count}',
'services.libraryFilter.mode' => '筛选模式',
'services.libraryFilter.modeBlacklist' => '黑名单',
'services.libraryFilter.modeWhitelist' => '白名单',
'services.libraryFilter.modeHintBlacklist' => '同步下方未勾选的所有媒体库。',
'services.libraryFilter.modeHintWhitelist' => '仅同步下方勾选的媒体库。',
'services.libraryFilter.libraries' => '媒体库',
'services.libraryFilter.noLibraries' => '没有可用的媒体库',
'addServer.addJellyfinTitle' => '添加 Jellyfin 服务器', 'addServer.addJellyfinTitle' => '添加 Jellyfin 服务器',
'addServer.serverUrls' => '服务器 URL', 'addServer.serverUrls' => '服务器 URL',
'addServer.serverUrlsHelper' => '可输入多个 URL,以逗号分隔。', 'addServer.serverUrlsHelper' => '可输入多个 URL,以逗号分隔。',
+87 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "Visa vad du tittar på i Discord", "discordRichPresenceDescription": "Visa vad du tittar på i Discord",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "Synkronisera visningshistorik med Trakt", "traktDescription": "Synkronisera visningshistorik med Trakt",
"trackers": "Spårare", "services": "Tjänster",
"trackersDescription": "Synkronisera framsteg till Trakt, MyAnimeList, AniList och Simkl", "servicesDescription": "Anslut Trakt, MyAnimeList, Seerr med mera",
"companionRemoteServer": "Companion Remote-server", "companionRemoteServer": "Companion Remote-server",
"companionRemoteServerDescription": "Tillåt mobila enheter i ditt nätverk att styra denna app", "companionRemoteServerDescription": "Tillåt mobila enheter i ditt nätverk att styra denna app",
"autoPip": "Automatisk bild-i-bild", "autoPip": "Automatisk bild-i-bild",
@@ -416,7 +416,7 @@
"setScore": "Ange betyg", "setScore": "Ange betyg",
"saved": "Sparat", "saved": "Sparat",
"notAvailable": "Ingen matchning hittades", "notAvailable": "Ingen matchning hittades",
"noConnectedTrackers": "Anslut en spårare i Inställningar för att betygsätta där." "noConnectedServices": "Anslut en tjänst i Inställningar för att betygsätta där."
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, film", "mediaCardMovie": "${title}, film",
@@ -842,7 +842,52 @@
"navigation": { "navigation": {
"libraries": "Bibliotek", "libraries": "Bibliotek",
"downloads": "Nerladdat", "downloads": "Nerladdat",
"liveTv": "Live-TV" "liveTv": "Live-TV",
"explore": "Utforska"
},
"explore": {
"title": "Utforska",
"selectSource": "Välj källa",
"rows": {
"watchlist": "Bevakningslista",
"recommendedMovies": "Rekommenderade filmer",
"recommendedShows": "Rekommenderade serier",
"trendingMovies": "Trendande filmer",
"trendingShows": "Trendande serier",
"popularMovies": "Populära filmer",
"popularShows": "Populära serier",
"suggestedAnime": "Föreslagna anime",
"airingAnime": "Bästa pågående anime",
"popularAnime": "Mest populära anime",
"trending": "Trendar nu",
"upcomingMovies": "Kommande filmer",
"upcomingShows": "Kommande serier"
},
"status": {
"airing": "Pågår",
"ended": "Avslutad",
"canceled": "Nedlagd",
"upcoming": "Kommande"
},
"episodeCount": {
"one": "${n} avsnitt",
"other": "${n} avsnitt"
},
"cast": "Rollbesättning",
"characters": "Karaktärer",
"addToWatchlist": "Lägg till i bevakningslista",
"removeFromWatchlist": "Ta bort från bevakningslista",
"watchlistUpdateFailed": "Det gick inte att uppdatera bevakningslistan",
"notInLibrary": "Finns inte i ditt bibliotek",
"inTheseLibraries": "I dessa bibliotek",
"availableOn": "Tillgänglig på ${server}",
"checkingLibrary": "Kontrollerar ditt bibliotek...",
"emptyTitle": "Inget här ännu",
"emptyMessage": "Rader från ${source} visas här när de har innehåll.",
"searchHint": "Sök i ${source}",
"searchEmpty": "Inga resultat för \"${query}\"",
"searchPrompt": "Sök efter filmer och serier på ${source}.",
"searchFailed": "Sökningen misslyckades. Kontrollera din anslutning och försök igen."
}, },
"liveTv": { "liveTv": {
"title": "Live-TV", "title": "Live-TV",
@@ -1384,9 +1429,41 @@
"watchedSync": "Synkronisera tittad-status", "watchedSync": "Synkronisera tittad-status",
"watchedSyncDescription": "När du markerar något som tittat i Plezy markeras det också på Trakt." "watchedSyncDescription": "När du markerar något som tittat i Plezy markeras det också på Trakt."
}, },
"trackers": { "seerr": {
"title": "Spårare", "title": "Seerr",
"hubSubtitle": "Synka tittförlopp med Trakt och andra tjänster.", "connectTitle": "Anslut Seerr",
"serverUrl": "Server-URL",
"serverUrlHelper": "Adressen till din Seerr-instans",
"checkServer": "Fortsätt",
"signInWithJellyfin": "Logga in med Jellyfin",
"signInWithEmby": "Logga in med Emby",
"signInWithLocal": "Använd ett lokalt konto",
"email": "E-post",
"noSignInMethods": "Den här Seerr-instansen erbjuder ingen inloggningsmetod som Plezy stöder.",
"instance": "Instans",
"disconnectConfirm": "Koppla från Seerr?",
"disconnectConfirmBody": "Plezy glömmer den här Seerr-instansen. Återanslut när som helst.",
"request": "Begär",
"request4k": "Begär i 4K",
"seasons": "Säsonger",
"allSeasons": "Alla säsonger",
"advancedOptions": "Avancerat",
"destinationServer": "Målserver",
"qualityProfile": "Kvalitetsprofil",
"rootFolder": "Rotmapp",
"languageProfile": "Språkprofil",
"requestSubmitted": "Begäran skickad",
"requestFailed": "Begäran misslyckades: ${error}",
"requestsLoadFailed": "Det gick inte att läsa in alternativ för begäran",
"nothingToRequest": "Allt är redan tillgängligt eller begärt.",
"statusAvailable": "Tillgänglig",
"statusPartiallyAvailable": "Delvis tillgänglig",
"statusRequested": "Begärd",
"statusProcessing": "Bearbetas"
},
"services": {
"title": "Tjänster",
"hubSubtitle": "Synkronisera dina framsteg och begär nya titlar.",
"notConnected": "Ej ansluten", "notConnected": "Ej ansluten",
"connectedAs": "Ansluten som @${username}", "connectedAs": "Ansluten som @${username}",
"scrobble": "Spåra framsteg automatiskt", "scrobble": "Spåra framsteg automatiskt",
@@ -1394,10 +1471,11 @@
"disconnectConfirm": "Koppla från ${service}?", "disconnectConfirm": "Koppla från ${service}?",
"disconnectConfirmBody": "Plezy slutar uppdatera ${service}. Återanslut när som helst.", "disconnectConfirmBody": "Plezy slutar uppdatera ${service}. Återanslut när som helst.",
"connectFailed": "Kunde inte ansluta till ${service}. Försök igen.", "connectFailed": "Kunde inte ansluta till ${service}. Försök igen.",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "Aktivera Plezy på ${service}", "title": "Aktivera Plezy på ${service}",
+86 -9
View File
@@ -247,8 +247,8 @@
"discordRichPresenceDescription": "在 Discord 上显示您正在观看的内容", "discordRichPresenceDescription": "在 Discord 上显示您正在观看的内容",
"trakt": "Trakt", "trakt": "Trakt",
"traktDescription": "将观看历史与 Trakt 同步", "traktDescription": "将观看历史与 Trakt 同步",
"trackers": "追踪器", "services": "服务",
"trackersDescription": "将进度同步到 Trakt、MyAnimeList、AniList 和 Simkl", "servicesDescription": "连接 Trakt、MyAnimeList、Seerr 等",
"companionRemoteServer": "配套遥控服务器", "companionRemoteServer": "配套遥控服务器",
"companionRemoteServerDescription": "允许网络上的移动设备控制此应用", "companionRemoteServerDescription": "允许网络上的移动设备控制此应用",
"autoPip": "自动画中画", "autoPip": "自动画中画",
@@ -416,7 +416,7 @@
"setScore": "设置分数", "setScore": "设置分数",
"saved": "已保存", "saved": "已保存",
"notAvailable": "未找到匹配项", "notAvailable": "未找到匹配项",
"noConnectedTrackers": "在设置中连接跟踪器即可在那里评分。" "noConnectedServices": "在设置中连接服务,即可在评分。"
}, },
"accessibility": { "accessibility": {
"mediaCardMovie": "${title}, 电影", "mediaCardMovie": "${title}, 电影",
@@ -842,7 +842,51 @@
"navigation": { "navigation": {
"libraries": "媒体库", "libraries": "媒体库",
"downloads": "下载", "downloads": "下载",
"liveTv": "电视直播" "liveTv": "电视直播",
"explore": "探索"
},
"explore": {
"title": "探索",
"selectSource": "选择来源",
"rows": {
"watchlist": "想看列表",
"recommendedMovies": "推荐电影",
"recommendedShows": "推荐剧集",
"trendingMovies": "趋势电影",
"trendingShows": "趋势剧集",
"popularMovies": "热门电影",
"popularShows": "热门剧集",
"suggestedAnime": "推荐动画",
"airingAnime": "热门连载动画",
"popularAnime": "最受欢迎动画",
"trending": "趋势",
"upcomingMovies": "即将上映的电影",
"upcomingShows": "即将播出的剧集"
},
"status": {
"airing": "连载中",
"ended": "已完结",
"canceled": "已取消",
"upcoming": "即将上线"
},
"episodeCount": {
"other": "${n} 集"
},
"cast": "演员表",
"characters": "角色",
"addToWatchlist": "添加到想看列表",
"removeFromWatchlist": "从想看列表移除",
"watchlistUpdateFailed": "无法更新想看列表",
"notInLibrary": "不在你的媒体库中",
"inTheseLibraries": "在这些媒体库中",
"availableOn": "在 ${server} 上可用",
"checkingLibrary": "正在检查你的媒体库...",
"emptyTitle": "这里还什么都没有",
"emptyMessage": "当 ${source} 有内容时,相关内容将显示在这里。",
"searchHint": "搜索 ${source}",
"searchEmpty": "没有“${query}”的结果",
"searchPrompt": "在 ${source} 上搜索电影和剧集。",
"searchFailed": "搜索失败。请检查网络连接后重试。"
}, },
"liveTv": { "liveTv": {
"title": "电视直播", "title": "电视直播",
@@ -1383,9 +1427,41 @@
"watchedSync": "同步已观看状态", "watchedSync": "同步已观看状态",
"watchedSyncDescription": "在 Plezy 中将内容标记为已观看时,也会在 Trakt 上标记为已观看。" "watchedSyncDescription": "在 Plezy 中将内容标记为已观看时,也会在 Trakt 上标记为已观看。"
}, },
"trackers": { "seerr": {
"title": "追踪器", "title": "Seerr",
"hubSubtitle": "与 Trakt 和其他服务同步观看进度。", "connectTitle": "连接 Seerr",
"serverUrl": "服务器 URL",
"serverUrlHelper": "你的 Seerr 实例的地址",
"checkServer": "继续",
"signInWithJellyfin": "使用 Jellyfin 登录",
"signInWithEmby": "使用 Emby 登录",
"signInWithLocal": "使用本地账户",
"email": "邮箱",
"noSignInMethods": "此 Seerr 实例未提供 Plezy 支持的登录方式。",
"instance": "实例",
"disconnectConfirm": "断开 Seerr 连接?",
"disconnectConfirmBody": "Plezy 将忘记此 Seerr 实例。可随时重新连接。",
"request": "请求",
"request4k": "请求 4K",
"seasons": "季",
"allSeasons": "全部季",
"advancedOptions": "高级",
"destinationServer": "目标服务器",
"qualityProfile": "质量配置文件",
"rootFolder": "根目录",
"languageProfile": "语言配置文件",
"requestSubmitted": "请求已提交",
"requestFailed": "请求失败: ${error}",
"requestsLoadFailed": "无法加载请求选项",
"nothingToRequest": "所有内容都已可用或已请求。",
"statusAvailable": "可用",
"statusPartiallyAvailable": "部分可用",
"statusRequested": "已请求",
"statusProcessing": "处理中"
},
"services": {
"title": "服务",
"hubSubtitle": "同步观看进度并请求新内容。",
"notConnected": "未连接", "notConnected": "未连接",
"connectedAs": "已以 @${username} 身份连接", "connectedAs": "已以 @${username} 身份连接",
"scrobble": "自动记录进度", "scrobble": "自动记录进度",
@@ -1393,10 +1469,11 @@
"disconnectConfirm": "断开 ${service} 连接?", "disconnectConfirm": "断开 ${service} 连接?",
"disconnectConfirmBody": "Plezy 将停止更新 ${service}。可随时重新连接。", "disconnectConfirmBody": "Plezy 将停止更新 ${service}。可随时重新连接。",
"connectFailed": "无法连接到 ${service}。请重试。", "connectFailed": "无法连接到 ${service}。请重试。",
"services": { "names": {
"mal": "MyAnimeList", "mal": "MyAnimeList",
"anilist": "AniList", "anilist": "AniList",
"simkl": "Simkl" "simkl": "Simkl",
"seerr": "Seerr"
}, },
"deviceCode": { "deviceCode": {
"title": "在 ${service} 上激活 Plezy", "title": "在 ${service} 上激活 Plezy",
@@ -0,0 +1,368 @@
import 'package:flutter/material.dart';
import 'package:material_symbols_icons/symbols.dart';
import 'package:provider/provider.dart';
import '../../focus/focusable_button.dart';
import '../../focus/focusable_text_field.dart';
import '../../i18n/strings.g.dart';
import '../../mixins/controller_disposer_mixin.dart';
import '../../models/seerr/seerr_public_settings.dart';
import '../../models/seerr/seerr_session.dart';
import '../../providers/seerr_account_provider.dart';
import '../../services/seerr/seerr_constants.dart';
import '../../services/seerr/seerr_exceptions.dart';
import '../../theme/mono_tokens.dart';
import '../../widgets/app_icon.dart';
import '../../widgets/focused_scroll_scaffold.dart';
import '../../widgets/loading_indicator_box.dart';
import 'async_form_state_mixin.dart';
/// Which credential form is on screen after the probe.
enum _CredentialForm { none, jellyfin, emby, local }
/// Two-step Seerr connect flow:
/// 1. Probe the instance URL (`/settings/public`).
/// 2. Sign in with one of the methods the instance supports — one-tap
/// Plex (reusing the profile's stored token), Jellyfin/Emby
/// credentials, or a local Seerr account.
///
/// The finished [SeerrSession] is handed to [SeerrAccountProvider.adoptSession]
/// and the screen pops.
class SeerrConnectScreen extends StatefulWidget {
const SeerrConnectScreen({super.key});
@override
State<SeerrConnectScreen> createState() => _SeerrConnectScreenState();
}
class _SeerrConnectScreenState extends State<SeerrConnectScreen> with AsyncFormStateMixin, ControllerDisposerMixin {
late final _urlController = createTextEditingController();
late final _identifierController = createTextEditingController();
late final _passwordController = createTextEditingController();
final _urlFocus = FocusNode(debugLabel: 'SeerrConnect:Url');
final _continueFocus = FocusNode(debugLabel: 'SeerrConnect:Continue');
final _changeServerFocus = FocusNode(debugLabel: 'SeerrConnect:ChangeServer');
final _identifierFocus = FocusNode(debugLabel: 'SeerrConnect:Identifier');
final _passwordFocus = FocusNode(debugLabel: 'SeerrConnect:Password');
final _formKey = GlobalKey<FormState>();
SeerrPublicSettings? _instance;
String _baseUrl = '';
bool _plexTokenAvailable = false;
_CredentialForm _form = _CredentialForm.none;
@override
void dispose() {
_urlFocus.dispose();
_continueFocus.dispose();
_changeServerFocus.dispose();
_identifierFocus.dispose();
_passwordFocus.dispose();
super.dispose();
}
bool get _offersPlex {
final instance = _instance;
return instance != null &&
instance.mediaServerLogin &&
instance.mediaServerType == SeerrMediaServerType.plex &&
_plexTokenAvailable;
}
_CredentialForm get _mediaServerForm {
final instance = _instance;
if (instance == null || !instance.mediaServerLogin) return _CredentialForm.none;
return switch (instance.mediaServerType) {
SeerrMediaServerType.jellyfin => _CredentialForm.jellyfin,
SeerrMediaServerType.emby => _CredentialForm.emby,
_ => _CredentialForm.none,
};
}
Future<void> _probe() async {
final input = _urlController.text.trim();
if (input.isEmpty) {
setErrorText(t.addServer.required);
return;
}
// Bare hosts are common ("seerr.example.com") — default to https.
final url = input.contains('://') ? input : 'https://$input';
await runAsync<void>(() async {
final account = context.read<SeerrAccountProvider>();
final settings = await account.authService.probe(url);
final plexToken = await account.resolvePlexToken();
if (!mounted) return;
setState(() {
_instance = settings;
_baseUrl = url;
_plexTokenAvailable = plexToken != null && plexToken.isNotEmpty;
// With exactly one credential form on offer, skip the method list.
final mediaForm = _mediaServerForm;
if (!_offersPlex && mediaForm != _CredentialForm.none && !settings.localLogin) {
_form = mediaForm;
} else if (!_offersPlex && mediaForm == _CredentialForm.none && settings.localLogin) {
_form = _CredentialForm.local;
} else {
_form = _CredentialForm.none;
}
});
}, errorMapper: _describeError);
}
Future<void> _signInWithPlex() async {
await runAsync<void>(() async {
final account = context.read<SeerrAccountProvider>();
final token = await account.resolvePlexToken();
if (token == null || token.isEmpty) throw const SeerrAuthException('No Plex token available');
final session = await account.authService.signInWithPlex(baseUrl: _baseUrl, plexToken: token);
await _finish(account, session);
}, errorMapper: _describeError);
}
Future<void> _signInWithCredentials() async {
if (!(_formKey.currentState?.validate() ?? false)) return;
final form = _form;
await runAsync<void>(() async {
final account = context.read<SeerrAccountProvider>();
final identifier = _identifierController.text.trim();
final password = _passwordController.text;
final session = switch (form) {
_CredentialForm.jellyfin || _CredentialForm.emby => await account.authService.signInWithJellyfin(
baseUrl: _baseUrl,
username: identifier,
password: password,
emby: form == _CredentialForm.emby,
),
_CredentialForm.local => await account.authService.signInWithLocal(
baseUrl: _baseUrl,
email: identifier,
password: password,
),
_CredentialForm.none => throw StateError('no credential form selected'),
};
await _finish(account, session);
}, errorMapper: _describeError);
}
Future<void> _finish(SeerrAccountProvider account, SeerrSession session) async {
await account.adoptSession(session.copyWith(instanceLabel: _instance?.instanceLabel));
if (!mounted) return;
Navigator.of(context).pop(true);
}
String _describeError(Object e) => switch (e) {
SeerrUrlException(:final message) => message,
SeerrAuthException(:final message) => message,
_ => t.addServer.couldNotReachServer(error: e.toString()),
};
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
return FocusedScrollScaffold(
title: Text(t.seerr.connectTitle),
slivers: [
SliverPadding(
padding: const EdgeInsets.all(16),
sliver: SliverToBoxAdapter(
child: Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: _instance == null ? _buildUrlStep(theme) : _buildSignInStep(theme),
),
),
),
),
],
);
}
List<Widget> _buildUrlStep(ThemeData theme) {
return [
FocusableTextFormField(
controller: _urlController,
focusNode: _urlFocus,
autofocus: true,
tvKeyboardAutoOpenBehavior: TvKeyboardAutoOpenBehavior.afterFirstFocus,
keyboardType: TextInputType.url,
autocorrect: false,
enableSuggestions: false,
enabled: !busy,
onNavigateDown: () => _continueFocus.requestFocus(),
textInputAction: TextInputAction.go,
onFieldSubmitted: busy ? null : (_) => _probe(),
decoration: InputDecoration(
labelText: t.seerr.serverUrl,
// URL example — intentionally not localized.
hintText: 'https://seerr.example.com',
helperText: t.seerr.serverUrlHelper,
prefixIcon: const AppIcon(Symbols.link_rounded, fill: 1),
),
),
const SizedBox(height: 16),
FocusableButton(
focusNode: _continueFocus,
useBackgroundFocus: true,
onNavigateUp: () => _urlFocus.requestFocus(),
onPressed: busy ? null : _probe,
child: FilledButton.icon(
onPressed: busy ? null : _probe,
icon: busy ? const LoadingIndicatorBox() : const AppIcon(Symbols.travel_explore_rounded, fill: 1),
label: Text(t.seerr.checkServer),
),
),
...buildInlineError(theme),
];
}
List<Widget> _buildSignInStep(ThemeData theme) {
final instance = _instance!;
final mediaForm = _mediaServerForm;
final showLocalOption = instance.localLogin && _form != _CredentialForm.local;
final showMediaOption = mediaForm != _CredentialForm.none && _form != mediaForm;
final noMethods = !_offersPlex && mediaForm == _CredentialForm.none && !instance.localLogin;
return [
_buildInstanceCard(theme, instance),
const SizedBox(height: 16),
if (noMethods)
Text(t.seerr.noSignInMethods, style: theme.textTheme.bodyMedium?.copyWith(color: theme.colorScheme.error))
else ...[
if (_offersPlex) ...[
FocusableButton(
useBackgroundFocus: true,
onPressed: busy ? null : _signInWithPlex,
child: FilledButton.icon(
onPressed: busy ? null : _signInWithPlex,
icon: busy ? const LoadingIndicatorBox() : const AppIcon(Symbols.login_rounded, fill: 1),
label: Text(t.auth.signInWithPlex),
),
),
const SizedBox(height: 12),
],
if (_form != _CredentialForm.none) ..._buildCredentialFields(theme),
if (showMediaOption)
_buildMethodButton(
label: mediaForm == _CredentialForm.emby ? t.seerr.signInWithEmby : t.seerr.signInWithJellyfin,
onPressed: () => _switchForm(mediaForm),
),
if (showLocalOption)
_buildMethodButton(label: t.seerr.signInWithLocal, onPressed: () => _switchForm(_CredentialForm.local)),
],
...buildInlineError(theme),
];
}
void _switchForm(_CredentialForm form) {
setState(() {
_form = form;
_identifierController.clear();
_passwordController.clear();
});
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mounted && _identifierFocus.canRequestFocus) _identifierFocus.requestFocus();
});
}
Widget _buildMethodButton({required String label, required VoidCallback onPressed}) {
return Padding(
padding: const EdgeInsets.only(bottom: 12),
child: FocusableButton(
useBackgroundFocus: true,
onPressed: busy ? null : onPressed,
child: OutlinedButton(onPressed: busy ? null : onPressed, child: Text(label)),
),
);
}
List<Widget> _buildCredentialFields(ThemeData theme) {
final isLocal = _form == _CredentialForm.local;
return [
FocusableTextFormField(
controller: _identifierController,
focusNode: _identifierFocus,
autocorrect: false,
enableSuggestions: false,
enabled: !busy,
keyboardType: isLocal ? TextInputType.emailAddress : TextInputType.text,
textInputAction: TextInputAction.next,
onFieldSubmitted: busy ? null : (_) => _passwordFocus.requestFocus(),
decoration: InputDecoration(
labelText: isLocal ? t.seerr.email : t.addServer.username,
prefixIcon: AppIcon(isLocal ? Symbols.mail_rounded : Symbols.person_rounded, fill: 1),
),
validator: (v) => v == null || v.trim().isEmpty ? t.addServer.required : null,
),
const SizedBox(height: 12),
FocusableTextFormField(
controller: _passwordController,
focusNode: _passwordFocus,
obscureText: true,
enabled: !busy,
textInputAction: TextInputAction.done,
onFieldSubmitted: busy ? null : (_) => _signInWithCredentials(),
decoration: InputDecoration(
labelText: t.addServer.password,
prefixIcon: const AppIcon(Symbols.lock_rounded, fill: 1),
),
validator: (v) => v == null || v.isEmpty ? t.addServer.required : null,
),
const SizedBox(height: 16),
FocusableButton(
useBackgroundFocus: true,
onPressed: busy ? null : _signInWithCredentials,
child: FilledButton.icon(
onPressed: busy ? null : _signInWithCredentials,
icon: busy ? const LoadingIndicatorBox() : const AppIcon(Symbols.login_rounded, fill: 1),
label: Text(t.addServer.signIn),
),
),
const SizedBox(height: 12),
];
}
Widget _buildInstanceCard(ThemeData theme, SeerrPublicSettings instance) {
return Container(
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: theme.colorScheme.surfaceContainerHighest,
borderRadius: BorderRadius.circular(tokens(context).radiusMd),
),
child: Row(
children: [
const AppIcon(Symbols.cloud_done_rounded, fill: 1),
const SizedBox(width: 12),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(instance.instanceLabel, style: theme.textTheme.titleSmall),
Text(
_baseUrl,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: theme.textTheme.bodySmall?.copyWith(color: theme.colorScheme.onSurface.withValues(alpha: 0.7)),
),
],
),
),
FocusableButton(
focusNode: _changeServerFocus,
useBackgroundFocus: true,
onPressed: busy ? null : _resetToUrlStep,
child: TextButton(onPressed: busy ? null : _resetToUrlStep, child: Text(t.addServer.change)),
),
],
),
);
}
void _resetToUrlStep() {
setState(() {
_instance = null;
_form = _CredentialForm.none;
_identifierController.clear();
_passwordController.clear();
});
}
}
@@ -0,0 +1,87 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:material_symbols_icons/symbols.dart';
import 'package:provider/provider.dart';
import '../../i18n/strings.g.dart';
import '../../models/seerr/seerr_session.dart';
import '../../providers/seerr_account_provider.dart';
import '../../utils/dialogs.dart';
import '../../widgets/app_icon.dart';
import '../../widgets/settings_page.dart';
import '../../widgets/settings_section.dart';
/// Connected-state settings for the Seerr instance: who is signed in,
/// which instance, and disconnect.
class SeerrSettingsScreen extends StatelessWidget {
const SeerrSettingsScreen({super.key});
Future<void> _disconnect(BuildContext context, SeerrAccountProvider account) async {
final confirmed = await showConfirmDialog(
context,
title: t.seerr.disconnectConfirm,
message: t.seerr.disconnectConfirmBody,
confirmText: t.common.disconnect,
isDestructive: true,
);
if (!confirmed) return;
await account.disconnect();
// build()'s post-frame handler pops the screen once the provider rebuilds
// with isConnected == false — don't pop here too.
}
@override
Widget build(BuildContext context) {
return Consumer<SeerrAccountProvider>(
builder: (context, account, _) {
final session = account.session;
// Safety net: if the session got invalidated in the background, bail
// out — the Services hub row is the entry point for reconnecting.
if (session == null) {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (context.mounted) Navigator.of(context).pop();
});
return SettingsPage(title: Text(t.seerr.title), children: const []);
}
final methodLabel = switch (session.method) {
SeerrAuthMethod.plex => 'Plex',
SeerrAuthMethod.jellyfin => 'Jellyfin',
SeerrAuthMethod.emby => 'Emby',
SeerrAuthMethod.local => t.seerr.email,
};
return SettingsPage(
title: Text(t.seerr.title),
children: [
SettingsGroup(
children: [
ListTile(
leading: const AppIcon(Symbols.account_circle_rounded, fill: 1),
title: Text(t.services.connectedAs(username: session.displayName)),
subtitle: Text(methodLabel),
),
ListTile(
leading: const AppIcon(Symbols.dns_rounded, fill: 1),
title: Text(session.instanceLabel.isNotEmpty ? session.instanceLabel : t.seerr.instance),
subtitle: Text(session.baseUrl),
),
],
),
const SizedBox(height: 24),
SettingsGroup(
children: [
ListTile(
leading: AppIcon(Symbols.link_off_rounded, fill: 1, color: Theme.of(context).colorScheme.error),
title: Text(t.common.disconnect, style: TextStyle(color: Theme.of(context).colorScheme.error)),
onTap: () => unawaited(_disconnect(context, account)),
),
],
),
const SizedBox(height: 24),
],
);
},
);
}
}
@@ -1,39 +1,43 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:material_symbols_icons/symbols.dart'; import 'package:material_symbols_icons/symbols.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../i18n/strings.g.dart'; import '../../i18n/strings.g.dart';
import '../../providers/seerr_account_provider.dart';
import '../../providers/trackers_provider.dart'; import '../../providers/trackers_provider.dart';
import '../../providers/trakt_account_provider.dart'; import '../../providers/trakt_account_provider.dart';
import '../../widgets/app_icon.dart'; import '../../widgets/app_icon.dart';
import '../../widgets/catalog_source_logo.dart';
import '../../widgets/focused_scroll_scaffold.dart'; import '../../widgets/focused_scroll_scaffold.dart';
import '../../widgets/settings_section.dart'; import '../../widgets/settings_section.dart';
import 'seerr_connect_screen.dart';
import 'seerr_settings_screen.dart';
import 'tracker_settings_screen.dart'; import 'tracker_settings_screen.dart';
import 'trakt_settings_screen.dart'; import 'trakt_settings_screen.dart';
/// Unified hub for all watch-progress trackers: Trakt, MyAnimeList, AniList, /// Unified hub for all connected services: the watch-progress trackers
/// Simkl. Each row opens its service-specific settings screen. /// (Trakt, MyAnimeList, AniList, Simkl) and the Seerr request server. Each
class TrackersSettingsScreen extends StatelessWidget { /// row opens its service-specific settings screen.
const TrackersSettingsScreen({super.key}); class ServicesSettingsScreen extends StatelessWidget {
const ServicesSettingsScreen({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return FocusedScrollScaffold( return FocusedScrollScaffold(
title: Text(t.trackers.title), title: Text(t.services.title),
slivers: [ slivers: [
SliverList( SliverList(
delegate: SliverChildListDelegate([ delegate: SliverChildListDelegate([
Padding( Padding(
padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), padding: const EdgeInsets.fromLTRB(16, 8, 16, 16),
child: Text( child: Text(
t.trackers.hubSubtitle, t.services.hubSubtitle,
style: Theme.of( style: Theme.of(
context, context,
).textTheme.bodyMedium?.copyWith(color: Theme.of(context).colorScheme.onSurfaceVariant), ).textTheme.bodyMedium?.copyWith(color: Theme.of(context).colorScheme.onSurfaceVariant),
), ),
), ),
SettingsGroup(children: [_trakt(), _mal(), _anilist(), _simkl()]), SettingsGroup(children: [_trakt(), _mal(), _anilist(), _simkl(), _seerr()]),
const SizedBox(height: 24), const SizedBox(height: 24),
]), ]),
), ),
@@ -42,8 +46,8 @@ class TrackersSettingsScreen extends StatelessWidget {
} }
Widget _trakt() => Consumer<TraktAccountProvider>( Widget _trakt() => Consumer<TraktAccountProvider>(
builder: (context, account, _) => _TrackerHubRow( builder: (context, account, _) => _ServiceHubRow(
leading: const _TrackerLogo('assets/trakt_circlemark.svg'), leading: const CatalogSourceLogo.asset('assets/trakt_circlemark.svg', size: 24),
title: t.trakt.title, title: t.trakt.title,
username: account.isConnected ? account.username : null, username: account.isConnected ? account.username : null,
onTap: () { onTap: () {
@@ -57,9 +61,9 @@ class TrackersSettingsScreen extends StatelessWidget {
); );
Widget _mal() => Consumer<TrackersProvider>( Widget _mal() => Consumer<TrackersProvider>(
builder: (context, account, _) => _TrackerHubRow( builder: (context, account, _) => _ServiceHubRow(
leading: const _TrackerLogo('assets/mal_mark.svg'), leading: const CatalogSourceLogo.asset('assets/mal_mark.svg', size: 24),
title: t.trackers.services.mal, title: t.services.names.mal,
username: account.isMalConnected ? account.malUsername : null, username: account.isMalConnected ? account.malUsername : null,
onTap: () { onTap: () {
if (account.isMalConnected) { if (account.isMalConnected) {
@@ -75,9 +79,9 @@ class TrackersSettingsScreen extends StatelessWidget {
); );
Widget _anilist() => Consumer<TrackersProvider>( Widget _anilist() => Consumer<TrackersProvider>(
builder: (context, account, _) => _TrackerHubRow( builder: (context, account, _) => _ServiceHubRow(
leading: const _TrackerLogo('assets/anilist_mark.svg'), leading: const CatalogSourceLogo.asset('assets/anilist_mark.svg', size: 24),
title: t.trackers.services.anilist, title: t.services.names.anilist,
username: account.isAnilistConnected ? account.anilistUsername : null, username: account.isAnilistConnected ? account.anilistUsername : null,
onTap: () { onTap: () {
if (account.isAnilistConnected) { if (account.isAnilistConnected) {
@@ -93,9 +97,9 @@ class TrackersSettingsScreen extends StatelessWidget {
); );
Widget _simkl() => Consumer<TrackersProvider>( Widget _simkl() => Consumer<TrackersProvider>(
builder: (context, account, _) => _TrackerHubRow( builder: (context, account, _) => _ServiceHubRow(
leading: const _TrackerLogo('assets/simkl_mark.svg'), leading: const CatalogSourceLogo.asset('assets/simkl_mark.svg', size: 24),
title: t.trackers.services.simkl, title: t.services.names.simkl,
username: account.isSimklConnected ? account.simklUsername : null, username: account.isSimklConnected ? account.simklUsername : null,
onTap: () { onTap: () {
if (account.isSimklConnected) { if (account.isSimklConnected) {
@@ -109,9 +113,25 @@ class TrackersSettingsScreen extends StatelessWidget {
}, },
), ),
); );
Widget _seerr() => Consumer<SeerrAccountProvider>(
builder: (context, account, _) => _ServiceHubRow(
leading: const CatalogSourceLogo.asset('assets/seerr_mark.svg', size: 24),
title: t.services.names.seerr,
username: account.isConnected ? account.displayName : null,
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => account.isConnected ? const SeerrSettingsScreen() : const SeerrConnectScreen(),
),
);
},
),
);
} }
class _TrackerHubRow extends StatelessWidget { class _ServiceHubRow extends StatelessWidget {
final Widget leading; final Widget leading;
final String title; final String title;
@@ -120,30 +140,16 @@ class _TrackerHubRow extends StatelessWidget {
final VoidCallback onTap; final VoidCallback onTap;
const _TrackerHubRow({required this.leading, required this.title, required this.username, required this.onTap}); const _ServiceHubRow({required this.leading, required this.title, required this.username, required this.onTap});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ListTile( return ListTile(
leading: leading, leading: leading,
title: Text(title), title: Text(title),
subtitle: Text(username != null ? t.trackers.connectedAs(username: username!) : t.trackers.notConnected), subtitle: Text(username != null ? t.services.connectedAs(username: username!) : t.services.notConnected),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1), trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: onTap, onTap: onTap,
); );
} }
} }
/// 24x24 SVG logo driven by [IconTheme]. Uses [SvgTheme.currentColor] so SVGs
/// with multiple explicit fills (AniList keeps its brand-blue L while the A
/// follows the theme) render correctly alongside single-color wordmarks.
class _TrackerLogo extends StatelessWidget {
final String asset;
const _TrackerLogo(this.asset);
@override
Widget build(BuildContext context) {
final color = IconTheme.of(context).color ?? Theme.of(context).colorScheme.onSurface;
return SvgPicture.asset(asset, width: 24, height: 24, theme: SvgTheme(currentColor: color));
}
}
+15 -13
View File
@@ -24,6 +24,7 @@ import '../../services/file_picker_service.dart';
import '../../services/saf_storage_service.dart'; import '../../services/saf_storage_service.dart';
import '../../services/settings_export_service.dart'; import '../../services/settings_export_service.dart';
import '../../providers/theme_provider.dart'; import '../../providers/theme_provider.dart';
import '../../providers/seerr_account_provider.dart';
import '../../providers/trackers_provider.dart'; import '../../providers/trackers_provider.dart';
import '../../providers/trakt_account_provider.dart'; import '../../providers/trakt_account_provider.dart';
import '../../services/keyboard_shortcuts_service.dart'; import '../../services/keyboard_shortcuts_service.dart';
@@ -48,7 +49,7 @@ import 'keyboard_shortcuts_screen.dart';
import 'logs_screen.dart'; import 'logs_screen.dart';
import 'playback_settings_screen.dart'; import 'playback_settings_screen.dart';
import '../profile/profile_switch_screen.dart'; import '../profile/profile_switch_screen.dart';
import 'trackers_settings_screen.dart'; import 'services_settings_screen.dart';
import '../../widgets/loading_indicator_box.dart'; import '../../widgets/loading_indicator_box.dart';
class SettingsScreen extends StatefulWidget { class SettingsScreen extends StatefulWidget {
@@ -66,7 +67,7 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab, Moun
static const _kAppearance = 'appearance'; static const _kAppearance = 'appearance';
static const _kPlayback = 'playback'; static const _kPlayback = 'playback';
static const _kManageLibraries = 'manage_libraries'; static const _kManageLibraries = 'manage_libraries';
static const _kTrackers = 'trackers'; static const _kServices = 'services';
static const _kDownloadLocation = 'download_location'; static const _kDownloadLocation = 'download_location';
static const _kDownloadOnWifiOnly = 'download_on_wifi_only'; static const _kDownloadOnWifiOnly = 'download_on_wifi_only';
static const _kAutoRemoveWatchedDownloads = 'auto_remove_watched_downloads'; static const _kAutoRemoveWatchedDownloads = 'auto_remove_watched_downloads';
@@ -155,7 +156,7 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab, Moun
_buildAppearanceTile(), _buildAppearanceTile(),
_buildPlaybackTile(), _buildPlaybackTile(),
if (hasLibraries) _buildManageLibrariesTile(), if (hasLibraries) _buildManageLibrariesTile(),
_buildTrackersTile(), _buildServicesTile(),
], ],
), ),
@@ -248,22 +249,23 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab, Moun
); );
} }
Widget _buildTrackersTile() { Widget _buildServicesTile() {
return Consumer2<TraktAccountProvider, TrackersProvider>( return Consumer3<TraktAccountProvider, TrackersProvider, SeerrAccountProvider>(
builder: (context, trakt, trackers, _) { builder: (context, trakt, trackers, seerr, _) {
final connectedNames = <String>[ final connectedNames = <String>[
if (trakt.isConnected) t.trakt.title, if (trakt.isConnected) t.trakt.title,
if (trackers.isMalConnected) t.trackers.services.mal, if (trackers.isMalConnected) t.services.names.mal,
if (trackers.isAnilistConnected) t.trackers.services.anilist, if (trackers.isAnilistConnected) t.services.names.anilist,
if (trackers.isSimklConnected) t.trackers.services.simkl, if (trackers.isSimklConnected) t.services.names.simkl,
if (seerr.isConnected) t.services.names.seerr,
]; ];
final subtitle = connectedNames.isEmpty ? t.settings.trackersDescription : connectedNames.join(' · '); final subtitle = connectedNames.isEmpty ? t.settings.servicesDescription : connectedNames.join(' · ');
return SettingNavigationTile( return SettingNavigationTile(
focusNode: _focusTracker.get(_kTrackers), focusNode: _focusTracker.get(_kServices),
icon: Symbols.sync_rounded, icon: Symbols.sync_rounded,
title: t.settings.trackers, title: t.settings.services,
subtitle: subtitle, subtitle: subtitle,
destinationBuilder: (_) => const TrackersSettingsScreen(), destinationBuilder: (_) => const ServicesSettingsScreen(),
); );
}, },
); );
@@ -78,7 +78,7 @@ class TrackerAccountSettingsBody extends StatelessWidget {
final settings = SettingsService.instance; final settings = SettingsService.instance;
return ListTile( return ListTile(
leading: const AppIcon(Symbols.filter_list_rounded, fill: 1), leading: const AppIcon(Symbols.filter_list_rounded, fill: 1),
title: Text(t.trackers.libraryFilter.title), title: Text(t.services.libraryFilter.title),
subtitle: Text(TrackerLibraryFilterScreen.subtitleFor(settings, service)), subtitle: Text(TrackerLibraryFilterScreen.subtitleFor(settings, service)),
trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1), trailing: const AppIcon(Symbols.chevron_right_rounded, fill: 1),
onTap: () => Navigator.of( onTap: () => Navigator.of(
@@ -62,6 +62,6 @@ Future<void> launchTrackerConnect<T>(
Navigator.of(context).pop(); Navigator.of(context).pop();
} }
if (!ok) { if (!ok) {
showAppSnackBar(context, t.trackers.connectFailed(service: serviceName)); showAppSnackBar(context, t.services.connectFailed(service: serviceName));
} }
} }
@@ -29,18 +29,18 @@ class TrackerLibraryFilterScreen extends StatelessWidget {
final ids = settings.read(SettingsService.trackerFilterIdsPref(service)).toSet(); final ids = settings.read(SettingsService.trackerFilterIdsPref(service)).toSet();
if (ids.isEmpty) { if (ids.isEmpty) {
return mode == TrackerLibraryFilterMode.blacklist return mode == TrackerLibraryFilterMode.blacklist
? t.trackers.libraryFilter.subtitleAllSyncing ? t.services.libraryFilter.subtitleAllSyncing
: t.trackers.libraryFilter.subtitleNoneSyncing; : t.services.libraryFilter.subtitleNoneSyncing;
} }
final count = ids.length.toString(); final count = ids.length.toString();
return mode == TrackerLibraryFilterMode.blacklist return mode == TrackerLibraryFilterMode.blacklist
? t.trackers.libraryFilter.subtitleBlocked(count: count) ? t.services.libraryFilter.subtitleBlocked(count: count)
: t.trackers.libraryFilter.subtitleAllowed(count: count); : t.services.libraryFilter.subtitleAllowed(count: count);
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final title = Text(t.trackers.libraryFilter.title); final title = Text(t.services.libraryFilter.title);
final modePref = SettingsService.trackerFilterModePref(service); final modePref = SettingsService.trackerFilterModePref(service);
final idsPref = SettingsService.trackerFilterIdsPref(service); final idsPref = SettingsService.trackerFilterIdsPref(service);
@@ -79,8 +79,8 @@ class TrackerLibraryFilterScreen extends StatelessWidget {
padding: const EdgeInsets.fromLTRB(16, 8, 16, 16), padding: const EdgeInsets.fromLTRB(16, 8, 16, 16),
child: Text( child: Text(
mode == TrackerLibraryFilterMode.blacklist mode == TrackerLibraryFilterMode.blacklist
? t.trackers.libraryFilter.modeHintBlacklist ? t.services.libraryFilter.modeHintBlacklist
: t.trackers.libraryFilter.modeHintWhitelist, : t.services.libraryFilter.modeHintWhitelist,
style: theme.textTheme.bodyMedium?.copyWith(color: theme.colorScheme.onSurfaceVariant), style: theme.textTheme.bodyMedium?.copyWith(color: theme.colorScheme.onSurfaceVariant),
), ),
), ),
@@ -89,15 +89,15 @@ class TrackerLibraryFilterScreen extends StatelessWidget {
SettingSegmentedTile<TrackerLibraryFilterMode, TrackerLibraryFilterMode>( SettingSegmentedTile<TrackerLibraryFilterMode, TrackerLibraryFilterMode>(
pref: modePref, pref: modePref,
icon: Symbols.filter_list_rounded, icon: Symbols.filter_list_rounded,
title: t.trackers.libraryFilter.mode, title: t.services.libraryFilter.mode,
segments: [ segments: [
ButtonSegment( ButtonSegment(
value: TrackerLibraryFilterMode.blacklist, value: TrackerLibraryFilterMode.blacklist,
label: Text(t.trackers.libraryFilter.modeBlacklist), label: Text(t.services.libraryFilter.modeBlacklist),
), ),
ButtonSegment( ButtonSegment(
value: TrackerLibraryFilterMode.whitelist, value: TrackerLibraryFilterMode.whitelist,
label: Text(t.trackers.libraryFilter.modeWhitelist), label: Text(t.services.libraryFilter.modeWhitelist),
), ),
], ],
decode: (v) => v, decode: (v) => v,
@@ -110,8 +110,8 @@ class TrackerLibraryFilterScreen extends StatelessWidget {
if (libraries.isEmpty) { if (libraries.isEmpty) {
children.add( children.add(
SettingsGroup( SettingsGroup(
title: t.trackers.libraryFilter.libraries, title: t.services.libraryFilter.libraries,
children: [ListTile(title: Text(t.trackers.libraryFilter.noLibraries))], children: [ListTile(title: Text(t.services.libraryFilter.noLibraries))],
), ),
); );
} else if (showServerHeaders) { } else if (showServerHeaders) {
@@ -126,7 +126,7 @@ class TrackerLibraryFilterScreen extends StatelessWidget {
} else { } else {
children.add( children.add(
SettingsGroup( SettingsGroup(
title: t.trackers.libraryFilter.libraries, title: t.services.libraryFilter.libraries,
children: [ children: [
for (final libs in grouped.values) for (final libs in grouped.values)
for (final lib in libs) libraryTile(lib), for (final lib in libs) libraryTile(lib),
@@ -20,7 +20,7 @@ import 'tracker_connect_launcher.dart';
Future<void> startMalConnection(BuildContext context) { Future<void> startMalConnection(BuildContext context) {
final account = context.read<TrackersProvider>(); final account = context.read<TrackersProvider>();
final name = t.trackers.services.mal; final name = t.services.names.mal;
return launchTrackerConnect<OAuthProxyStart>( return launchTrackerConnect<OAuthProxyStart>(
context, context,
isBusyOrConnected: account.isConnecting(TrackerService.mal) || account.isMalConnected, isBusyOrConnected: account.isConnecting(TrackerService.mal) || account.isMalConnected,
@@ -34,7 +34,7 @@ Future<void> startMalConnection(BuildContext context) {
Future<void> startAnilistConnection(BuildContext context) { Future<void> startAnilistConnection(BuildContext context) {
final account = context.read<TrackersProvider>(); final account = context.read<TrackersProvider>();
final name = t.trackers.services.anilist; final name = t.services.names.anilist;
return launchTrackerConnect<OAuthProxyStart>( return launchTrackerConnect<OAuthProxyStart>(
context, context,
isBusyOrConnected: account.isConnecting(TrackerService.anilist) || account.isAnilistConnected, isBusyOrConnected: account.isConnecting(TrackerService.anilist) || account.isAnilistConnected,
@@ -48,7 +48,7 @@ Future<void> startAnilistConnection(BuildContext context) {
Future<void> startSimklConnection(BuildContext context) { Future<void> startSimklConnection(BuildContext context) {
final account = context.read<TrackersProvider>(); final account = context.read<TrackersProvider>();
final name = t.trackers.services.simkl; final name = t.services.names.simkl;
return launchTrackerConnect<DeviceCode>( return launchTrackerConnect<DeviceCode>(
context, context,
isBusyOrConnected: account.isConnecting(TrackerService.simkl) || account.isSimklConnected, isBusyOrConnected: account.isConnecting(TrackerService.simkl) || account.isSimklConnected,
@@ -83,7 +83,7 @@ class TrackerConfig {
static TrackerConfig mal() => TrackerConfig( static TrackerConfig mal() => TrackerConfig(
service: TrackerService.mal, service: TrackerService.mal,
displayName: t.trackers.services.mal, displayName: t.services.names.mal,
isConnected: (a) => a.isMalConnected, isConnected: (a) => a.isMalConnected,
username: (a) => a.malUsername, username: (a) => a.malUsername,
scrobblePref: SettingsService.enableMalScrobble, scrobblePref: SettingsService.enableMalScrobble,
@@ -93,7 +93,7 @@ class TrackerConfig {
static TrackerConfig anilist() => TrackerConfig( static TrackerConfig anilist() => TrackerConfig(
service: TrackerService.anilist, service: TrackerService.anilist,
displayName: t.trackers.services.anilist, displayName: t.services.names.anilist,
isConnected: (a) => a.isAnilistConnected, isConnected: (a) => a.isAnilistConnected,
username: (a) => a.anilistUsername, username: (a) => a.anilistUsername,
scrobblePref: SettingsService.enableAnilistScrobble, scrobblePref: SettingsService.enableAnilistScrobble,
@@ -103,7 +103,7 @@ class TrackerConfig {
static TrackerConfig simkl() => TrackerConfig( static TrackerConfig simkl() => TrackerConfig(
service: TrackerService.simkl, service: TrackerService.simkl,
displayName: t.trackers.services.simkl, displayName: t.services.names.simkl,
isConnected: (a) => a.isSimklConnected, isConnected: (a) => a.isSimklConnected,
username: (a) => a.simklUsername, username: (a) => a.simklUsername,
scrobblePref: SettingsService.enableSimklScrobble, scrobblePref: SettingsService.enableSimklScrobble,
@@ -122,8 +122,8 @@ class TrackerSettingsScreen extends StatelessWidget {
Future<void> _disconnect(BuildContext context, TrackersProvider account) async { Future<void> _disconnect(BuildContext context, TrackersProvider account) async {
final confirmed = await showConfirmDialog( final confirmed = await showConfirmDialog(
context, context,
title: t.trackers.disconnectConfirm(service: config.displayName), title: t.services.disconnectConfirm(service: config.displayName),
message: t.trackers.disconnectConfirmBody(service: config.displayName), message: t.services.disconnectConfirmBody(service: config.displayName),
confirmText: t.common.disconnect, confirmText: t.common.disconnect,
isDestructive: true, isDestructive: true,
); );
@@ -150,14 +150,14 @@ class TrackerSettingsScreen extends StatelessWidget {
final username = config.username(account); final username = config.username(account);
return TrackerAccountSettingsBody( return TrackerAccountSettingsBody(
title: title, title: title,
accountTitle: username != null ? t.trackers.connectedAs(username: username) : config.displayName, accountTitle: username != null ? t.services.connectedAs(username: username) : config.displayName,
service: config.service, service: config.service,
toggles: [ toggles: [
TrackerSettingsToggle( TrackerSettingsToggle(
pref: config.scrobblePref, pref: config.scrobblePref,
icon: Symbols.auto_timer, icon: Symbols.auto_timer,
title: t.trackers.scrobble, title: t.services.scrobble,
subtitle: t.trackers.scrobbleDescription, subtitle: t.services.scrobbleDescription,
onAfterWrite: config.onScrobbleChanged, onAfterWrite: config.onScrobbleChanged,
), ),
], ],
+38
View File
@@ -0,0 +1,38 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import '../models/catalog/catalog_item.dart';
/// Brand mark of a catalog source (Trakt circle, MAL square) — or any
/// service SVG via [CatalogSourceLogo.asset] — tinted with the ambient icon
/// color. Uses [SvgTheme.currentColor] so SVGs with multiple explicit fills
/// (AniList keeps its brand-blue L while the A follows the theme) render
/// correctly alongside single-color wordmarks.
class CatalogSourceLogo extends StatelessWidget {
final CatalogSourceId? id;
final String? assetPath;
final double size;
const CatalogSourceLogo(CatalogSourceId this.id, {super.key, this.size = 20}) : assetPath = null;
/// For services that aren't catalog sources (AniList, Simkl).
const CatalogSourceLogo.asset(String this.assetPath, {super.key, this.size = 20}) : id = null;
@override
Widget build(BuildContext context) {
final asset =
assetPath ??
switch (id!) {
CatalogSourceId.trakt => 'assets/trakt_circlemark.svg',
CatalogSourceId.mal => 'assets/mal_mark.svg',
CatalogSourceId.seerr => 'assets/seerr_mark.svg',
};
final color = IconTheme.of(context).color ?? Theme.of(context).colorScheme.onSurface;
return SvgPicture.asset(
asset,
width: size,
height: size,
theme: SvgTheme(currentColor: color),
);
}
}
+5 -5
View File
@@ -30,19 +30,19 @@ class DeviceCodeDialog extends StatelessWidget {
Future<void> _copy(BuildContext context) async { Future<void> _copy(BuildContext context) async {
await Clipboard.setData(ClipboardData(text: code.userCode)); await Clipboard.setData(ClipboardData(text: code.userCode));
if (!context.mounted) return; if (!context.mounted) return;
showAppSnackBar(context, t.trackers.deviceCode.codeCopied); showAppSnackBar(context, t.services.deviceCode.codeCopied);
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Theme.of(context); final theme = Theme.of(context);
return AlertDialog( return AlertDialog(
title: Text(t.trackers.deviceCode.title(service: serviceName)), title: Text(t.services.deviceCode.title(service: serviceName)),
content: Column( content: Column(
mainAxisSize: .min, mainAxisSize: .min,
crossAxisAlignment: .start, crossAxisAlignment: .start,
children: [ children: [
Text(t.trackers.deviceCode.body(url: code.verificationUrl), style: theme.textTheme.bodyMedium), Text(t.services.deviceCode.body(url: code.verificationUrl), style: theme.textTheme.bodyMedium),
const SizedBox(height: 16), const SizedBox(height: 16),
Center( Center(
child: InkWell( child: InkWell(
@@ -68,7 +68,7 @@ class DeviceCodeDialog extends StatelessWidget {
onPressed: _open, onPressed: _open,
child: FilledButton.icon( child: FilledButton.icon(
icon: const Icon(Icons.open_in_new), icon: const Icon(Icons.open_in_new),
label: Text(t.trackers.deviceCode.openToActivate(service: serviceName)), label: Text(t.services.deviceCode.openToActivate(service: serviceName)),
onPressed: _open, onPressed: _open,
), ),
), ),
@@ -78,7 +78,7 @@ class DeviceCodeDialog extends StatelessWidget {
children: [ children: [
const LoadingIndicatorBox(size: 16), const LoadingIndicatorBox(size: 16),
const SizedBox(width: 12), const SizedBox(width: 12),
Expanded(child: Text(t.trackers.deviceCode.waitingForAuthorization, style: theme.textTheme.bodySmall)), Expanded(child: Text(t.services.deviceCode.waitingForAuthorization, style: theme.textTheme.bodySmall)),
], ],
), ),
], ],
+5 -5
View File
@@ -29,19 +29,19 @@ class OAuthProxyDialog extends StatelessWidget {
Future<void> _copyUrl(BuildContext context) async { Future<void> _copyUrl(BuildContext context) async {
await Clipboard.setData(ClipboardData(text: start.url)); await Clipboard.setData(ClipboardData(text: start.url));
if (!context.mounted) return; if (!context.mounted) return;
showAppSnackBar(context, t.trackers.oauthProxy.urlCopied); showAppSnackBar(context, t.services.oauthProxy.urlCopied);
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Theme.of(context); final theme = Theme.of(context);
return AlertDialog( return AlertDialog(
title: Text(t.trackers.oauthProxy.title(service: serviceName)), title: Text(t.services.oauthProxy.title(service: serviceName)),
content: Column( content: Column(
mainAxisSize: .min, mainAxisSize: .min,
crossAxisAlignment: .start, crossAxisAlignment: .start,
children: [ children: [
Text(t.trackers.oauthProxy.body, style: theme.textTheme.bodyMedium), Text(t.services.oauthProxy.body, style: theme.textTheme.bodyMedium),
const SizedBox(height: 16), const SizedBox(height: 16),
// QrImageView doesn't support intrinsic sizing; wrap in SizedBox so // QrImageView doesn't support intrinsic sizing; wrap in SizedBox so
// AlertDialog's IntrinsicWidth walk sees a concrete width. // AlertDialog's IntrinsicWidth walk sees a concrete width.
@@ -77,7 +77,7 @@ class OAuthProxyDialog extends StatelessWidget {
onPressed: _open, onPressed: _open,
child: FilledButton.icon( child: FilledButton.icon(
icon: const Icon(Icons.open_in_new), icon: const Icon(Icons.open_in_new),
label: Text(t.trackers.oauthProxy.openToSignIn(service: serviceName)), label: Text(t.services.oauthProxy.openToSignIn(service: serviceName)),
onPressed: _open, onPressed: _open,
), ),
), ),
@@ -87,7 +87,7 @@ class OAuthProxyDialog extends StatelessWidget {
children: [ children: [
const LoadingIndicatorBox(size: 16), const LoadingIndicatorBox(size: 16),
const SizedBox(width: 12), const SizedBox(width: 12),
Expanded(child: Text(t.trackers.deviceCode.waitingForAuthorization, style: theme.textTheme.bodySmall)), Expanded(child: Text(t.services.deviceCode.waitingForAuthorization, style: theme.textTheme.bodySmall)),
], ],
), ),
], ],
+5 -5
View File
@@ -138,7 +138,7 @@ class _RatingBottomSheetState extends State<RatingBottomSheet> {
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 4), padding: const EdgeInsets.symmetric(horizontal: 2, vertical: 4),
child: Text( child: Text(
t.rateSheet.noConnectedTrackers, t.rateSheet.noConnectedServices,
style: Theme.of( style: Theme.of(
context, context,
).textTheme.bodySmall?.copyWith(color: Theme.of(context).colorScheme.onSurfaceVariant), ).textTheme.bodySmall?.copyWith(color: Theme.of(context).colorScheme.onSurfaceVariant),
@@ -229,7 +229,7 @@ class _RatingBottomSheetState extends State<RatingBottomSheet> {
autofocus: autofocus, autofocus: autofocus,
leading: _TrackerLogo(source.logoAsset), leading: _TrackerLogo(source.logoAsset),
title: source.title, title: source.title,
subtitle: source.username != null ? t.trackers.connectedAs(username: source.username!) : source.connectedLabel, subtitle: source.username != null ? t.services.connectedAs(username: source.username!) : source.connectedLabel,
loading: loading, loading: loading,
status: status, status: status,
enabled: !loading, enabled: !loading,
@@ -265,7 +265,7 @@ class _RatingBottomSheetState extends State<RatingBottomSheet> {
sources.add( sources.add(
_TrackerRatingSource( _TrackerRatingSource(
service: TrackerService.mal, service: TrackerService.mal,
title: t.trackers.services.mal, title: t.services.names.mal,
username: trackers.malUsername, username: trackers.malUsername,
connectedLabel: t.trakt.connected, connectedLabel: t.trakt.connected,
logoAsset: 'assets/mal_mark.svg', logoAsset: 'assets/mal_mark.svg',
@@ -277,7 +277,7 @@ class _RatingBottomSheetState extends State<RatingBottomSheet> {
sources.add( sources.add(
_TrackerRatingSource( _TrackerRatingSource(
service: TrackerService.anilist, service: TrackerService.anilist,
title: t.trackers.services.anilist, title: t.services.names.anilist,
username: trackers.anilistUsername, username: trackers.anilistUsername,
connectedLabel: t.trakt.connected, connectedLabel: t.trakt.connected,
logoAsset: 'assets/anilist_mark.svg', logoAsset: 'assets/anilist_mark.svg',
@@ -289,7 +289,7 @@ class _RatingBottomSheetState extends State<RatingBottomSheet> {
sources.add( sources.add(
_TrackerRatingSource( _TrackerRatingSource(
service: TrackerService.simkl, service: TrackerService.simkl,
title: t.trackers.services.simkl, title: t.services.names.simkl,
username: trackers.simklUsername, username: trackers.simklUsername,
connectedLabel: t.trakt.connected, connectedLabel: t.trakt.connected,
logoAsset: 'assets/simkl_mark.svg', logoAsset: 'assets/simkl_mark.svg',
+1
View File
@@ -145,6 +145,7 @@ flutter:
- assets/mal_mark.svg - assets/mal_mark.svg
- assets/anilist_mark.svg - assets/anilist_mark.svg
- assets/simkl_mark.svg - assets/simkl_mark.svg
- assets/seerr_mark.svg
- assets/go-noto-current-regular.ttf - assets/go-noto-current-regular.ttf
- assets/shaders/nvscaler/ - assets/shaders/nvscaler/
- assets/shaders/artcnn/ - assets/shaders/artcnn/