From 6dd87fd3486c17435d028101382d93db15365095 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 9 Mar 2025 11:52:12 +0200 Subject: [PATCH 01/70] Bump version to 2.10.2 --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 0f6862ed2..efdb8b4d1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,7 +9,7 @@ variables: testsFolder: './_tests' yarnCacheFolder: $(Pipeline.Workspace)/.yarn nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages - majorVersion: '2.10.1' + majorVersion: '2.10.2' minorVersion: $[counter('minorVersion', 1076)] lidarrVersion: '$(majorVersion).$(minorVersion)' buildName: '$(Build.SourceBranchName).$(lidarrVersion)' From 33049910de8ed733ed915af58ab37a7829434c71 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 16 Mar 2025 10:47:47 +0200 Subject: [PATCH 02/70] Bump version to 2.10.3 --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index efdb8b4d1..3050b9438 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,7 +9,7 @@ variables: testsFolder: './_tests' yarnCacheFolder: $(Pipeline.Workspace)/.yarn nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages - majorVersion: '2.10.2' + majorVersion: '2.10.3' minorVersion: $[counter('minorVersion', 1076)] lidarrVersion: '$(majorVersion).$(minorVersion)' buildName: '$(Build.SourceBranchName).$(lidarrVersion)' From a1c2bfa527111c78aef174dadb381524166ee263 Mon Sep 17 00:00:00 2001 From: Weblate Date: Sun, 16 Mar 2025 09:37:29 +0000 Subject: [PATCH 03/70] Multiple Translations updated by Weblate ignore-downstream Co-authored-by: Fixer Co-authored-by: Oskari Lavinto Co-authored-by: Weblate Co-authored-by: Weblate Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/ar/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/bg/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/ca/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/cs/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/da/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/de/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/el/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/es/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/fi/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/fr/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/he/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/hi/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/hr/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/hu/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/is/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/it/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/ja/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/ko/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/nb_NO/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/nl/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/pl/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/pt/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/pt_BR/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/ro/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/ru/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/sk/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/sv/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/th/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/tr/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/uk/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/vi/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/zh_CN/ Translation: Servarr/Lidarr --- src/NzbDrone.Core/Localization/Core/ar.json | 8 ++- src/NzbDrone.Core/Localization/Core/bg.json | 8 ++- src/NzbDrone.Core/Localization/Core/ca.json | 10 ++- src/NzbDrone.Core/Localization/Core/cs.json | 11 ++- src/NzbDrone.Core/Localization/Core/da.json | 10 ++- src/NzbDrone.Core/Localization/Core/de.json | 12 +++- src/NzbDrone.Core/Localization/Core/el.json | 8 ++- src/NzbDrone.Core/Localization/Core/es.json | 12 +++- src/NzbDrone.Core/Localization/Core/fi.json | 12 +++- src/NzbDrone.Core/Localization/Core/fr.json | 12 +++- src/NzbDrone.Core/Localization/Core/he.json | 8 ++- src/NzbDrone.Core/Localization/Core/hi.json | 8 ++- src/NzbDrone.Core/Localization/Core/hr.json | 3 +- src/NzbDrone.Core/Localization/Core/hu.json | 11 ++- src/NzbDrone.Core/Localization/Core/is.json | 8 ++- src/NzbDrone.Core/Localization/Core/it.json | 16 ++++- src/NzbDrone.Core/Localization/Core/ja.json | 8 ++- src/NzbDrone.Core/Localization/Core/ko.json | 70 ++++++++++++++++++- .../Localization/Core/nb_NO.json | 3 +- src/NzbDrone.Core/Localization/Core/nl.json | 10 ++- src/NzbDrone.Core/Localization/Core/pl.json | 8 ++- src/NzbDrone.Core/Localization/Core/pt.json | 9 ++- .../Localization/Core/pt_BR.json | 12 +++- src/NzbDrone.Core/Localization/Core/ro.json | 13 +++- src/NzbDrone.Core/Localization/Core/ru.json | 22 +++++- src/NzbDrone.Core/Localization/Core/sk.json | 3 +- src/NzbDrone.Core/Localization/Core/sv.json | 9 ++- src/NzbDrone.Core/Localization/Core/th.json | 8 ++- src/NzbDrone.Core/Localization/Core/tr.json | 12 +++- src/NzbDrone.Core/Localization/Core/uk.json | 8 ++- src/NzbDrone.Core/Localization/Core/vi.json | 8 ++- .../Localization/Core/zh_CN.json | 12 +++- 32 files changed, 340 insertions(+), 32 deletions(-) diff --git a/src/NzbDrone.Core/Localization/Core/ar.json b/src/NzbDrone.Core/Localization/Core/ar.json index 276ff036c..8e5b877da 100644 --- a/src/NzbDrone.Core/Localization/Core/ar.json +++ b/src/NzbDrone.Core/Localization/Core/ar.json @@ -759,5 +759,11 @@ "Preferred": "يفضل", "Today": "اليوم", "MappedNetworkDrivesWindowsService": "لا تتوفر محركات أقراص الشبكة المعينة عند التشغيل كخدمة Windows. يرجى الاطلاع على التعليمات لمزيد من المعلومات", - "DownloadClientSettingsRecentPriority": "أولوية العميل" + "DownloadClientSettingsRecentPriority": "أولوية العميل", + "CheckDownloadClientForDetails": "تحقق من برنامج التحميل لمزيد من التفاصيل", + "Downloaded": "تم التنزيل", + "Paused": "متوقف مؤقتًا", + "Pending": "قيد الانتظار", + "WaitingToImport": "في انتظار الاستيراد", + "WaitingToProcess": "في انتظار المعالجة" } diff --git a/src/NzbDrone.Core/Localization/Core/bg.json b/src/NzbDrone.Core/Localization/Core/bg.json index 5a5654ada..4150d7860 100644 --- a/src/NzbDrone.Core/Localization/Core/bg.json +++ b/src/NzbDrone.Core/Localization/Core/bg.json @@ -829,5 +829,11 @@ "Album": "албум", "AutoAdd": "Автоматично добавяне", "CatalogNumber": "каталожен номер", - "Discography": "дискография" + "Discography": "дискография", + "CheckDownloadClientForDetails": "проверете клиента за изтегляне за повече подробности", + "WaitingToImport": "Изчаква се импортиране", + "WaitingToProcess": "Изчаква се обработка", + "Downloaded": "Изтеглено", + "Paused": "На пауза", + "Pending": "В очакване" } diff --git a/src/NzbDrone.Core/Localization/Core/ca.json b/src/NzbDrone.Core/Localization/Core/ca.json index 48699e2d2..f090fc042 100644 --- a/src/NzbDrone.Core/Localization/Core/ca.json +++ b/src/NzbDrone.Core/Localization/Core/ca.json @@ -984,5 +984,13 @@ "UpdateFiltered": "Actualitza filtrats", "IndexerSettingsApiUrl": "URL de l'API", "CountCustomFormatsSelected": "{count} format(s) personalitzat(s) seleccionat(s)", - "Install": "Instal·la" + "Install": "Instal·la", + "CheckDownloadClientForDetails": "Consulteu el client de descàrrega per a obtenir més detalls", + "DownloadWarning": "Avís de baixada: {warningMessage}", + "Downloaded": "S'ha baixat", + "ImportFailed": "La importació ha fallat: {sourceTitle}", + "Paused": "En pausa", + "Pending": "Pendents", + "WaitingToImport": "S’està esperant per a importar", + "WaitingToProcess": "S’està esperant per a processar" } diff --git a/src/NzbDrone.Core/Localization/Core/cs.json b/src/NzbDrone.Core/Localization/Core/cs.json index c184cd978..62778716a 100644 --- a/src/NzbDrone.Core/Localization/Core/cs.json +++ b/src/NzbDrone.Core/Localization/Core/cs.json @@ -917,5 +917,14 @@ "DoNotBlocklistHint": "Odstraň bez přidání do seznamu blokování", "DownloadClientAriaSettingsDirectoryHelpText": "Volitelné umístění pro stahování, pokud chcete použít výchozí umístění Aria2, ponechte prázdné", "DownloadClientQbittorrentSettingsContentLayout": "Rozvržení obsahu", - "DownloadClientQbittorrentSettingsContentLayoutHelpText": "Zda použít rozvržení obsahu nakonfigurované v qBittorrentu, původní rozvržení z torrentu nebo vždy vytvořit podsložku (qBittorrent 4.3.2+)" + "DownloadClientQbittorrentSettingsContentLayoutHelpText": "Zda použít rozvržení obsahu nakonfigurované v qBittorrentu, původní rozvržení z torrentu nebo vždy vytvořit podsložku (qBittorrent 4.3.2+)", + "DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Nepovinné - umístění kam přesunout dokončená stahování, pokud ponecháte prázné, použije se výchozí umístění Deluge", + "DownloadClientDelugeSettingsDirectoryHelpText": "Nepovinné - umístění stahovaných souborů, pokud ponecháte prázné, použije se výchozí umístění Deluge", + "WaitingToImport": "Čekání na import", + "WaitingToProcess": "Čekání na zpracování", + "DownloadClientDelugeSettingsDirectoryCompleted": "Adresář kam přesunout po dokončení", + "CheckDownloadClientForDetails": "zkontrolujte klienta pro stahování pro více informací", + "Downloaded": "Staženo", + "Paused": "Pozastaveno", + "Pending": "čekající" } diff --git a/src/NzbDrone.Core/Localization/Core/da.json b/src/NzbDrone.Core/Localization/Core/da.json index ebe0fb7be..dec645e3e 100644 --- a/src/NzbDrone.Core/Localization/Core/da.json +++ b/src/NzbDrone.Core/Localization/Core/da.json @@ -798,5 +798,13 @@ "Episode": "afsnit", "MetadataProfile": "metadataprofil", "Min": "Min", - "DownloadClientSettingsRecentPriority": "Kundens prioritet" + "DownloadClientSettingsRecentPriority": "Kundens prioritet", + "Pending": "Verserende", + "ImportFailed": "Import mislykkedes: »{sourceTitle}«", + "CheckDownloadClientForDetails": "tjek download klient for flere detaljer", + "DownloadWarning": "Downloadadvarsel: »{warningMessage}«", + "Downloaded": "Downloadet", + "Paused": "Pauset", + "WaitingToImport": "Venter på at importere", + "WaitingToProcess": "Venter på at behandle" } diff --git a/src/NzbDrone.Core/Localization/Core/de.json b/src/NzbDrone.Core/Localization/Core/de.json index 6ce2aa25f..6970578a9 100644 --- a/src/NzbDrone.Core/Localization/Core/de.json +++ b/src/NzbDrone.Core/Localization/Core/de.json @@ -1349,5 +1349,15 @@ "Inactive": "Inaktiv", "AlbumInfo": "Album Informationen", "Banners": "Banner", - "DeleteArtistFolders": "Künstlerordner löschen" + "DeleteArtistFolders": "Künstlerordner löschen", + "ImportFailed": "Import fehlgeschlagen: {sourceTitle}", + "DownloadWarning": "Download Warnung: {warningMessage}", + "Downloaded": "Heruntergeladen", + "Pending": "Ausstehend", + "PendingDownloadClientUnavailable": "Ausstehend - Download-Client nicht verfügbar", + "UnableToImportAutomatically": "Kann nicht automatisch importiert werden", + "CheckDownloadClientForDetails": "Weitere Informationen finden Sie im Download-Client", + "Paused": "Pausiert", + "WaitingToImport": "Warten auf Import", + "WaitingToProcess": "Warten auf Bearbeitung" } diff --git a/src/NzbDrone.Core/Localization/Core/el.json b/src/NzbDrone.Core/Localization/Core/el.json index 1ba176c58..4e8a92dee 100644 --- a/src/NzbDrone.Core/Localization/Core/el.json +++ b/src/NzbDrone.Core/Localization/Core/el.json @@ -1121,5 +1121,11 @@ "Min": "Ελάχ", "Today": "Σήμερα", "MappedNetworkDrivesWindowsService": "Οι αντιστοιχισμένες μονάδες δίσκου δικτύου δεν είναι διαθέσιμες κατά την εκτέλεση ως υπηρεσία Windows. Ανατρέξτε στις Συχνές Ερωτήσεις για περισσότερες πληροφορίες", - "DownloadClientSettingsRecentPriority": "Προτεραιότητα πελάτη" + "DownloadClientSettingsRecentPriority": "Προτεραιότητα πελάτη", + "Pending": "εκκρεμής", + "WaitingToImport": "Αναμονή για εισαγωγή", + "WaitingToProcess": "Αναμονή για επεξεργασία", + "CheckDownloadClientForDetails": "ελέγξτε το πρόγραμμα-πελάτη λήψης για περισσότερες λεπτομέρειες", + "Downloaded": "Κατεβασμένα", + "Paused": "Σε παύση" } diff --git a/src/NzbDrone.Core/Localization/Core/es.json b/src/NzbDrone.Core/Localization/Core/es.json index 2dc642ba6..a649ba180 100644 --- a/src/NzbDrone.Core/Localization/Core/es.json +++ b/src/NzbDrone.Core/Localization/Core/es.json @@ -1349,5 +1349,15 @@ "DownloadClientSettingsOlderPriorityAlbumHelpText": "Prioridad a usar cuando se capturen álbumes lanzados hace más de 14 días", "NotificationsSettingsWebhookHeaders": "Cabeceras", "NoMediumInformation": "Ninguna información del medio disponible.", - "TracksLoadError": "No se pudo cargar las pistas" + "TracksLoadError": "No se pudo cargar las pistas", + "CheckDownloadClientForDetails": "Revisar el cliente de descarga para más detalles", + "DownloadWarning": "Alerta de descarga: {warningMessage}", + "Downloaded": "Descargado", + "ImportFailed": "La importación falló: {sourceTitle}", + "Paused": "Pausado", + "Pending": "Pendiente", + "PendingDownloadClientUnavailable": "Pendiente - El cliente de descarga no está disponible", + "UnableToImportAutomatically": "No se pudo importar automáticamente", + "WaitingToImport": "Esperar para importar", + "WaitingToProcess": "Esperar al proceso" } diff --git a/src/NzbDrone.Core/Localization/Core/fi.json b/src/NzbDrone.Core/Localization/Core/fi.json index 370800fd6..9eab9f71b 100644 --- a/src/NzbDrone.Core/Localization/Core/fi.json +++ b/src/NzbDrone.Core/Localization/Core/fi.json @@ -1349,5 +1349,15 @@ "NotificationsTagsArtistHelpText": "Ilmoita vain vähintään yhdellä täsmäävällä tunnisteella merkityistä esittäjistä.", "NotificationsSettingsWebhookHeaders": "Otsakkeet", "TracksLoadError": "Virhe ladattaessa kappaleita.", - "NoMediumInformation": "Julkaisumuodon tietoja ei ole saatavilla." + "NoMediumInformation": "Julkaisumuodon tietoja ei ole saatavilla.", + "DownloadWarning": "Latausvaroitus: {warningMessage}", + "UnableToImportAutomatically": "Virhe automaattituonnissa.", + "WaitingToImport": "Odottaa tuontia", + "WaitingToProcess": "Odottaa käsittelyä", + "CheckDownloadClientForDetails": "katso lisätietoja latauspalvelusta", + "Downloaded": "Ladattu", + "Paused": "Keskeytetty", + "Pending": "Odottaa", + "PendingDownloadClientUnavailable": "Odottaa – Latauspalvelu ei ole käytettävissä", + "ImportFailed": "Tuonti epäonnistui: {sourceTitle}" } diff --git a/src/NzbDrone.Core/Localization/Core/fr.json b/src/NzbDrone.Core/Localization/Core/fr.json index e824e21dd..7b10d98b2 100644 --- a/src/NzbDrone.Core/Localization/Core/fr.json +++ b/src/NzbDrone.Core/Localization/Core/fr.json @@ -1340,5 +1340,15 @@ "DownloadClientSettingsRecentPriority": "Priorité récente", "PostImportCategory": "Catégorie après l'importation", "ManageFormats": "Gérer les formats", - "NotificationsSettingsWebhookHeaders": "En-têtes" + "NotificationsSettingsWebhookHeaders": "En-têtes", + "ImportFailed": "Échec de l'importation : {sourceTitle}", + "CheckDownloadClientForDetails": "Pour plus de détails, consultez le client de téléchargement", + "DownloadWarning": "Avertissement de téléchargement : {warningMessage}", + "Downloaded": "Téléchargé", + "Paused": "En pause", + "Pending": "En attente", + "PendingDownloadClientUnavailable": "En attente – Le client de téléchargement n'est pas disponible", + "UnableToImportAutomatically": "Impossible d'importer automatiquement", + "WaitingToImport": "En attente d'import", + "WaitingToProcess": "En attente de traitement" } diff --git a/src/NzbDrone.Core/Localization/Core/he.json b/src/NzbDrone.Core/Localization/Core/he.json index 04a74c103..ec324b3bb 100644 --- a/src/NzbDrone.Core/Localization/Core/he.json +++ b/src/NzbDrone.Core/Localization/Core/he.json @@ -797,5 +797,11 @@ "Min": "דקה", "Preferred": "מועדף", "MappedNetworkDrivesWindowsService": "כונני רשת ממופים אינם זמינים כאשר הם פועלים כשירות Windows. אנא עיין בשאלות הנפוצות למידע נוסף", - "DownloadClientSettingsRecentPriority": "עדיפות לקוח" + "DownloadClientSettingsRecentPriority": "עדיפות לקוח", + "Paused": "מושהית", + "CheckDownloadClientForDetails": "בדוק את לקוח ההורדות לפרטים נוספים", + "Downloaded": "הורד", + "Pending": "ממתין ל", + "WaitingToImport": "ממתין לייבוא", + "WaitingToProcess": "מחכה לעיבוד" } diff --git a/src/NzbDrone.Core/Localization/Core/hi.json b/src/NzbDrone.Core/Localization/Core/hi.json index 67f74f90f..b286c95f9 100644 --- a/src/NzbDrone.Core/Localization/Core/hi.json +++ b/src/NzbDrone.Core/Localization/Core/hi.json @@ -753,5 +753,11 @@ "Preferred": "पसंदीदा", "Today": "आज", "MappedNetworkDrivesWindowsService": "विंडोज सर्विस के रूप में चलने पर मैप्ड नेटवर्क ड्राइव उपलब्ध नहीं हैं। अधिक जानकारी के लिए कृपया FAQ देखें", - "DownloadClientSettingsRecentPriority": "ग्राहक प्राथमिकता" + "DownloadClientSettingsRecentPriority": "ग्राहक प्राथमिकता", + "Downloaded": "डाउनलोड", + "CheckDownloadClientForDetails": "अधिक विवरण के लिए डाउनलोड क्लाइंट की जाँच करें", + "Paused": "रोके गए", + "Pending": "विचाराधीन", + "WaitingToImport": "आयात की प्रतीक्षा में", + "WaitingToProcess": "प्रक्रिया की प्रतीक्षा की जा रही है" } diff --git a/src/NzbDrone.Core/Localization/Core/hr.json b/src/NzbDrone.Core/Localization/Core/hr.json index d2dd93826..0771d0e8e 100644 --- a/src/NzbDrone.Core/Localization/Core/hr.json +++ b/src/NzbDrone.Core/Localization/Core/hr.json @@ -307,5 +307,6 @@ "DeleteSelectedTrackFilesMessageText": "Jeste li sigurni da želite obrisati ovaj profil odgode?", "AddDelayProfileError": "Neuspješno dodavanje profila odgode, molimo pokušaj ponovno.", "Today": "Danas", - "DownloadClientSettingsRecentPriority": "Prioritet Klijenata" + "DownloadClientSettingsRecentPriority": "Prioritet Klijenata", + "CheckDownloadClientForDetails": "provjerite klienta za preuzimanje za još detalja" } diff --git a/src/NzbDrone.Core/Localization/Core/hu.json b/src/NzbDrone.Core/Localization/Core/hu.json index 387c736c6..beb21fdb7 100644 --- a/src/NzbDrone.Core/Localization/Core/hu.json +++ b/src/NzbDrone.Core/Localization/Core/hu.json @@ -1229,5 +1229,14 @@ "Today": "Ma", "DownloadClientSettingsOlderPriority": "Régebbi prioritás", "DownloadClientSettingsRecentPriority": "Legutóbbi prioritás", - "PostImportCategory": "Import utáni kategória" + "PostImportCategory": "Import utáni kategória", + "CheckDownloadClientForDetails": "További részletekért ellenőrizze a letöltési klienst", + "DownloadWarning": "Letöltési figyelmeztetés: {warningMessage}", + "Downloaded": "Letöltve", + "Paused": "Szüneteltetve", + "Pending": "Függőben levő", + "PendingDownloadClientUnavailable": "Függőben – A letöltési kliens nem érhető el", + "ImportFailed": "Sikertelen importálás: {sourceTitle}", + "WaitingToImport": "Várakozás importálásra", + "WaitingToProcess": "Várakozás feldolgozásra" } diff --git a/src/NzbDrone.Core/Localization/Core/is.json b/src/NzbDrone.Core/Localization/Core/is.json index 09291ef88..1718406fe 100644 --- a/src/NzbDrone.Core/Localization/Core/is.json +++ b/src/NzbDrone.Core/Localization/Core/is.json @@ -754,5 +754,11 @@ "Preferred": "Æskilegt", "Today": "Í dag", "MappedNetworkDrivesWindowsService": "Kortlagðar netdrif eru ekki fáanlegar þegar þær eru keyrðar sem Windows þjónusta. Vinsamlegast skoðaðu algengar spurningar fyrir frekari upplýsingar", - "DownloadClientSettingsRecentPriority": "Forgangur viðskiptavinar" + "DownloadClientSettingsRecentPriority": "Forgangur viðskiptavinar", + "CheckDownloadClientForDetails": "athugaðu niðurhals viðskiptavinur til að fá frekari upplýsingar", + "Downloaded": "Sótt", + "Pending": "Í bið", + "Paused": "Hlé gert", + "WaitingToImport": "Bið eftir að flytja inn", + "WaitingToProcess": "Bið eftir að vinna" } diff --git a/src/NzbDrone.Core/Localization/Core/it.json b/src/NzbDrone.Core/Localization/Core/it.json index 97eae932a..ea9515178 100644 --- a/src/NzbDrone.Core/Localization/Core/it.json +++ b/src/NzbDrone.Core/Localization/Core/it.json @@ -1047,5 +1047,19 @@ "Min": "Min", "Today": "Oggi", "MappedNetworkDrivesWindowsService": "Le unità di rete mappate non sono disponibili eseguendo come servizio di Windows. Vedere le FAQ per maggiori informazioni", - "DownloadClientSettingsRecentPriority": "Priorità Client" + "DownloadClientSettingsRecentPriority": "Priorità Client", + "AutoTaggingRequiredHelpText": "Questa condizione {implementationName} deve corrispondere perché si applichi la regola di auto tagging. Altrimenti è sufficiente una singola corrispondenza {implementationName}.", + "CheckDownloadClientForDetails": "controlla il client di download per maggiori dettagli", + "PendingDownloadClientUnavailable": "In Attesa - Client di Download in attesa", + "WaitingToImport": "In attesa di importazione", + "WaitingToProcess": "In attesa di processo", + "AutoRedownloadFailedFromInteractiveSearchHelpText": "Cerca automaticamente e tenta di scaricare una versione diversa quando il rilascio non riuscito è stato acquisito dalla ricerca interattiva", + "AutoRedownloadFailedFromInteractiveSearch": "Riesecuzione del download non riuscita dalla ricerca interattiva", + "AutoTaggingLoadError": "Impossibile caricare auto tagging", + "DownloadWarning": "Avviso di download: {warningMessage}", + "Downloaded": "Scaricato", + "ImportFailed": "Importazione fallita: {sourceTitle}", + "Paused": "In Pausa", + "Pending": "In Attesa", + "UnableToImportAutomatically": "Impossibile Importare Automaticamente" } diff --git a/src/NzbDrone.Core/Localization/Core/ja.json b/src/NzbDrone.Core/Localization/Core/ja.json index fe2555e2f..93383c278 100644 --- a/src/NzbDrone.Core/Localization/Core/ja.json +++ b/src/NzbDrone.Core/Localization/Core/ja.json @@ -754,5 +754,11 @@ "Preferred": "優先", "Today": "今日", "MappedNetworkDrivesWindowsService": "マップされたネットワークドライブは、Windowsサービスとして実行している場合は使用できません。詳細については、FAQを参照してください", - "DownloadClientSettingsRecentPriority": "クライアントの優先順位" + "DownloadClientSettingsRecentPriority": "クライアントの優先順位", + "Downloaded": "ダウンロード済み", + "Paused": "一時停止", + "Pending": "保留中", + "WaitingToProcess": "処理を待っています", + "CheckDownloadClientForDetails": "詳細については、ダウンロードクライアントを確認してください", + "WaitingToImport": "インポートを待機中" } diff --git a/src/NzbDrone.Core/Localization/Core/ko.json b/src/NzbDrone.Core/Localization/Core/ko.json index 1ce9c02f0..c4b133c80 100644 --- a/src/NzbDrone.Core/Localization/Core/ko.json +++ b/src/NzbDrone.Core/Localization/Core/ko.json @@ -899,5 +899,73 @@ "ChangeCategory": "카테고리 변경", "ClearBlocklist": "차단 목록 지우기", "DashOrSpaceDashDependingOnName": "이름에 따라 대시 또는 띄어쓰고 대시", - "Donate": "기부하기" + "Donate": "기부하기", + "IndexerDownloadClientHelpText": "이 인덱서에서 가져온 것을 가져오는 데 사용되는 다운로드 클라이언트를 지정하세요", + "NoDownloadClientsFound": "다운로드 클라이언트를 찾을 수 없음", + "QueueFilterHasNoItems": "선택된 대기열 필터에 항목이 없습니다", + "Total": "합계", + "IndexerSettingsSeedTimeHelpText": "토렌드가 중지되기 전에 시드되어야 하는 시간, 비어 있을 경우 다운로드 클라이언트의 기본값을 사용합니다", + "NotificationsTelegramSettingsIncludeAppNameHelpText": "다른 애플리케이션의 알림을 구분하기 위해 메시지 제목 앞에 {appName}를 접두사로 사용 (선택 사항)", + "Episode": "에피소드", + "FormatRuntimeHours": "{hours}시간", + "FormatRuntimeMinutes": "{minutes}분", + "FormatShortTimeSpanHours": "{hours}시간", + "FormatShortTimeSpanMinutes": "{minutes}분", + "HealthMessagesInfoBox": "행 끝에 있는 위키 링크(책 아이콘)를 클릭하거나 [로그]({link})를 확인하면 이러한 상태 점검 메시지의 원인에 대한 상세 정보를 찾을 수 있습니다. 이러한 메시지를 해석하는 데 어려움이 있는 경우 아래 링크에서 지원팀에 문의할 수 있습니다.", + "MassSearchCancelWarning": "{appName}을 재시작하거나 모든 인덱서를 비활성화하지 않고는 이 작업을 취소할 수 없음", + "Negated": "부정", + "NotificationsSettingsUpdateMapPathsFrom": "다음 위치부터 경로 매핑하기", + "ErrorLoadingContent": "이 콘텐트를 로드하는 중 오류가 발생했습니다", + "IndexerSettingsSeedRatioHelpText": "토런트가 멈추기 전에 도달해야 하는 비율, 비어 있으면 다운로드 클라이언트의 기본값을 사용합니다. 비율은 최소 1.0이어야 하며 인덱서 규칙을 따라야 합니다.", + "DownloadClientSettingsPostImportCategoryHelpText": "다운로드를 가져온 후 {appName}에 대한 카테고리를 설정합니다. {appName}는 시딩이 완료되었더라도 해당 카테고리의 토렌드를 제거하지 않습니다. 같은 카테고리를 유지하려면 비워두세요.", + "DownloadWarning": "다운로드 경고: {0}", + "Downloaded": "다운로드됨", + "ParseModalUnableToParse": "제공된 제목을 구문 분석할 수 없음 재시도하세요.", + "Pending": "대기중", + "PendingDownloadClientUnavailable": "보류 중 - 다운로드 클라이언트를 사용할 수 없음", + "Preferred": "선호", + "PreferredSize": "선호하는 크기", + "UnableToImportAutomatically": "자동으로 가져올 수 없습니다", + "WaitingToProcess": "처리 대기 중", + "AllExpandedCollapseAll": "모두 접기", + "AllExpandedExpandAll": "모두 펼치기", + "ParseModalErrorParsing": "구문분석 중 오류가 발생했습니다. 재시도하세요.", + "ParseModalHelpText": "위의 입력란에 릴리스 제목을 입력하세요", + "FormatDateTimeRelative": "{relativeDay}, {formattedDate} {formattedTime}", + "FormatShortTimeSpanSeconds": "{seconds}초", + "FormatTimeSpanDays": "{days}d {time}", + "IgnoreDownloadHint": "{appName}가 이 다운로드를 더 이상 처리하지 못하도록 합니다", + "IgnoreDownloadsHint": "{appName}가 이러한 다운로드를 더 이상 처리하지 않도록 중지합니다", + "IndexerSettingsSeedRatio": "종자 비율", + "PostImportCategory": "수입 후 카테고리", + "RegularExpressionsTutorialLink": "정규 표현식에 대한 상세 내용은 [여기]({url})에서 확인할 수 있습니다.", + "InstallMajorVersionUpdateMessageLink": "상세 내용은 [{domain}]({url})을 확인하세요.", + "NoCustomFormatsFound": "사용자 정의 형식을 찾을 수 없음", + "ParseModalHelpTextDetails": "{appName}은 제목을 구문 분석하고 해당 제목에 대한 세부 사항를 표시하려고 시도합니다.", + "SceneNumberHasntBeenVerifiedYet": "아직 장면 번호가 확인되지 않았습니다", + "NotificationsSettingsUpdateMapPathsFromHelpText": "{appName} 경로는 {serviceName}이 라이브러리 경로 위치를 {appName}와 다르게 볼 때 시리즈 경로를 수정하는 데 사용됨 (라이브러리 업데이트 필요)", + "NotificationsSettingsUpdateMapPathsToHelpText": "{serviceName} 경로는 {serviceName}이 라이브러리 경로 위치를 {appName}와 다르게 볼 때 시리즈 경로를 수정하는 데 사용됨 (라이브러리 업데이트 필요)", + "NotificationsSettingsUpdateMapPathsTo": "다음 위치까지 경로 매핑하기", + "Other": "기타", + "Absolute": "절대", + "EnabledHelpText": "출시 프로필을 활성화하려면 체크하세요", + "EpisodeDoesNotHaveAnAbsoluteEpisodeNumber": "에피소드에는 절대 에피소드 번호가 없음", + "MonitoredStatus": "모니터링 설정/상태", + "Monitoring": "모니터링 중", + "ExpandOtherByDefaultHelpText": "기타", + "Posters": "포스터", + "PreferProtocol": "{preferredProtocol} 선호", + "WithFiles": "파일과 함께", + "CheckDownloadClientForDetails": "상세 내용은 다운로드 클라이언트를 확인하세요", + "DownloadClientQbittorrentSettingsContentLayoutHelpText": "qBittorrent의 구성된 콘텐츠 레이아웃을 사용할지, 토런트의 원래 레이아웃을 사용할지, 항상 하위 폴더를 생성할지(qBittorrent 4.3.2+)", + "EnableRssHelpText": "{appName}가 RSS 동기화를 통해 주기적으로 릴리스를 찾을 때 사용됩니다", + "FormatDateTime": "{formattedDate} {formattedTime}", + "IncludeCustomFormatWhenRenaming": "이름을 바꿀 때 사용자 정의 형식 포함", + "InvalidUILanguage": "UI가 잘못된 언어로 설정되어 있습니다, 수정하고 설정을 저장하세요", + "IsShowingMonitoredMonitorSelected": "선택된 모니터", + "NoEventsFound": "이벤트가 없음", + "Paused": "일시중지", + "RootFolderPathHelpText": "루트 폴더 목록 항목이 다음에 추가됩니다:", + "WaitingToImport": "가져오기 대기 중", + "AddNewArtistRootFolderHelpText": "'{folder}' 하위 폴더가 자동으로 생성됩니다" } diff --git a/src/NzbDrone.Core/Localization/Core/nb_NO.json b/src/NzbDrone.Core/Localization/Core/nb_NO.json index eb62c4211..e694f772b 100644 --- a/src/NzbDrone.Core/Localization/Core/nb_NO.json +++ b/src/NzbDrone.Core/Localization/Core/nb_NO.json @@ -285,5 +285,6 @@ "AddImportListImplementation": "Legg til importliste - {implementationName}", "IgnoredPlaceHolder": "Legg til ny begrensning", "AddImportList": "Ny Importliste", - "AddNewArtistRootFolderHelpText": "Undermappa \"{folder}\" vil bli automatisk laget" + "AddNewArtistRootFolderHelpText": "Undermappa \"{folder}\" vil bli automatisk laget", + "CheckDownloadClientForDetails": "sjekk nedlastningsklienten for mer informasjon" } diff --git a/src/NzbDrone.Core/Localization/Core/nl.json b/src/NzbDrone.Core/Localization/Core/nl.json index 77559467d..8c24bdac1 100644 --- a/src/NzbDrone.Core/Localization/Core/nl.json +++ b/src/NzbDrone.Core/Localization/Core/nl.json @@ -907,5 +907,13 @@ "AddArtistWithName": "{artistName} toevoegen", "AddNewArtist": "Voeg nieuwe artiest toe", "AddNewAlbum": "Voeg nieuw album toe", - "AddNewAlbumSearchForNewAlbum": "Start zoektoch voor een nieuw album" + "AddNewAlbumSearchForNewAlbum": "Start zoektoch voor een nieuw album", + "DownloadWarning": "Download waarschuwing: {warningMessage}", + "Downloaded": "Gedownload", + "Pending": "In afwachting", + "WaitingToProcess": "Wachten tot Verwerking", + "CheckDownloadClientForDetails": "controleer downloader voor meer details", + "ImportFailed": "Importeren mislukt: {sourceTitle}", + "Paused": "Gepauzeerd", + "WaitingToImport": "Wachten tot Importeren" } diff --git a/src/NzbDrone.Core/Localization/Core/pl.json b/src/NzbDrone.Core/Localization/Core/pl.json index fe56245e9..05c8108d0 100644 --- a/src/NzbDrone.Core/Localization/Core/pl.json +++ b/src/NzbDrone.Core/Localization/Core/pl.json @@ -853,5 +853,11 @@ "Preferred": "Preferowane", "Today": "Dzisiaj", "MappedNetworkDrivesWindowsService": "Zmapowane dyski sieciowe nie są dostępne, gdy działają jako usługa systemu Windows. Więcej informacji można znaleźć w FAQ", - "DownloadClientSettingsRecentPriority": "Priorytet klienta" + "DownloadClientSettingsRecentPriority": "Priorytet klienta", + "CheckDownloadClientForDetails": "sprawdź klienta pobierania, aby uzyskać więcej informacji", + "Downloaded": "Pobrano", + "Paused": "Wstrzymano", + "Pending": "W oczekiwaniu", + "WaitingToImport": "Czekam na import", + "WaitingToProcess": "Czekam na przetworzenie" } diff --git a/src/NzbDrone.Core/Localization/Core/pt.json b/src/NzbDrone.Core/Localization/Core/pt.json index 1e8cc00ec..762f82806 100644 --- a/src/NzbDrone.Core/Localization/Core/pt.json +++ b/src/NzbDrone.Core/Localization/Core/pt.json @@ -1024,5 +1024,12 @@ "Preferred": "Preferido", "Today": "Hoje", "MappedNetworkDrivesWindowsService": "As unidades de rede mapeadas não estão disponíveis quando executadas como um serviço do Windows. Veja as Perguntas mais frequentes para obter mais informações", - "DownloadClientSettingsRecentPriority": "Prioridade do cliente" + "DownloadClientSettingsRecentPriority": "Prioridade do cliente", + "Downloaded": "Transferido", + "Paused": "Em pausa", + "WaitingToProcess": "Aguardando para processar", + "CheckDownloadClientForDetails": "verifique o cliente de transferências para obter mais detalhes", + "DownloadWarning": "Alerta de transferência: {warningMessage}", + "Pending": "Pendente", + "WaitingToImport": "Aguardando para importar" } diff --git a/src/NzbDrone.Core/Localization/Core/pt_BR.json b/src/NzbDrone.Core/Localization/Core/pt_BR.json index e0c1db1d5..b3da09969 100644 --- a/src/NzbDrone.Core/Localization/Core/pt_BR.json +++ b/src/NzbDrone.Core/Localization/Core/pt_BR.json @@ -1349,5 +1349,15 @@ "DownloadClientSettingsRecentPriorityAlbumHelpText": "Prioridade de uso ao adquirir álbuns lançados nos últimos 14 dias", "NotificationsSettingsWebhookHeaders": "Cabeçalhos", "TracksLoadError": "Incapaz de carregar faixas", - "NoMediumInformation": "Nenhuma informação da mídia está disponível." + "NoMediumInformation": "Nenhuma informação da mídia está disponível.", + "ImportFailed": "Falha na importação: {sourceTitle}", + "Pending": "Pendente", + "PendingDownloadClientUnavailable": "Pendente - O cliente de download não está disponível", + "WaitingToImport": "Aguardando para Importar", + "WaitingToProcess": "Aguardando para Processar", + "CheckDownloadClientForDetails": "verifique o cliente de download para saber mais", + "DownloadWarning": "Aviso de download: {warningMessage}", + "Downloaded": "Baixado", + "Paused": "Pausado", + "UnableToImportAutomatically": "Não foi possível importar automaticamente" } diff --git a/src/NzbDrone.Core/Localization/Core/ro.json b/src/NzbDrone.Core/Localization/Core/ro.json index 5b67e821c..892838e1f 100644 --- a/src/NzbDrone.Core/Localization/Core/ro.json +++ b/src/NzbDrone.Core/Localization/Core/ro.json @@ -800,5 +800,16 @@ "Today": "Astăzi", "MappedNetworkDrivesWindowsService": "Unitățile de rețea mapate nu sunt disponibile atunci când rulează ca serviciu Windows. Vă rugăm să consultați [FAQ]({url}) pentru mai multe informații", "DownloadClientSettingsRecentPriority": "Prioritate recente", - "DownloadClientSettingsOlderPriority": "Prioritate mai vechi" + "DownloadClientSettingsOlderPriority": "Prioritate mai vechi", + "Paused": "Întrerupt", + "Pending": "În așteptare", + "PendingDownloadClientUnavailable": "În așteptare - Clientul de descărcare nu este disponibil", + "WaitingToImport": "Se așteaptă importul", + "WaitingToProcess": "Se așteaptă procesarea", + "AddAutoTag": "Adăugați Tagare Automata", + "AddCondition": "Adăugați Condiție", + "Any": "Oricare", + "CheckDownloadClientForDetails": "Verificați clientul de descărcare pentru mai multe detalii", + "Downloaded": "Descărcat", + "AddImportList": "Adăugați Lista de Import" } diff --git a/src/NzbDrone.Core/Localization/Core/ru.json b/src/NzbDrone.Core/Localization/Core/ru.json index f65225d77..ae809669b 100644 --- a/src/NzbDrone.Core/Localization/Core/ru.json +++ b/src/NzbDrone.Core/Localization/Core/ru.json @@ -1088,5 +1088,25 @@ "DownloadClientSettingsOlderPriority": "Более старый приоритет", "DownloadClientSettingsPostImportCategoryHelpText": "Категория для приложения {appName}, которую необходимо установить после импорта загрузки. {appName} не удалит торренты в этой категории, даже если раздача завершена. Оставьте пустым, чтобы сохранить ту же категорию.", "DownloadClientSettingsRecentPriority": "Недавний приоритет", - "PostImportCategory": "Категория после импорта" + "PostImportCategory": "Категория после импорта", + "Downloaded": "Скачано", + "LastSearched": "Искали недавно", + "UnableToImportAutomatically": "Невозможно импортировать автоматически", + "WaitingToImport": "Ожидание импорта", + "WaitingToProcess": "Ожидает обработки", + "NotificationsSettingsWebhookHeaders": "Заголовки", + "DeleteSelected": "Удалить выбранные", + "EditSelectedCustomFormats": "Изменить выбранные пользовательские форматы", + "CheckDownloadClientForDetails": "проверьте клиент загрузки для более подробной информации", + "DownloadWarning": "Предупреждения по скачиванию: {warningMessage}", + "ImportFailed": "Не удалось импортировать: {sourceTitle}", + "InteractiveSearchModalHeaderTitle": "Интерактивный поиск - {title}", + "ManageCustomFormats": "Управлять пользовательскими форматами", + "NoCustomFormatsFound": "Нет пользовательских форматов", + "NoCutoffUnmetItems": "Нет элементов не достигших максимального качества", + "Paused": "Приостановлено", + "Pending": "В ожидании", + "PendingDownloadClientUnavailable": "Ожидание – Клиент для загрузки недоступен", + "SkipFreeSpaceCheckHelpText": "Используете, когда {appName} не может верно определить свободное место в вашей корневой папке", + "ManageFormats": "Управлять форматами" } diff --git a/src/NzbDrone.Core/Localization/Core/sk.json b/src/NzbDrone.Core/Localization/Core/sk.json index 56f223b2a..8d875dc66 100644 --- a/src/NzbDrone.Core/Localization/Core/sk.json +++ b/src/NzbDrone.Core/Localization/Core/sk.json @@ -295,5 +295,6 @@ "Clone": "Zatvoriť", "Reason": "Séria", "AddDelayProfileError": "Nie je možné pridať novú podmienku, skúste to znova.", - "DownloadClientSettingsRecentPriority": "Priorita klienta" + "DownloadClientSettingsRecentPriority": "Priorita klienta", + "CheckDownloadClientForDetails": "ďalšie podrobnosti nájdete v klientovi na sťahovanie" } diff --git a/src/NzbDrone.Core/Localization/Core/sv.json b/src/NzbDrone.Core/Localization/Core/sv.json index 5d0e56896..40a55143c 100644 --- a/src/NzbDrone.Core/Localization/Core/sv.json +++ b/src/NzbDrone.Core/Localization/Core/sv.json @@ -926,5 +926,12 @@ "Preferred": "Föredraget", "Today": "Idag", "MappedNetworkDrivesWindowsService": "Mappade nätverksenheter är inte tillgängliga när de körs som en Windows-tjänst. Se FAQ för mer information", - "DownloadClientSettingsRecentPriority": "Klient prioritet" + "DownloadClientSettingsRecentPriority": "Klient prioritet", + "DownloadWarning": "Hämtningsmeddelande: {warningMessage}", + "Downloaded": "Nerladdad", + "Paused": "Pausad", + "Pending": "I väntan på", + "WaitingToImport": "Väntar på att importera", + "WaitingToProcess": "Väntar på att bearbeta", + "CheckDownloadClientForDetails": "Kontrollera nedladdningsklienten för mer detaljer" } diff --git a/src/NzbDrone.Core/Localization/Core/th.json b/src/NzbDrone.Core/Localization/Core/th.json index cf37ebcb5..57304302d 100644 --- a/src/NzbDrone.Core/Localization/Core/th.json +++ b/src/NzbDrone.Core/Localization/Core/th.json @@ -751,5 +751,11 @@ "Preferred": "ที่ต้องการ", "Today": "วันนี้", "MappedNetworkDrivesWindowsService": "ไดรฟ์เครือข่ายที่แมปไม่พร้อมใช้งานเมื่อเรียกใช้เป็นบริการ Windows โปรดดูคำถามที่พบบ่อยสำหรับข้อมูลเพิ่มเติม", - "DownloadClientSettingsRecentPriority": "ลำดับความสำคัญของลูกค้า" + "DownloadClientSettingsRecentPriority": "ลำดับความสำคัญของลูกค้า", + "CheckDownloadClientForDetails": "ตรวจสอบไคลเอนต์ดาวน์โหลดสำหรับรายละเอียดเพิ่มเติม", + "Pending": "รอดำเนินการ", + "WaitingToImport": "กำลังรอการนำเข้า", + "WaitingToProcess": "กำลังรอดำเนินการ", + "Downloaded": "ดาวน์โหลดแล้ว", + "Paused": "หยุดชั่วคราว" } diff --git a/src/NzbDrone.Core/Localization/Core/tr.json b/src/NzbDrone.Core/Localization/Core/tr.json index 70ba2caab..4c9ee6a6b 100644 --- a/src/NzbDrone.Core/Localization/Core/tr.json +++ b/src/NzbDrone.Core/Localization/Core/tr.json @@ -1083,5 +1083,15 @@ "DownloadClientSettingsRecentPriority": "Yeni Önceliği", "PostImportCategory": "İçe Aktarma Sonrası Kategorisi", "DownloadClientSettingsOlderPriority": "Eski Önceliği", - "NotificationsSettingsWebhookHeaders": "Başlıklar" + "NotificationsSettingsWebhookHeaders": "Başlıklar", + "DownloadWarning": "İndirme Uyası: {warningMessage}", + "Downloaded": "İndirildi", + "Paused": "Duraklatıldı", + "Pending": "Bekliyor", + "PendingDownloadClientUnavailable": "Beklemede - İndirme istemcisi kullanılamıyor", + "UnableToImportAutomatically": "Otomatikman İçe Aktarılamıyor", + "CheckDownloadClientForDetails": "daha fazla ayrıntı için indirme istemcisini kontrol edin", + "WaitingToImport": "İçe Aktarma Bekleniyor", + "WaitingToProcess": "İşlenmek için Bekleniyor", + "ImportFailed": "İçe aktarma başarısız oldu: {sourceTitle}" } diff --git a/src/NzbDrone.Core/Localization/Core/uk.json b/src/NzbDrone.Core/Localization/Core/uk.json index 6cd0ed1f2..7b1d2a391 100644 --- a/src/NzbDrone.Core/Localization/Core/uk.json +++ b/src/NzbDrone.Core/Localization/Core/uk.json @@ -917,5 +917,11 @@ "Preferred": "Бажано", "Max": "Максимальний", "MappedNetworkDrivesWindowsService": "Підключені мережеві диски недоступні під час роботи як служби Windows. Щоб отримати додаткову інформацію, перегляньте FAQ", - "DownloadClientSettingsRecentPriority": "Пріоритет клієнта" + "DownloadClientSettingsRecentPriority": "Пріоритет клієнта", + "Downloaded": "Завантажено", + "Paused": "Призупинено", + "Pending": "В очікуванні", + "WaitingToImport": "Очікування імпорту", + "WaitingToProcess": "Очікування обробки", + "CheckDownloadClientForDetails": "перевірте клієнт завантаження, щоб дізнатися більше" } diff --git a/src/NzbDrone.Core/Localization/Core/vi.json b/src/NzbDrone.Core/Localization/Core/vi.json index ebce4b4bb..f57741ed6 100644 --- a/src/NzbDrone.Core/Localization/Core/vi.json +++ b/src/NzbDrone.Core/Localization/Core/vi.json @@ -788,5 +788,11 @@ "Preferred": "Ưu tiên", "Today": "Hôm nay", "MappedNetworkDrivesWindowsService": "Các ổ đĩa mạng được ánh xạ không khả dụng khi chạy dưới dạng Dịch vụ Windows. Vui lòng xem Câu hỏi thường gặp để biết thêm thông tin", - "DownloadClientSettingsRecentPriority": "Ưu tiên khách hàng" + "DownloadClientSettingsRecentPriority": "Ưu tiên khách hàng", + "Pending": "Đang chờ xử lý", + "WaitingToImport": "Đang chờ nhập", + "CheckDownloadClientForDetails": "kiểm tra ứng dụng khách tải xuống để biết thêm chi tiết", + "Downloaded": "Đã tải xuống", + "Paused": "Tạm dừng", + "WaitingToProcess": "Đang chờ xử lý" } diff --git a/src/NzbDrone.Core/Localization/Core/zh_CN.json b/src/NzbDrone.Core/Localization/Core/zh_CN.json index 6c1f63dbe..09dbca921 100644 --- a/src/NzbDrone.Core/Localization/Core/zh_CN.json +++ b/src/NzbDrone.Core/Localization/Core/zh_CN.json @@ -1337,5 +1337,15 @@ "DownloadClientSettingsRecentPriority": "最近优先", "PostImportCategory": "导入后分类", "NotificationsSettingsWebhookHeaders": "标头", - "DefaultDelayProfileArtist": "This is the default profile. It applies to all artists that don't have an explicit profile." + "DefaultDelayProfileArtist": "This is the default profile. It applies to all artists that don't have an explicit profile.", + "CheckDownloadClientForDetails": "查看下载客户端了解更多详细信息", + "DownloadWarning": "下载警告:{warningMessage}", + "UnableToImportAutomatically": "无法自动导入", + "ImportFailed": "导入失败:{sourceTitle}", + "Downloaded": "已下载", + "Paused": "暂停", + "Pending": "挂起", + "PendingDownloadClientUnavailable": "挂起 - 下载客户端不可用", + "WaitingToImport": "等待导入", + "WaitingToProcess": "等待处理" } From 81895f803387492da728a15fbfffdbb9d3b5025b Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Wed, 29 Jan 2025 18:46:19 -0800 Subject: [PATCH 04/70] Fixed: Drop downs flickering in some cases (cherry picked from commit 3b024443c5447b7638a69a99809bf44b2419261f) Closes #5386 --- .../src/Components/Form/EnhancedSelectInput.js | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/frontend/src/Components/Form/EnhancedSelectInput.js b/frontend/src/Components/Form/EnhancedSelectInput.js index cc4215025..8327b9385 100644 --- a/frontend/src/Components/Form/EnhancedSelectInput.js +++ b/frontend/src/Components/Form/EnhancedSelectInput.js @@ -20,6 +20,8 @@ import HintedSelectInputSelectedValue from './HintedSelectInputSelectedValue'; import TextInput from './TextInput'; import styles from './EnhancedSelectInput.css'; +const MINIMUM_DISTANCE_FROM_EDGE = 10; + function isArrowKey(keyCode) { return keyCode === keyCodes.UP_ARROW || keyCode === keyCodes.DOWN_ARROW; } @@ -137,18 +139,9 @@ class EnhancedSelectInput extends Component { // Listeners onComputeMaxHeight = (data) => { - const { - top, - bottom - } = data.offsets.reference; - const windowHeight = window.innerHeight; - if ((/^botton/).test(data.placement)) { - data.styles.maxHeight = windowHeight - bottom; - } else { - data.styles.maxHeight = top; - } + data.styles.maxHeight = windowHeight - MINIMUM_DISTANCE_FROM_EDGE; return data; }; @@ -457,6 +450,10 @@ class EnhancedSelectInput extends Component { order: 851, enabled: true, fn: this.onComputeMaxHeight + }, + preventOverflow: { + enabled: true, + boundariesElement: 'viewport' } }} > From 5cf9624e559f87245232cb676067a11bd64fd3bb Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 23 Mar 2025 13:02:07 +0200 Subject: [PATCH 05/70] Bump version to 2.11.0 --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 3050b9438..b87e0a2ed 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,7 +9,7 @@ variables: testsFolder: './_tests' yarnCacheFolder: $(Pipeline.Workspace)/.yarn nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages - majorVersion: '2.10.3' + majorVersion: '2.11.0' minorVersion: $[counter('minorVersion', 1076)] lidarrVersion: '$(majorVersion).$(minorVersion)' buildName: '$(Build.SourceBranchName).$(lidarrVersion)' From f8d4b3a59b32814fe32155999ed3ae0d5fc8756c Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 23 Mar 2025 13:07:35 +0200 Subject: [PATCH 06/70] Bump NLog, Npgsql, System.Memory and System.ValueTuple --- src/Lidarr.Api.V1/Lidarr.Api.V1.csproj | 2 +- src/Lidarr.Http/Lidarr.Http.csproj | 2 +- src/NzbDrone.Common/Lidarr.Common.csproj | 6 +++--- src/NzbDrone.Core/Lidarr.Core.csproj | 8 ++++---- src/NzbDrone.Mono/Lidarr.Mono.csproj | 2 +- src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj | 2 +- src/NzbDrone.Update/Lidarr.Update.csproj | 2 +- src/NzbDrone.Windows/Lidarr.Windows.csproj | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj b/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj index b501c694b..187fa86ff 100644 --- a/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj +++ b/src/Lidarr.Api.V1/Lidarr.Api.V1.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/Lidarr.Http/Lidarr.Http.csproj b/src/Lidarr.Http/Lidarr.Http.csproj index 5164642dc..103ca71ea 100644 --- a/src/Lidarr.Http/Lidarr.Http.csproj +++ b/src/Lidarr.Http/Lidarr.Http.csproj @@ -5,7 +5,7 @@ - + diff --git a/src/NzbDrone.Common/Lidarr.Common.csproj b/src/NzbDrone.Common/Lidarr.Common.csproj index 383149c37..6e16836fc 100644 --- a/src/NzbDrone.Common/Lidarr.Common.csproj +++ b/src/NzbDrone.Common/Lidarr.Common.csproj @@ -9,14 +9,14 @@ - + - + - + diff --git a/src/NzbDrone.Core/Lidarr.Core.csproj b/src/NzbDrone.Core/Lidarr.Core.csproj index a56bfb295..9c5d16036 100644 --- a/src/NzbDrone.Core/Lidarr.Core.csproj +++ b/src/NzbDrone.Core/Lidarr.Core.csproj @@ -9,7 +9,7 @@ - + @@ -20,12 +20,12 @@ - - + + - + diff --git a/src/NzbDrone.Mono/Lidarr.Mono.csproj b/src/NzbDrone.Mono/Lidarr.Mono.csproj index 73a45be81..386105c02 100644 --- a/src/NzbDrone.Mono/Lidarr.Mono.csproj +++ b/src/NzbDrone.Mono/Lidarr.Mono.csproj @@ -4,7 +4,7 @@ true - + diff --git a/src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj b/src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj index 704b7b0df..77109c6a9 100644 --- a/src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj +++ b/src/NzbDrone.Test.Common/Lidarr.Test.Common.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/NzbDrone.Update/Lidarr.Update.csproj b/src/NzbDrone.Update/Lidarr.Update.csproj index d2d84022e..c23403b1a 100644 --- a/src/NzbDrone.Update/Lidarr.Update.csproj +++ b/src/NzbDrone.Update/Lidarr.Update.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/NzbDrone.Windows/Lidarr.Windows.csproj b/src/NzbDrone.Windows/Lidarr.Windows.csproj index 7f41c9233..4914272c2 100644 --- a/src/NzbDrone.Windows/Lidarr.Windows.csproj +++ b/src/NzbDrone.Windows/Lidarr.Windows.csproj @@ -4,7 +4,7 @@ true - + From 18f13fe7f8cfec6aeab1385cd223fd67eae5bf8f Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sun, 23 Mar 2025 20:06:49 -0700 Subject: [PATCH 07/70] Fixed: Allow tables to scroll on tablets in portrait mode (cherry picked from commit 5fb632eb46cf77ea4f61d407f6429d9c32dba766) --- frontend/src/Components/Modal/Modal.css | 7 ------- frontend/src/Components/Table/Cells/TableRowCell.css | 2 +- .../src/Components/Table/Cells/VirtualTableRowCell.css | 2 +- frontend/src/Components/Table/Table.css | 2 +- frontend/src/Components/Table/TableHeaderCell.css | 2 +- frontend/src/Components/Table/TablePager.css | 2 +- frontend/src/Components/Table/VirtualTableHeaderCell.css | 2 +- 7 files changed, 6 insertions(+), 13 deletions(-) diff --git a/frontend/src/Components/Modal/Modal.css b/frontend/src/Components/Modal/Modal.css index f7a229501..c41e9a2d1 100644 --- a/frontend/src/Components/Modal/Modal.css +++ b/frontend/src/Components/Modal/Modal.css @@ -83,13 +83,6 @@ } @media only screen and (max-width: $breakpointMedium) { - .modal.small, - .modal.medium { - width: 90%; - } -} - -@media only screen and (max-width: $breakpointSmall) { .modalContainer { position: fixed; } diff --git a/frontend/src/Components/Table/Cells/TableRowCell.css b/frontend/src/Components/Table/Cells/TableRowCell.css index 47ce0d22e..7e3353c25 100644 --- a/frontend/src/Components/Table/Cells/TableRowCell.css +++ b/frontend/src/Components/Table/Cells/TableRowCell.css @@ -4,7 +4,7 @@ line-height: 1.52857143; } -@media only screen and (max-width: $breakpointSmall) { +@media only screen and (max-width: $breakpointMedium) { .cell { white-space: nowrap; } diff --git a/frontend/src/Components/Table/Cells/VirtualTableRowCell.css b/frontend/src/Components/Table/Cells/VirtualTableRowCell.css index 2501b7c84..f7f3b9306 100644 --- a/frontend/src/Components/Table/Cells/VirtualTableRowCell.css +++ b/frontend/src/Components/Table/Cells/VirtualTableRowCell.css @@ -7,7 +7,7 @@ white-space: nowrap; } -@media only screen and (max-width: $breakpointSmall) { +@media only screen and (max-width: $breakpointMedium) { .cell { white-space: nowrap; } diff --git a/frontend/src/Components/Table/Table.css b/frontend/src/Components/Table/Table.css index bdfdec641..d0507be6b 100644 --- a/frontend/src/Components/Table/Table.css +++ b/frontend/src/Components/Table/Table.css @@ -10,7 +10,7 @@ border-collapse: collapse; } -@media only screen and (max-width: $breakpointSmall) { +@media only screen and (max-width: $breakpointMedium) { .tableContainer { min-width: 100%; width: fit-content; diff --git a/frontend/src/Components/Table/TableHeaderCell.css b/frontend/src/Components/Table/TableHeaderCell.css index c2c4f58c8..eded9c95b 100644 --- a/frontend/src/Components/Table/TableHeaderCell.css +++ b/frontend/src/Components/Table/TableHeaderCell.css @@ -9,7 +9,7 @@ margin-left: 10px; } -@media only screen and (max-width: $breakpointSmall) { +@media only screen and (max-width: $breakpointMedium) { .headerCell { white-space: nowrap; } diff --git a/frontend/src/Components/Table/TablePager.css b/frontend/src/Components/Table/TablePager.css index d73a0d0c0..6d184196e 100644 --- a/frontend/src/Components/Table/TablePager.css +++ b/frontend/src/Components/Table/TablePager.css @@ -60,7 +60,7 @@ height: 25px; } -@media only screen and (max-width: $breakpointSmall) { +@media only screen and (max-width: $breakpointMedium) { .pager { flex-wrap: wrap; } diff --git a/frontend/src/Components/Table/VirtualTableHeaderCell.css b/frontend/src/Components/Table/VirtualTableHeaderCell.css index c2c4f58c8..eded9c95b 100644 --- a/frontend/src/Components/Table/VirtualTableHeaderCell.css +++ b/frontend/src/Components/Table/VirtualTableHeaderCell.css @@ -9,7 +9,7 @@ margin-left: 10px; } -@media only screen and (max-width: $breakpointSmall) { +@media only screen and (max-width: $breakpointMedium) { .headerCell { white-space: nowrap; } From 950c51bc5928d4b8a72b86d45249eac5be654bd1 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 20 Mar 2025 13:10:06 +0200 Subject: [PATCH 08/70] Fixed: Priority validation for indexers and download clients (cherry picked from commit f0e320f3aa501f120721503b8256f464a31be783) --- src/Lidarr.Api.V1/DownloadClient/DownloadClientController.cs | 2 ++ src/Lidarr.Api.V1/Indexers/IndexerController.cs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/Lidarr.Api.V1/DownloadClient/DownloadClientController.cs b/src/Lidarr.Api.V1/DownloadClient/DownloadClientController.cs index bd4c993bf..bc54aa7e0 100644 --- a/src/Lidarr.Api.V1/DownloadClient/DownloadClientController.cs +++ b/src/Lidarr.Api.V1/DownloadClient/DownloadClientController.cs @@ -1,3 +1,4 @@ +using FluentValidation; using Lidarr.Http; using NzbDrone.Core.Download; @@ -12,6 +13,7 @@ namespace Lidarr.Api.V1.DownloadClient public DownloadClientController(IDownloadClientFactory downloadClientFactory) : base(downloadClientFactory, "downloadclient", ResourceMapper, BulkResourceMapper) { + SharedValidator.RuleFor(c => c.Priority).InclusiveBetween(1, 50); } } } diff --git a/src/Lidarr.Api.V1/Indexers/IndexerController.cs b/src/Lidarr.Api.V1/Indexers/IndexerController.cs index 2ebcd3f29..2187e2b28 100644 --- a/src/Lidarr.Api.V1/Indexers/IndexerController.cs +++ b/src/Lidarr.Api.V1/Indexers/IndexerController.cs @@ -1,3 +1,4 @@ +using FluentValidation; using Lidarr.Http; using NzbDrone.Core.Indexers; using NzbDrone.Core.Validation; @@ -13,6 +14,7 @@ namespace Lidarr.Api.V1.Indexers public IndexerController(IndexerFactory indexerFactory, DownloadClientExistsValidator downloadClientExistsValidator) : base(indexerFactory, "indexer", ResourceMapper, BulkResourceMapper) { + SharedValidator.RuleFor(c => c.Priority).InclusiveBetween(1, 50); SharedValidator.RuleFor(c => c.DownloadClientId).SetValidator(downloadClientExistsValidator); } } From 4bea38ab9c57d1dc111ce7ed6e73fcdea6669d8f Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Tue, 11 Mar 2025 08:41:48 -0700 Subject: [PATCH 09/70] Improve logging when login fails due to CryptographicException (cherry picked from commit 1449941471cbb8885e9298317b9a30f2576d7941) --- .../AuthenticationController.cs | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Lidarr.Http/Authentication/AuthenticationController.cs b/src/Lidarr.Http/Authentication/AuthenticationController.cs index 2fc588dd2..f7281cf5c 100644 --- a/src/Lidarr.Http/Authentication/AuthenticationController.cs +++ b/src/Lidarr.Http/Authentication/AuthenticationController.cs @@ -1,9 +1,14 @@ using System.Collections.Generic; +using System.IO; using System.Security.Claims; +using System.Security.Cryptography; using System.Threading.Tasks; +using System.Xml; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using NLog; +using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Extensions; using NzbDrone.Core.Authentication; using NzbDrone.Core.Configuration; @@ -16,11 +21,15 @@ namespace Lidarr.Http.Authentication { private readonly IAuthenticationService _authService; private readonly IConfigFileProvider _configFileProvider; + private readonly IAppFolderInfo _appFolderInfo; + private readonly Logger _logger; - public AuthenticationController(IAuthenticationService authService, IConfigFileProvider configFileProvider) + public AuthenticationController(IAuthenticationService authService, IConfigFileProvider configFileProvider, IAppFolderInfo appFolderInfo, Logger logger) { _authService = authService; _configFileProvider = configFileProvider; + _appFolderInfo = appFolderInfo; + _logger = logger; } [HttpPost("login")] @@ -45,7 +54,23 @@ namespace Lidarr.Http.Authentication IsPersistent = resource.RememberMe == "on" }; - await HttpContext.SignInAsync(AuthenticationType.Forms.ToString(), new ClaimsPrincipal(new ClaimsIdentity(claims, "Cookies", "user", "identifier")), authProperties); + try + { + await HttpContext.SignInAsync(AuthenticationType.Forms.ToString(), new ClaimsPrincipal(new ClaimsIdentity(claims, "Cookies", "user", "identifier")), authProperties); + } + catch (CryptographicException e) + { + if (e.InnerException is XmlException) + { + _logger.Error(e, "Failed to authenticate user due to corrupt XML. Please remove all XML files from {0} and restart Lidarr", Path.Combine(_appFolderInfo.AppDataFolder, "asp")); + } + else + { + _logger.Error(e, "Failed to authenticate user. {0}", e.Message); + } + + return Unauthorized(); + } if (returnUrl.IsNullOrWhiteSpace() || !Url.IsLocalUrl(returnUrl)) { From a86bd8e862ebe265efdc44fb7383834edc775e07 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 11 Mar 2025 18:09:19 +0200 Subject: [PATCH 10/70] Fixed: Inherit indexer, size and release group for marked as failed history (cherry picked from commit e08c9d5501e65aabce3456b2dd7571867508d88f) --- src/NzbDrone.Core/History/EntityHistory.cs | 3 +++ src/NzbDrone.Core/History/EntityHistoryService.cs | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/History/EntityHistory.cs b/src/NzbDrone.Core/History/EntityHistory.cs index ffc7e8e7c..496213275 100644 --- a/src/NzbDrone.Core/History/EntityHistory.cs +++ b/src/NzbDrone.Core/History/EntityHistory.cs @@ -10,6 +10,9 @@ namespace NzbDrone.Core.History { public const string DOWNLOAD_CLIENT = "downloadClient"; public const string RELEASE_SOURCE = "releaseSource"; + public const string RELEASE_GROUP = "releaseGroup"; + public const string SIZE = "size"; + public const string INDEXER = "indexer"; public EntityHistory() { diff --git a/src/NzbDrone.Core/History/EntityHistoryService.cs b/src/NzbDrone.Core/History/EntityHistoryService.cs index d94d0cf9e..d88358ddb 100644 --- a/src/NzbDrone.Core/History/EntityHistoryService.cs +++ b/src/NzbDrone.Core/History/EntityHistoryService.cs @@ -267,7 +267,9 @@ namespace NzbDrone.Core.History history.Data.Add("DownloadClient", message.DownloadClient); history.Data.Add("Message", message.Message); - history.Data.Add("Size", message.TrackedDownload?.DownloadItem.TotalSize.ToString()); + history.Data.Add("ReleaseGroup", message.TrackedDownload?.RemoteAlbum?.ParsedAlbumInfo?.ReleaseGroup ?? message.Data.GetValueOrDefault(EntityHistory.RELEASE_GROUP)); + history.Data.Add("Size", message.TrackedDownload?.DownloadItem.TotalSize.ToString() ?? message.Data.GetValueOrDefault(EntityHistory.SIZE)); + history.Data.Add("Indexer", message.TrackedDownload?.RemoteAlbum?.Release?.Indexer ?? message.Data.GetValueOrDefault(EntityHistory.INDEXER)); _historyRepository.Insert(history); } @@ -417,6 +419,7 @@ namespace NzbDrone.Core.History history.Data.Add("Message", message.Message); history.Data.Add("ReleaseGroup", message.TrackedDownload?.RemoteAlbum?.ParsedAlbumInfo?.ReleaseGroup); history.Data.Add("Size", message.TrackedDownload?.DownloadItem.TotalSize.ToString()); + history.Data.Add("Indexer", message.TrackedDownload?.RemoteAlbum?.Release?.Indexer); historyToAdd.Add(history); } From d381463b608e3c09d8cbc77f90dd4224a18feefc Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 11 Mar 2025 18:13:39 +0200 Subject: [PATCH 11/70] New: Display indexer in download failed details (cherry picked from commit a324052debf63a8db73a2f3c79201864892bb62c) --- .../src/Activity/History/Details/HistoryDetails.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/frontend/src/Activity/History/Details/HistoryDetails.js b/frontend/src/Activity/History/Details/HistoryDetails.js index b90a64f47..84aa3e0f2 100644 --- a/frontend/src/Activity/History/Details/HistoryDetails.js +++ b/frontend/src/Activity/History/Details/HistoryDetails.js @@ -172,7 +172,8 @@ function HistoryDetails(props) { if (eventType === 'downloadFailed') { const { - message + message, + indexer } = data; return ( @@ -192,6 +193,14 @@ function HistoryDetails(props) { null } + { + indexer ? ( + + ) : null} + { message ? Date: Sun, 23 Mar 2025 18:16:18 +0200 Subject: [PATCH 12/70] Cleanup unused sorting fields for bulk manage providers (cherry picked from commit 6115236d3853f70a18b73aef15ebe4e18ab48e40) --- .../Manage/ManageCustomFormatsModalContent.tsx | 6 ++---- .../Manage/ManageDownloadClientsModalContent.tsx | 6 ++---- .../Indexers/Indexers/Manage/ManageIndexersModalContent.tsx | 6 ++---- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/Manage/ManageCustomFormatsModalContent.tsx b/frontend/src/Settings/CustomFormats/CustomFormats/Manage/ManageCustomFormatsModalContent.tsx index cb2fa3cca..aabaf67c1 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/Manage/ManageCustomFormatsModalContent.tsx +++ b/frontend/src/Settings/CustomFormats/CustomFormats/Manage/ManageCustomFormatsModalContent.tsx @@ -10,11 +10,11 @@ import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; +import Column from 'Components/Table/Column'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import useSelectState from 'Helpers/Hooks/useSelectState'; import { kinds } from 'Helpers/Props'; -import SortDirection from 'Helpers/Props/SortDirection'; import { bulkDeleteCustomFormats, bulkEditCustomFormats, @@ -34,7 +34,7 @@ type OnSelectedChangeCallback = React.ComponentProps< typeof ManageCustomFormatsModalRow >['onSelectedChange']; -const COLUMNS = [ +const COLUMNS: Column[] = [ { name: 'name', label: () => translate('Name'), @@ -56,8 +56,6 @@ const COLUMNS = [ interface ManageCustomFormatsModalContentProps { onModalClose(): void; - sortKey?: string; - sortDirection?: SortDirection; } function ManageCustomFormatsModalContent( diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/Manage/ManageDownloadClientsModalContent.tsx b/frontend/src/Settings/DownloadClients/DownloadClients/Manage/ManageDownloadClientsModalContent.tsx index 734f5efab..b2c1208cb 100644 --- a/frontend/src/Settings/DownloadClients/DownloadClients/Manage/ManageDownloadClientsModalContent.tsx +++ b/frontend/src/Settings/DownloadClients/DownloadClients/Manage/ManageDownloadClientsModalContent.tsx @@ -10,11 +10,11 @@ import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; +import Column from 'Components/Table/Column'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import useSelectState from 'Helpers/Hooks/useSelectState'; import { kinds } from 'Helpers/Props'; -import SortDirection from 'Helpers/Props/SortDirection'; import { bulkDeleteDownloadClients, bulkEditDownloadClients, @@ -35,7 +35,7 @@ type OnSelectedChangeCallback = React.ComponentProps< typeof ManageDownloadClientsModalRow >['onSelectedChange']; -const COLUMNS = [ +const COLUMNS: Column[] = [ { name: 'name', label: () => translate('Name'), @@ -82,8 +82,6 @@ const COLUMNS = [ interface ManageDownloadClientsModalContentProps { onModalClose(): void; - sortKey?: string; - sortDirection?: SortDirection; } function ManageDownloadClientsModalContent( diff --git a/frontend/src/Settings/Indexers/Indexers/Manage/ManageIndexersModalContent.tsx b/frontend/src/Settings/Indexers/Indexers/Manage/ManageIndexersModalContent.tsx index dbb394959..997d1b566 100644 --- a/frontend/src/Settings/Indexers/Indexers/Manage/ManageIndexersModalContent.tsx +++ b/frontend/src/Settings/Indexers/Indexers/Manage/ManageIndexersModalContent.tsx @@ -10,11 +10,11 @@ import ModalBody from 'Components/Modal/ModalBody'; import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; +import Column from 'Components/Table/Column'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import useSelectState from 'Helpers/Hooks/useSelectState'; import { kinds } from 'Helpers/Props'; -import SortDirection from 'Helpers/Props/SortDirection'; import { bulkDeleteIndexers, bulkEditIndexers, @@ -35,7 +35,7 @@ type OnSelectedChangeCallback = React.ComponentProps< typeof ManageIndexersModalRow >['onSelectedChange']; -const COLUMNS = [ +const COLUMNS: Column[] = [ { name: 'name', label: () => translate('Name'), @@ -82,8 +82,6 @@ const COLUMNS = [ interface ManageIndexersModalContentProps { onModalClose(): void; - sortKey?: string; - sortDirection?: SortDirection; } function ManageIndexersModalContent(props: ManageIndexersModalContentProps) { From c28a97cafdcb2d068cdca185ed9ceeb40027bddd Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 24 Mar 2025 19:14:58 -0700 Subject: [PATCH 13/70] Fixed: Deleting artist folder fails when files/folders aren't instantly removed (cherry picked from commit c84699ed5d5a2f59f236c26a8999d25a1102ec02) --- src/NzbDrone.Common/Disk/DiskProviderBase.cs | 22 ++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Common/Disk/DiskProviderBase.cs b/src/NzbDrone.Common/Disk/DiskProviderBase.cs index dfdb6b54c..01aaaaded 100644 --- a/src/NzbDrone.Common/Disk/DiskProviderBase.cs +++ b/src/NzbDrone.Common/Disk/DiskProviderBase.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.IO.Abstractions; using System.Linq; +using System.Threading; using NLog; using NzbDrone.Common.EnsureThat; using NzbDrone.Common.EnvironmentInfo; @@ -306,9 +307,26 @@ namespace NzbDrone.Common.Disk { Ensure.That(path, () => path).IsValidPath(PathValidationType.CurrentOs); - var files = GetFiles(path, recursive); + var files = GetFiles(path, recursive).ToList(); - files.ToList().ForEach(RemoveReadOnly); + files.ForEach(RemoveReadOnly); + + var attempts = 0; + + while (attempts < 3 && files.Any()) + { + EmptyFolder(path); + + if (GetFiles(path, recursive).Any()) + { + // Wait for IO operations to complete after emptying the folder since they aren't always + // instantly removed and it can lead to false positives that files are still present. + Thread.Sleep(3000); + } + + attempts++; + files = GetFiles(path, recursive).ToList(); + } _fileSystem.Directory.Delete(path, recursive); } From 1b9b57ae9bb835d5648cf13a15ee98abc5cea528 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 25 Mar 2025 21:13:13 +0200 Subject: [PATCH 14/70] Bump browserslist-db --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index a08388e6b..baba74fa1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2323,9 +2323,9 @@ camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663: - version "1.0.30001668" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz#98e214455329f54bf7a4d70b49c9794f0fbedbed" - integrity sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw== + version "1.0.30001707" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001707.tgz" + integrity sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw== chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" From 5bdc119b980f6c13a609f35a6c337a0d4e70d09c Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 27 Mar 2025 19:47:03 +0200 Subject: [PATCH 15/70] Fixed: Include Track for history/since Fixes #5421 --- src/NzbDrone.Core/History/EntityHistoryRepository.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/History/EntityHistoryRepository.cs b/src/NzbDrone.Core/History/EntityHistoryRepository.cs index 4b66c88b7..5c659724d 100644 --- a/src/NzbDrone.Core/History/EntityHistoryRepository.cs +++ b/src/NzbDrone.Core/History/EntityHistoryRepository.cs @@ -104,6 +104,7 @@ namespace NzbDrone.Core.History var builder = Builder() .Join((h, a) => h.ArtistId == a.Id) .Join((h, a) => h.AlbumId == a.Id) + .LeftJoin((h, t) => h.TrackId == t.Id) .Where(x => x.Date >= date); if (eventType.HasValue) @@ -111,10 +112,11 @@ namespace NzbDrone.Core.History builder.Where(h => h.EventType == eventType); } - return _database.QueryJoined(builder, (history, artist, album) => + return _database.QueryJoined(builder, (history, artist, album, track) => { history.Artist = artist; history.Album = album; + history.Track = track; return history; }).OrderBy(h => h.Date).ToList(); } From 8027ab5d2e15b128fd56227858e810f37c62c73e Mon Sep 17 00:00:00 2001 From: Bogdan Date: Fri, 28 Mar 2025 09:57:57 +0200 Subject: [PATCH 16/70] Include invalid path in exception message when failing to normalize --- src/NzbDrone.Common/PathEqualityComparer.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/NzbDrone.Common/PathEqualityComparer.cs b/src/NzbDrone.Common/PathEqualityComparer.cs index bd6fa430d..e8322864a 100644 --- a/src/NzbDrone.Common/PathEqualityComparer.cs +++ b/src/NzbDrone.Common/PathEqualityComparer.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Extensions; @@ -6,7 +7,7 @@ namespace NzbDrone.Common { public class PathEqualityComparer : IEqualityComparer { - public static readonly PathEqualityComparer Instance = new PathEqualityComparer(); + public static readonly PathEqualityComparer Instance = new (); private PathEqualityComparer() { @@ -19,12 +20,19 @@ namespace NzbDrone.Common public int GetHashCode(string obj) { - if (OsInfo.IsWindows) + try { - return obj.CleanFilePath().Normalize().ToLower().GetHashCode(); - } + if (OsInfo.IsWindows) + { + return obj.CleanFilePath().Normalize().ToLower().GetHashCode(); + } - return obj.CleanFilePath().Normalize().GetHashCode(); + return obj.CleanFilePath().Normalize().GetHashCode(); + } + catch (ArgumentException ex) + { + throw new ArgumentException($"Invalid path: {obj}", ex); + } } } } From 13f6b1a086ba95e355a9bcc37799bdcec8e5f87f Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 30 Mar 2025 10:17:14 +0300 Subject: [PATCH 17/70] Bump version to 2.11.1 --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b87e0a2ed..9076b6da6 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,7 +9,7 @@ variables: testsFolder: './_tests' yarnCacheFolder: $(Pipeline.Workspace)/.yarn nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages - majorVersion: '2.11.0' + majorVersion: '2.11.1' minorVersion: $[counter('minorVersion', 1076)] lidarrVersion: '$(majorVersion).$(minorVersion)' buildName: '$(Build.SourceBranchName).$(lidarrVersion)' From 6150a57596794c42b25cf50e72d1cc5c0f3ea33d Mon Sep 17 00:00:00 2001 From: Weblate Date: Sun, 30 Mar 2025 07:17:20 +0000 Subject: [PATCH 18/70] Multiple Translations updated by Weblate ignore-downstream Co-authored-by: Maxime Surrel Co-authored-by: Moxitech Co-authored-by: Weblate Co-authored-by: Xing Wang Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/fr/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/ru/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/zh_CN/ Translation: Servarr/Lidarr --- src/NzbDrone.Core/Localization/Core/fr.json | 4 +++- src/NzbDrone.Core/Localization/Core/ru.json | 7 +++++-- src/NzbDrone.Core/Localization/Core/zh_CN.json | 6 ++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/NzbDrone.Core/Localization/Core/fr.json b/src/NzbDrone.Core/Localization/Core/fr.json index 7b10d98b2..ab01fa5e8 100644 --- a/src/NzbDrone.Core/Localization/Core/fr.json +++ b/src/NzbDrone.Core/Localization/Core/fr.json @@ -1350,5 +1350,7 @@ "PendingDownloadClientUnavailable": "En attente – Le client de téléchargement n'est pas disponible", "UnableToImportAutomatically": "Impossible d'importer automatiquement", "WaitingToImport": "En attente d'import", - "WaitingToProcess": "En attente de traitement" + "WaitingToProcess": "En attente de traitement", + "DefaultDelayProfileArtist": "Il s'agit du profil par défaut. Il s'applique à tous les artistes qui n'ont pas de profil explicite.", + "DelayProfileArtistTagsHelpText": "S'applique aux artistes avec au moins une balise correspondante" } diff --git a/src/NzbDrone.Core/Localization/Core/ru.json b/src/NzbDrone.Core/Localization/Core/ru.json index ae809669b..7b1bed1fc 100644 --- a/src/NzbDrone.Core/Localization/Core/ru.json +++ b/src/NzbDrone.Core/Localization/Core/ru.json @@ -834,7 +834,7 @@ "Absolute": "Абсолютный", "RecycleBinUnableToWriteHealthCheck": "Не удается выполнить запись в настроенную папку корзины: {path}. Убедитесь, что этот путь существует и доступен для записи пользователем, запускающим {appName}", "AddListExclusionHelpText": "Запретить добавление серий в {appName} по спискам", - "AddNewArtistRootFolderHelpText": "Подпапка \"{0}\" будет создана автоматически", + "AddNewArtistRootFolderHelpText": "Подпапка \"{folder}\" будет создана автоматически", "AuthenticationRequiredHelpText": "Отредактируйте, для каких запросов требуется авторизация. Не изменяйте, если не понимаете риски.", "DeleteArtistFolderCountConfirmation": "Вы уверены, что хотите удалить {count} выбранных индексатора?", "RenameFiles": "Переименовать файлы", @@ -1108,5 +1108,8 @@ "Pending": "В ожидании", "PendingDownloadClientUnavailable": "Ожидание – Клиент для загрузки недоступен", "SkipFreeSpaceCheckHelpText": "Используете, когда {appName} не может верно определить свободное место в вашей корневой папке", - "ManageFormats": "Управлять форматами" + "ManageFormats": "Управлять форматами", + "AddArtistWithName": "Добавить {artistName}", + "AddNewAlbum": "Добавить новый альбом", + "AddMetadataProfile": "Добавить мета-данные профиля" } diff --git a/src/NzbDrone.Core/Localization/Core/zh_CN.json b/src/NzbDrone.Core/Localization/Core/zh_CN.json index 09dbca921..93e286e22 100644 --- a/src/NzbDrone.Core/Localization/Core/zh_CN.json +++ b/src/NzbDrone.Core/Localization/Core/zh_CN.json @@ -1337,7 +1337,7 @@ "DownloadClientSettingsRecentPriority": "最近优先", "PostImportCategory": "导入后分类", "NotificationsSettingsWebhookHeaders": "标头", - "DefaultDelayProfileArtist": "This is the default profile. It applies to all artists that don't have an explicit profile.", + "DefaultDelayProfileArtist": "这是默认的配置。此配置用于所有的没有配置的艺术家", "CheckDownloadClientForDetails": "查看下载客户端了解更多详细信息", "DownloadWarning": "下载警告:{warningMessage}", "UnableToImportAutomatically": "无法自动导入", @@ -1347,5 +1347,7 @@ "Pending": "挂起", "PendingDownloadClientUnavailable": "挂起 - 下载客户端不可用", "WaitingToImport": "等待导入", - "WaitingToProcess": "等待处理" + "WaitingToProcess": "等待处理", + "DelayProfileArtistTagsHelpText": "应用到至少有一个标签匹配的艺术家", + "AlbumInfo": "专辑 信息" } From 4677a1115a42c2e6c637e591002c9c83619b75cf Mon Sep 17 00:00:00 2001 From: Bogdan Date: Wed, 2 Apr 2025 00:11:01 +0300 Subject: [PATCH 19/70] Bump linux agent to ubuntu-22.04 --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 9076b6da6..c754fddfd 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -19,7 +19,7 @@ variables: nodeVersion: '20.X' innoVersion: '6.2.0' windowsImage: 'windows-2022' - linuxImage: 'ubuntu-20.04' + linuxImage: 'ubuntu-22.04' macImage: 'macOS-13' trigger: From c83332e58cfd50c95fbb2c26c946628f28f3b4da Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 24 Mar 2025 20:14:55 -0700 Subject: [PATCH 20/70] New: Prevent Remote Path Mapping local folder being set to System folder or '/' (cherry picked from commit 0f904e091702a2ac53771ee3aeb5aafe62688035) --- .../RemotePathMappingController.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Lidarr.Api.V1/RemotePathMappings/RemotePathMappingController.cs b/src/Lidarr.Api.V1/RemotePathMappings/RemotePathMappingController.cs index f0679e27b..33edddff3 100644 --- a/src/Lidarr.Api.V1/RemotePathMappings/RemotePathMappingController.cs +++ b/src/Lidarr.Api.V1/RemotePathMappings/RemotePathMappingController.cs @@ -28,10 +28,13 @@ namespace Lidarr.Api.V1.RemotePathMappings .NotEmpty(); SharedValidator.RuleFor(c => c.LocalPath) - .Cascade(CascadeMode.Stop) - .IsValidPath() - .SetValidator(mappedNetworkDriveValidator) - .SetValidator(pathExistsValidator); + .Cascade(CascadeMode.Stop) + .IsValidPath() + .SetValidator(mappedNetworkDriveValidator) + .SetValidator(pathExistsValidator) + .SetValidator(new SystemFolderValidator()) + .NotEqual("/") + .WithMessage("Cannot be set to '/'"); } public override RemotePathMappingResource GetResourceById(int id) @@ -41,7 +44,7 @@ namespace Lidarr.Api.V1.RemotePathMappings [RestPostById] [Consumes("application/json")] - public ActionResult CreateMapping(RemotePathMappingResource resource) + public ActionResult CreateMapping([FromBody] RemotePathMappingResource resource) { var model = resource.ToModel(); @@ -62,7 +65,7 @@ namespace Lidarr.Api.V1.RemotePathMappings } [RestPutById] - public ActionResult UpdateMapping(RemotePathMappingResource resource) + public ActionResult UpdateMapping([FromBody] RemotePathMappingResource resource) { var mapping = resource.ToModel(); From 89b9352fef7ea6a5f70c9010bddef800301efa19 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 24 Mar 2025 20:07:15 -0700 Subject: [PATCH 21/70] Fixed: Set output encoding to UTF-8 when running external processes (cherry picked from commit f8e57b09856278a6d0c65f18704e96a33459687d) --- src/NzbDrone.Common/Processes/ProcessProvider.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Common/Processes/ProcessProvider.cs b/src/NzbDrone.Common/Processes/ProcessProvider.cs index 3c86a06b1..bee099319 100644 --- a/src/NzbDrone.Common/Processes/ProcessProvider.cs +++ b/src/NzbDrone.Common/Processes/ProcessProvider.cs @@ -6,6 +6,7 @@ using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; +using System.Text; using NLog; using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.Model; @@ -117,7 +118,9 @@ namespace NzbDrone.Common.Processes UseShellExecute = false, RedirectStandardError = true, RedirectStandardOutput = true, - RedirectStandardInput = true + RedirectStandardInput = true, + StandardOutputEncoding = Encoding.UTF8, + StandardErrorEncoding = Encoding.UTF8 }; if (environmentVariables != null) From 9ba71ae6b1fec6698d7b6476768952b131b66637 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 31 Mar 2025 19:26:14 -0700 Subject: [PATCH 22/70] Update WikiUrl type in API docs (cherry picked from commit 9bd619ccfe074abe396bbf043a36a5be18a7ba4b) --- src/Lidarr.Api.V1/Health/HealthResource.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Lidarr.Api.V1/Health/HealthResource.cs b/src/Lidarr.Api.V1/Health/HealthResource.cs index 9de525009..b059198db 100644 --- a/src/Lidarr.Api.V1/Health/HealthResource.cs +++ b/src/Lidarr.Api.V1/Health/HealthResource.cs @@ -1,7 +1,6 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using Lidarr.Http.REST; -using NzbDrone.Common.Http; using NzbDrone.Core.HealthCheck; namespace Lidarr.Api.V1.Health @@ -11,7 +10,7 @@ namespace Lidarr.Api.V1.Health public string Source { get; set; } public HealthCheckResult Type { get; set; } public string Message { get; set; } - public HttpUri WikiUrl { get; set; } + public string WikiUrl { get; set; } } public static class HealthResourceMapper @@ -29,7 +28,7 @@ namespace Lidarr.Api.V1.Health Source = model.Source.Name, Type = model.Type, Message = model.Message, - WikiUrl = model.WikiUrl + WikiUrl = model.WikiUrl.FullUri }; } From 1045684935bb22085d3a06f7c3a23ee253d4f849 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 8 Apr 2025 15:28:37 +0300 Subject: [PATCH 23/70] Bump Selenium.WebDriver.ChromeDriver --- src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj b/src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj index ada550253..8204721f3 100644 --- a/src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj +++ b/src/NzbDrone.Automation.Test/Lidarr.Automation.Test.csproj @@ -4,7 +4,7 @@ - + From e4a36ca388e38d670bf865e5c3c59eb0d1bd57ac Mon Sep 17 00:00:00 2001 From: Bogdan Date: Mon, 7 Apr 2025 15:55:38 +0300 Subject: [PATCH 24/70] Log delete statements only once --- src/NzbDrone.Core/Datastore/BasicRepository.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/Datastore/BasicRepository.cs b/src/NzbDrone.Core/Datastore/BasicRepository.cs index 75cc9510b..d39858f2f 100644 --- a/src/NzbDrone.Core/Datastore/BasicRepository.cs +++ b/src/NzbDrone.Core/Datastore/BasicRepository.cs @@ -252,7 +252,7 @@ namespace NzbDrone.Core.Datastore protected void Delete(SqlBuilder builder) { - var sql = builder.AddDeleteTemplate(typeof(TModel)).LogQuery(); + var sql = builder.AddDeleteTemplate(typeof(TModel)); using (var conn = _database.OpenConnection()) { From 556f0ea54bb31227cc82253aad219f35e8a65e96 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Mon, 7 Apr 2025 15:54:06 +0300 Subject: [PATCH 25/70] Fixed: Disallow tags creation with empty label --- src/Lidarr.Api.V1/Tags/TagController.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Lidarr.Api.V1/Tags/TagController.cs b/src/Lidarr.Api.V1/Tags/TagController.cs index a0e76335e..14f1aef64 100644 --- a/src/Lidarr.Api.V1/Tags/TagController.cs +++ b/src/Lidarr.Api.V1/Tags/TagController.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using FluentValidation; using Lidarr.Http; using Lidarr.Http.REST; using Lidarr.Http.REST.Attributes; @@ -23,6 +24,8 @@ namespace Lidarr.Api.V1.Tags : base(signalRBroadcaster) { _tagService = tagService; + + SharedValidator.RuleFor(c => c.Label).NotEmpty(); } public override TagResource GetResourceById(int id) From d21ad2ad68b9e24c5b50270cdbcd06f8f8bdbf01 Mon Sep 17 00:00:00 2001 From: Servarr Date: Tue, 8 Apr 2025 12:38:22 +0000 Subject: [PATCH 26/70] Automated API Docs update --- src/Lidarr.Api.V1/openapi.json | 45 ++-------------------------------- 1 file changed, 2 insertions(+), 43 deletions(-) diff --git a/src/Lidarr.Api.V1/openapi.json b/src/Lidarr.Api.V1/openapi.json index 8849354f6..4c0462717 100644 --- a/src/Lidarr.Api.V1/openapi.json +++ b/src/Lidarr.Api.V1/openapi.json @@ -9808,7 +9808,8 @@ "nullable": true }, "wikiUrl": { - "$ref": "#/components/schemas/HttpUri" + "type": "string", + "nullable": true } }, "additionalProperties": false @@ -10062,48 +10063,6 @@ }, "additionalProperties": false }, - "HttpUri": { - "type": "object", - "properties": { - "fullUri": { - "type": "string", - "nullable": true, - "readOnly": true - }, - "scheme": { - "type": "string", - "nullable": true, - "readOnly": true - }, - "host": { - "type": "string", - "nullable": true, - "readOnly": true - }, - "port": { - "type": "integer", - "format": "int32", - "nullable": true, - "readOnly": true - }, - "path": { - "type": "string", - "nullable": true, - "readOnly": true - }, - "query": { - "type": "string", - "nullable": true, - "readOnly": true - }, - "fragment": { - "type": "string", - "nullable": true, - "readOnly": true - } - }, - "additionalProperties": false - }, "ImportListBulkResource": { "type": "object", "properties": { From d9562c701e069650130ab8e307269cdc411f3986 Mon Sep 17 00:00:00 2001 From: Weblate Date: Tue, 8 Apr 2025 12:32:18 +0000 Subject: [PATCH 27/70] Multiple Translations updated by Weblate ignore-downstream Co-authored-by: Hugoren Martinako Co-authored-by: Ste Co-authored-by: Weblate Co-authored-by: Weblate Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/ca/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/fr/ Translate-URL: https://translate.servarr.com/projects/servarr/lidarr/uk/ Translation: Servarr/Lidarr --- src/NzbDrone.Core/Localization/Core/ca.json | 279 ++++++++++++++++++-- src/NzbDrone.Core/Localization/Core/fr.json | 13 +- src/NzbDrone.Core/Localization/Core/uk.json | 24 +- 3 files changed, 290 insertions(+), 26 deletions(-) diff --git a/src/NzbDrone.Core/Localization/Core/ca.json b/src/NzbDrone.Core/Localization/Core/ca.json index f090fc042..97ac789ac 100644 --- a/src/NzbDrone.Core/Localization/Core/ca.json +++ b/src/NzbDrone.Core/Localization/Core/ca.json @@ -15,7 +15,7 @@ "BindAddress": "Adreça d'enllaç", "DeleteQualityProfileMessageText": "Esteu segur que voleu suprimir el perfil de qualitat '{name}'?", "DeleteReleaseProfile": "Suprimeix el perfil de llançament", - "DeleteReleaseProfileMessageText": "Esteu segur que voleu suprimir aquest perfil de retard?", + "DeleteReleaseProfileMessageText": "Esteu segur que voleu suprimir aquest perfil de llançament?", "DownloadClients": "Descàrrega Clients", "EnableColorImpairedMode": "Activa el mode amb alteracions del color", "EnableHelpText": "Activa la creació de fitxers de metadades per a aquest tipus de metadades", @@ -82,7 +82,7 @@ "TorrentDelayHelpText": "Retard en minuts per a esperar abans de capturar un torrent", "Torrents": "Torrents", "UnableToLoadGeneralSettings": "No es pot carregar la configuració general", - "UnableToLoadHistory": "No es pot carregar l'historial", + "UnableToLoadHistory": "No es pot carregar l'historial.", "UnableToLoadImportListExclusions": "No es poden carregar les exclusions de la llista", "UnableToLoadIndexerOptions": "No es poden carregar les opcions de l'indexador", "RemoveCompleted": "S'ha eliminat", @@ -134,7 +134,7 @@ "MoreInfo": "Més informació", "NoBackupsAreAvailable": "No hi ha còpies de seguretat disponibles", "NETCore": ".NET", - "NoHistory": "Sense història", + "NoHistory": "Sense historial.", "NoLeaveIt": "No, deixa-ho", "NotificationTriggers": "Activadors de notificacions", "NoUpdatesAreAvailable": "No hi ha actualitzacions disponibles", @@ -243,7 +243,7 @@ "ChownGroupHelpText": "Nom del grup o gid. Utilitzeu gid per a sistemes de fitxers remots.", "ChownGroupHelpTextWarning": "Això només funciona si l'usuari que executa {appName} és el propietari del fitxer. És millor assegurar-se que el client de descàrrega utilitza el mateix grup que {appName}.", "ConnectSettings": "Configuració de connexió", - "CopyUsingHardlinksHelpText": "Utilitzeu els enllaços durs quan intenteu copiar fitxers de torrents que encara s'estan sembrant", + "CopyUsingHardlinksHelpText": "Els enllaços durs permeten que {appName} importi torrents de sembra a la carpeta de l'artista sense prendre espai extra al disc o copiar tot el contingut del fitxer. Els enllaços durs només funcionaran si l'origen i la destinació estan en el mateix volum", "CopyUsingHardlinksHelpTextWarning": "De tant en tant, els bloquejos de fitxers poden impedir reanomenar els fitxers que s'estan sembrant. Podeu desactivar temporalment la compartició i utilitzar la funció de reanomenar de {appName} com a solució.", "CreateEmptyArtistFolders": "Creeu carpetes buides per a les pel·lícules", "CreateEmptyArtistFoldersHelpText": "Creeu carpetes de pel·lícules que falten durant l'exploració del disc", @@ -252,7 +252,7 @@ "CutoffUnmet": "Tall no assolit", "Dates": "Dates", "DatabaseMigration": "Migració de BD", - "DelayingDownloadUntil": "S'està retardant la baixada fins a les {0} a les {1}", + "DelayingDownloadUntil": "S'està retardant la baixada fins a les {date} a les {time}", "DelayProfile": "Perfil de retard", "DelayProfiles": "Perfils de retard", "Delete": "Suprimeix", @@ -311,7 +311,7 @@ "IllRestartLater": "Reinicia més tard", "ImportExtraFiles": "Importa fitxers addicionals", "ImportExtraFilesHelpText": "Importeu fitxers addicionals coincidents (subtítols, nfo, etc.) després d'importar un fitxer de pel·lícula", - "ImportFailedInterp": "ImportFailedInterp", + "ImportFailedInterp": "Importació fallida: {0}", "Importing": "S'està important", "IncludeUnmonitored": "Inclou no monitorat", "Indexer": "Indexador", @@ -323,7 +323,7 @@ "LogFiles": "Fitxers de registre", "LogLevel": "Nivell de registre", "MaximumSize": "Mida màxima", - "MaximumSizeHelpText": "Mida màxima per a una versió que es pot capturar en MB. Establiu a zero per establir-lo en il·limitat", + "MaximumSizeHelpText": "Mida màxima per a una versió que es pot capturar en MB. Establiu a zero per establir-lo en il·limitat.", "Mechanism": "Mecanisme", "MediaInfo": "Informació de mitjans", "MediaManagementSettings": "Configuració de gestió de mitjans", @@ -462,7 +462,7 @@ "Progress": "Progrés", "SizeLimit": "Límit de mida", "Backup": "Còpia de seguretat", - "IndexerTagHelpText": "Utilitzeu aquest indexador només per a pel·lícules amb almenys una etiqueta coincident. Deixeu-ho en blanc per utilitzar-ho amb totes les pel·lícules.", + "IndexerTagHelpText": "Només utilitza aquest indexador per a pel·lícules que coincideixin amb almenys una etiqueta. Deixar en blanc per a utilitzar-ho amb totes les pel·lícules.", "Info": "Informació", "InstanceName": "Nom de la instància", "InteractiveImport": "Importació interactiva", @@ -593,7 +593,7 @@ "CouldntFindAnyResultsForTerm": "No s'ha pogut trobar cap resultat per a '{0}'", "DeleteCustomFormat": "Suprimeix el format personalitzat", "DeleteCustomFormatMessageText": "Esteu segur que voleu suprimir l'indexador '{0}'?", - "DeleteFormatMessageText": "Esteu segur que voleu suprimir l'etiqueta de format {0} ?", + "DeleteFormatMessageText": "Esteu segur que voleu suprimir l'etiqueta de format '{name}'?", "DownloadPropersAndRepacksHelpTextWarning": "Utilitzeu formats personalitzats per a actualitzacions automàtiques a Propers/Repacks", "DownloadedUnableToImportCheckLogsForDetails": "Baixat: no es pot importar: comproveu els registres per obtenir-ne més detalls", "ExportCustomFormat": "Exporta el format personalitzat", @@ -601,7 +601,7 @@ "FailedLoadingSearchResults": "No s'han pogut carregar els resultats de la cerca, torneu-ho a provar.", "Formats": "Formats", "IncludeCustomFormatWhenRenamingHelpText": "Inclou en {Custom Formats} el format de canvi de nom", - "ItsEasyToAddANewArtistJustStartTypingTheNameOfTheArtistYouWantToAdd": "És fàcil afegir una pel·lícula nova, només cal que comenceu a escriure el nom de la pel·lícula que voleu afegir", + "ItsEasyToAddANewArtistJustStartTypingTheNameOfTheArtistYouWantToAdd": "És fàcil afegir una pel·lícula nova, només cal que comenceu a escriure el nom de la pel·lícula que voleu afegir.", "MinFormatScoreHelpText": "La puntuació mínima de format personalitzada per a la baixada", "Monitor": "Monitora", "NegateHelpText": "Si està marcat, el format personalitzat no s'aplicarà si la condició {0} coincideix.", @@ -614,7 +614,7 @@ "UnableToLoadInteractiveSearch": "No es poden carregar els resultats d'aquesta cerca de pel·lícules. Torna-ho a provar més tard", "TheArtistFolderStrongpathstrongAndAllOfItsContentWillBeDeleted": "La carpeta de pel·lícules '{0}' i tot el seu contingut es suprimiran.", "CustomFormat": "Format personalitzat", - "CustomFormatRequiredHelpText": "La condició {0} ha de coincidir perquè s'apliqui el format personalitzat. En cas contrari, n'hi ha prou amb una única coincidència de {1}.", + "CustomFormatRequiredHelpText": "La condició {0} ha de coincidir perquè s'apliqui el format personalitzat. En cas contrari, n'hi ha prou amb una única coincidència de {0}.", "CustomFormatSettings": "Configuració de formats personalitzats", "CustomFormats": "Formats personalitzats", "Customformat": "Formats personalitzats", @@ -643,13 +643,13 @@ "ProxyCheckBadRequestMessage": "No s'ha pogut provar el servidor intermediari. Codi d'estat: {0}", "ProxyCheckResolveIpMessage": "No s'ha pogut resoldre l'adreça IP de l'amfitrió intermediari configurat {0}", "RemotePathMappingCheckBadDockerPath": "Esteu utilitzant docker; el client de baixada {0} col·loca les baixades a {1}, però el camí {2} no és vàlid. Reviseu els mapes de camins remots i la configuració del client de baixada.", - "RemotePathMappingCheckDownloadPermissions": "{appName} pot veure però no accedir a la pel·lícula baixada {0}. Error de permisos probable.", + "RemotePathMappingCheckDownloadPermissions": "{appName} pot veure però no accedir a la música descarregada {0}. Probablement s'ha produït un error en els permisos.", "RemotePathMappingCheckDockerFolderMissing": "Esteu utilitzant docker; el client de baixada {0} col·loca les baixades a {1}, però sembla que aquest directori no existeix dins del contenidor. Reviseu els mapes de camins remots i la configuració dels volums del contenidor.", "RemotePathMappingCheckFilesBadDockerPath": "Esteu utilitzant docker; el client de baixada{0} ha informat de fitxers a {1}, però el camí {2} no és vàlid. Reviseu els mapes de camins remots i la configuració del client de baixada.", "RemotePathMappingCheckFilesLocalWrongOSPath": "El client de baixada local {0} ha informat de fitxers a {1}, però el camí {2} no és vàlid. Reviseu la configuració del vostre client de baixada.", "RemotePathMappingCheckFilesWrongOSPath": "El client de baixada remota {0} ha informat de fitxers a {1}, però el camí {2} no és vàlid. Reviseu els mapes de camins remots i baixeu la configuració del client.", "RemotePathMappingCheckGenericPermissions": "El client de baixada {0} col·loca les baixades a {1} però {appName} no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.", - "RemotePathMappingCheckImportFailed": "{appName} no ha pogut importar una pel·lícula. Comproveu els vostres registres per a obtenir més informació.", + "RemotePathMappingCheckImportFailed": "{appName} no ha pogut importar música. Comproveu els vostres registres per obtenir-ne més detalls.", "RemotePathMappingCheckLocalWrongOSPath": "El client de baixada local {0} col·loca les baixades a {1}, però el camí {2} no és vàlid. Reviseu la configuració del vostre client de baixada.", "RemotePathMappingCheckRemoteDownloadClient": "El client de baixada remota {0} ha informat de fitxers a {1}, però sembla que aquest directori no existeix. És probable que falti el mapa de camins remots.", "RootFolderCheckMultipleMessage": "Falten diverses carpetes arrel: {0}", @@ -677,8 +677,8 @@ "BlocklistReleases": "Llista de llançaments bloquejats", "BlocklistReleaseHelpText": "Impedeix que {appName} torni a capturar aquesta versió automàticament", "FailedToLoadQueue": "No s'ha pogut carregar la cua", - "DeleteConditionMessageText": "Esteu segur que voleu suprimir la notificació '{0}'?", - "DeleteSelectedDownloadClients": "Suprimeix el client de descàrrega", + "DeleteConditionMessageText": "Esteu segur que voleu suprimir la condició '{name}'?", + "DeleteSelectedDownloadClients": "Suprimeix els clients seleccionats de baixada", "DeleteSelectedIndexers": "Suprimeix l'indexador(s)", "DeleteSelectedIndexersMessageText": "Esteu segur que voleu suprimir {count} indexador(s) seleccionat(s)?", "DownloadClientSortingCheckMessage": "El client de baixada {0} té l'ordenació {1} activada per a la categoria de {appName}. Hauríeu de desactivar l'ordenació al vostre client de descàrrega per evitar problemes d'importació.", @@ -721,7 +721,7 @@ "ImportListRootFolderMissingRootHealthCheckMessage": "Falta la carpeta arrel per a les llistes d'importació: {0}", "ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Falten diverses carpetes arrel per a les llistes d'importació: {0}", "Enabled": "Habilitat", - "AddNewArtistRootFolderHelpText": "La subcarpeta '{0}' es crearà automàticament", + "AddNewArtistRootFolderHelpText": "La subcarpeta '{folder}' es crearà automàticament", "Priority": "Prioritat", "DeleteSpecification": "Esborra especificació", "BypassIfHighestQualityHelpText": "Evita el retard quan la versió té la qualitat activada més alta al perfil de qualitat amb el protocol preferit", @@ -826,15 +826,15 @@ "Unlimited": "Il·limitat", "Artist": "artista", "BypassIfAboveCustomFormatScore": "Ometre si està per sobre de la puntuació de format personalitzada", - "DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "El client de baixada {downloadClientName} està configurat per eliminar les baixades completades. Això pot provocar que les baixades s'eliminin del vostre client abans que {1} pugui importar-les.", + "DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "El client de baixada {0} està configurat per eliminar les baixades completades. Això pot provocar que les baixades s'eliminin del vostre client abans que {1} pugui importar-les.", "EditConnectionImplementation": "Afegeix una connexió - {implementationName}", "Episode": "Episodi", "AddImportListExclusionAlbumHelpText": "Eviteu que els àlbums s'afegeixin a {appName} per llistes", "ImportLists": "llista d'importació", - "ApiKeyValidationHealthCheckMessage": "Actualitzeu la vostra clau de l'API perquè tingui almenys {length} caràcters. Podeu fer-ho mitjançant la configuració o el fitxer de configuració", + "ApiKeyValidationHealthCheckMessage": "Actualitzeu la vostra clau de l'API perquè tingui almenys {0} caràcters. Podeu fer-ho mitjançant la configuració o el fitxer de configuració", "BypassIfAboveCustomFormatScoreHelpText": "Habiliteu l'omissió quan la versió tingui una puntuació superior a la puntuació mínima per al format personalitzat", "Artists": "artista", - "CountDownloadClientsSelected": "{count} client(s) de baixada seleccionat(s)", + "CountDownloadClientsSelected": "{selectedCount} client(s) de baixada seleccionat(s)", "EditReleaseProfile": "Afegeix un perfil de llançament", "ReleaseProfiles": "Perfils de llançament", "ExtraFileExtensionsHelpTextsExamples": "Exemples: '.sub, .nfo' o 'sub,nfo'", @@ -859,7 +859,7 @@ "AutoRedownloadFailedFromInteractiveSearch": "Tornar a baixar baixades fallades des de la cerca interactiva", "AutoRedownloadFailed": "Tornar a baixar les baixades fallades", "StatusEndedContinuing": "Continua", - "DeleteTrackFileMessageText": "Esteu segur que voleu suprimir '{path}'?", + "DeleteTrackFileMessageText": "Esteu segur que voleu suprimir {0}?", "NoCutoffUnmetItems": "No hi ha elements de tall no assolits", "Release": " Llançament", "DeleteEmptyFoldersHelpText": "Suprimeix les carpetes de sèries buides durant l'exploració del disc i quan s'esborren els fitxers de sèries", @@ -914,7 +914,7 @@ "DownloadClientDelugeSettingsDirectoryCompleted": "Directori al qual es mou quan s'hagi completat", "DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Ubicació opcional de les baixades completades, deixeu-lo en blanc per utilitzar la ubicació predeterminada de Deluge", "DownloadClientDelugeSettingsDirectoryHelpText": "Ubicació opcional de les baixades completades, deixeu-lo en blanc per utilitzar la ubicació predeterminada de Deluge", - "GrabReleaseUnknownArtistOrAlbumMessageText": "{appName} no ha pogut determinar per a quina pel·lícula era aquest llançament. És possible que {appName} no pugui importar automàticament aquesta versió. Voleu capturar \"{0}\"?", + "GrabReleaseUnknownArtistOrAlbumMessageText": "{appName} no ha pogut determinar per a quina pel·lícula era aquest llançament. És possible que {appName} no pugui importar automàticament aquesta versió. Voleu capturar '{title}'?", "IndexerFlags": "Indicadors de l'indexador", "MonitorNoAlbums": "Cap", "Rejections": "Rebutjats", @@ -992,5 +992,240 @@ "Paused": "En pausa", "Pending": "Pendents", "WaitingToImport": "S’està esperant per a importar", - "WaitingToProcess": "S’està esperant per a processar" + "WaitingToProcess": "S’està esperant per a processar", + "DefaultMonitorOptionHelpText": "Quins àlbums s'han de controlar en afegir inicialment per als artistes detectats en aquesta carpeta", + "DownloadedImporting": "'Descarregat - Important'", + "ExpandItemsByDefault": "Expandeix els elements per defecte", + "HideAlbums": "Oculta els àlbums", + "PathHelpText": "Carpeta arrel que conté la vostra biblioteca de música", + "AllAlbums": "Tots els àlbums", + "AllowFingerprintingHelpText": "Utilitza l'empremta digital per millorar la precisió de la coincidència de la pista", + "DefaultTagsHelpText": "Etiquetes {appName} per defecte per als artistes detectats en aquesta carpeta", + "ShowNextAlbumHelpText": "Mostra el següent àlbum sota el cartell", + "TheAlbumsFilesWillBeDeleted": "Els fitxers de l'àlbum s'eliminaran.", + "TrackCount": "Comptador de pistes", + "TrackDownloaded": "Pista descarregada", + "TrackFiles": "Fitxers de pista", + "ArtistNameHelpText": "El nom de l'artista/àlbum a excloure (pot ser qualsevol cosa significativa)", + "ContinuingNoAdditionalAlbumsAreExpected": "No s'espera cap àlbum addicional", + "ContinuingMoreAlbumsAreExpected": "S'espera més àlbums", + "AddedArtistSettings": "Configuració d'artista afegida", + "AlbumDetails": "Detalls de l'àlbum", + "AlbumHasNotAired": "L'àlbum no s'ha emès", + "AlbumInfo": "Informació de l'àlbum", + "AlbumIsDownloading": "L'àlbum s'està baixant", + "AlbumIsNotMonitored": "L'àlbum no està monitoritzat", + "AlbumRelease": "Publicació de l'àlbum", + "AlbumReleaseDate": "Data de publicació de l'àlbum", + "AlbumStatus": "Estat de l'àlbum", + "AlbumStudio": "Estudi d'àlbum", + "AlbumStudioTracksDownloaded": "{trackFileCount}/{totalTrackCount} pistes baixades", + "AlbumStudioTruncated": "Només es mostren els últims 20 àlbums, ves als detalls per veure tots els àlbums", + "AlbumType": "Tipus d'àlbum", + "AllAlbumsData": "Controla tots els àlbums excepte els especials", + "AllArtistAlbums": "Tots els àlbums d'artista", + "AllMonitoringOptionHelpText": "Monitora els artistes i tots els àlbums de cada artista inclosos a la llista d'importació", + "AllowFingerprintingHelpTextWarning": "Això requereix que {appName} llegeixi parts del fitxer que alentiran els escanejos i poden causar una activitat de disc o xarxa alta.", + "AnchorTooltip": "Aquest fitxer ja és a la vostra biblioteca per a una versió que esteu important", + "AnyReleaseOkHelpText": "{appName} canviarà automàticament a la versió que coincideixi amb les pistes baixades", + "ArtistClickToChangeAlbum": "Feu clic per canviar l'àlbum", + "ArtistEditor": "Editor d'artistes", + "ArtistFolderFormat": "Format de carpeta d'artista", + "ArtistIsMonitored": "L'artista està monitoritzat", + "ArtistMonitoring": "Seguiment de l'artista", + "ArtistProgressBarText": "{trackFileCount} / {trackCount} (Total: {totalTrackCount}, Baixada: {downloadingCount})", + "ArtistType": "Tipus d'artista", + "ArtistsEditRootFolderHelpText": "Moure artistes a la mateixa carpeta arrel es pot utilitzar per a canviar el nom de les carpetes d'artista perquè coincideixin amb el nom o el format de nom actualitzat", + "AutomaticallySwitchRelease": "Commuta automàticament la versió", + "BackupIntervalHelpText": "Interval per a fer una còpia de seguretat de la base de dades {appName} i de la configuració", + "BannerOptions": "Opcions del bàner", + "ContinuingAllTracksDownloaded": "Continuant (totes les pistes baixades)", + "DashOrSpaceDashDependingOnName": "Traç o guió d'espai depenent del nom", + "DelayProfileArtistTagsHelpText": "Aplica als artistes amb almenys una etiqueta coincident", + "DownloadClientSettingsRecentPriorityAlbumHelpText": "Prioritat a utilitzar en capturar àlbums publicats en els últims 14 dies", + "IsShowingMonitoredMonitorSelected": "Monitor seleccionat", + "LidarrSupportsMultipleListsForImportingAlbumsAndArtistsIntoTheDatabase": "{appName} admet múltiples llistes per importar àlbums i artistes a la base de dades.", + "MediumFormat": "Format mitjà", + "MetadataSettingsArtistSummary": "Crea fitxers de metadades quan s'importin pistes o s'actualitzi l'artista", + "MissingTracks": "Manquen pistes", + "MonitorAlbum": "Àlbum del monitor", + "MonitorArtists": "Monitora els artistes", + "MonitorExistingAlbums": "Àlbums existents", + "MonitorFirstAlbum": "Primer àlbum", + "NoTracksInThisMedium": "No hi ha pistes en aquest suport", + "NotificationsSettingsUpdateMapPathsToHelpText": "{serviceName} camí, utilitzat per modificar els camins de sèrie quan {serviceName} veu la ubicació del camí de la biblioteca diferent de {appName} (requereix 'Biblioteca d'actualització')", + "OneAlbum": "1 àlbum", + "Retag": "Reetiqueta", + "SearchForAllCutoffUnmetAlbums": "Cerca tots els àlbums de Cutoff Unmet", + "SecondaryAlbumTypes": "Tipus d'àlbum secundari", + "SetAppTags": "Estableix {appName} etiquetes", + "ShouldMonitorExisting": "Monitora els àlbums existents", + "ShouldMonitorExistingHelpText": "Monitora automàticament els àlbums d'aquesta llista que ja estan a {appName}", + "ShouldMonitorHelpText": "Monitora els artistes i àlbums afegits d'aquesta llista", + "ShowLastAlbum": "Mostra l'últim àlbum", + "TagAudioFilesWithMetadata": "Etiqueta els fitxers d'àudio amb metadades", + "TrackFileMissingTooltip": "Falta el fitxer de la pista", + "TrackNaming": "Nom de la pista", + "TrackProgress": "Progrés de la pista", + "TrackStatus": "Estat de la pista", + "SpecificMonitoringOptionHelpText": "Monitora els artistes, però només supervisa els àlbums inclosos explícitament a la llista", + "OnAlbumDelete": "En suprimir l'àlbum", + "TrackFileDeletedTooltip": "S'ha suprimit el fitxer de pista", + "TrackFileTagsUpdatedTooltip": "S'han actualitzat les etiquetes dels fitxers de seguiment", + "MonitoringOptionsHelpText": "Quins àlbums s'han de controlar després d'afegir l'artista (ajust d'un sol cop)", + "Proceed": "Procedeix", + "SelectArtist": "Selecciona l'artista", + "AllowArtistChangeClickToChangeArtist": "Feu clic per canviar l'artista", + "FutureAlbums": "Àlbums futurs", + "ArtistName": "Nom de l'artista", + "MonitorNoNewAlbums": "Sense àlbums nous", + "IsExpandedShowTracks": "Mostra les pistes", + "MonitorMissingAlbums": "Manquen àlbums", + "ShowAlbumCount": "Mostra el comptador d'àlbums", + "AreYouSure": "N'estàs segur?", + "Banners": "Bàners", + "NoneMonitoringOptionHelpText": "No monitoris artistes ni àlbums", + "DownloadedWaitingToImport": "'Descarregat - Esperant a importar'", + "EpisodeDoesNotHaveAnAbsoluteEpisodeNumber": "L'episodi no té un número d'episodi absolut", + "NoMediumInformation": "No hi ha informació de suport disponible.", + "MissingTracksArtistNotMonitored": "Manquen pistes (l'artista no està monitoritzat)", + "NotDiscography": "No discografia", + "NotificationsSettingsUpdateMapPathsFromHelpText": "{appName} camí, utilitzat per modificar els camins de sèrie quan {serviceName} veu la ubicació del camí de la biblioteca diferent de {appName} (requereix 'Biblioteca d'actualització')", + "NotificationsTagsArtistHelpText": "Envia només notificacions per a artistes amb almenys una etiqueta coincident", + "Playlist": "Reproducció", + "PrimaryAlbumTypes": "Tipus d'àlbum principal", + "PrimaryTypes": "Tipus primaris", + "TrackArtist": "Artista de la pista", + "TrackImported": "S'ha importat la pista", + "DownloadImported": "Baixada importada", + "ForeignId": "Id estranger", + "Inactive": "Inactiu", + "EditArtist": "Edita l'artista", + "ReleasesHelpText": "Canvia el llançament d'aquest àlbum", + "ShouldSearch": "Cerca elements nous", + "GoToArtistListing": "Ves a la llista d'artistes", + "SelectAlbum": "Selecciona l'àlbum", + "SceneNumberHasntBeenVerifiedYet": "El número d'escena encara no s'ha verificat", + "SelectTracks": "Selecciona les pistes", + "ArtistIsUnmonitored": "L'artista no està monitoritzat", + "DefaultQualityProfileIdHelpText": "Perfil de qualitat predeterminat per als artistes detectats en aquesta carpeta", + "ExistingAlbums": "Àlbums existents", + "GroupInformation": "Informació del grup", + "MatchedToAlbums": "Coincideix amb els àlbums", + "MusicbrainzId": "Id del Musicbrainz", + "ThereWasAnErrorLoadingThisItem": "S'ha produït un error en carregar aquest element", + "SearchBoxPlaceHolder": "p. ex. Trencant Benjamin, lidarr:854a1807-025b-42a8-ba8c-2a39717f1d25", + "ShowNextAlbum": "Mostra l'àlbum següent", + "MediaCount": "Comptador de mitjans", + "MissingAlbums": "Manquen àlbums", + "MissingTracksArtistMonitored": "Pistes que falten (controlat per l'artista)", + "MonitorFutureAlbums": "Àlbums futurs", + "MusicBrainzAlbumID": "ID de l'àlbum del MusicBrainz", + "NextAlbum": "Àlbum següent", + "AlbumTitle": "Títol de l'àlbum", + "AllExpandedExpandAll": "Expandeix-ho tot", + "MonitorNewAlbums": "Àlbums nous", + "LatestAlbum": "Últim àlbum", + "RemoveSelectedItemBlocklistMessageText": "Esteu segur que voleu eliminar els elements seleccionats de la llista de bloqueigs?", + "RenameTracks": "Canvia el nom de les pistes", + "ThereWasAnErrorLoadingThisPage": "S'ha produït un error en carregar aquesta pàgina", + "TrackFileCounttotalTrackCountTracksDownloadedInterp": "{0}/{1} pistes baixades", + "TrackFileRenamedTooltip": "S'ha canviat el nom del fitxer de pista", + "WriteMetadataToAudioFiles": "Escriu les metadades als fitxers d'àudio", + "HasMonitoredAlbumsNoMonitoredAlbumsForThisArtist": "No hi ha àlbums supervisats per a aquest artista", + "SearchAlbum": "Cerca un àlbum", + "ForNewImportsOnly": "Només per a importacions noves", + "CollapseMultipleAlbums": "Redueix diversos àlbums", + "CollapseMultipleAlbumsHelpText": "Redueix diversos àlbums que es publiquen el mateix dia", + "CombineWithExistingFiles": "Combina amb els fitxers existents", + "CountAlbums": "{albumCount} àlbums", + "Deceased": "Defunció", + "DefaultDelayProfileArtist": "Aquest és el perfil per defecte. S'aplica a tots els artistes que no tenen un perfil explícit.", + "DefaultLidarrTags": "Etiquetes {appName} per defecte", + "DefaultMetadataProfileIdHelpText": "Perfil predeterminat de metadades per als artistes detectats en aquesta carpeta", + "DeleteArtist": "Suprimeix l'artista seleccionat", + "DeleteArtistFolder": "Suprimeix la carpeta d'artista", + "DeleteArtistFolderCountWithFilesConfirmation": "Esteu segur que voleu suprimir {count} artistes seleccionats i tots els continguts?", + "DeleteFilesHelpText": "Suprimeix els fitxers de la pista i la carpeta de l'artista", + "DeleteSelectedArtists": "Suprimeix els artistes seleccionats", + "DeleteTrackFile": "Suprimeix el fitxer de pista", + "EditSelectedArtists": "Edita els artistes seleccionats", + "EmbedCoverArtHelpText": "Incrusta l'art de l'àlbum Lidarr en fitxers d'àudio en escriure etiquetes", + "EmbedCoverArtInAudioFiles": "Incrusta la caràtula en fitxers d'àudio", + "EnableAutomaticAddHelpText": "Afegeix un artista/àlbum a {appName} quan es realitzen les sincronitzacions a través de la interfície d'usuari o per {appName}", + "EnabledHelpText": "Marqueu-ho per a habilitar el perfil de la versió", + "EndedAllTracksDownloaded": "Finalitzat (totes les pistes baixades)", + "ExistingAlbumsData": "Monitora els àlbums que tenen fitxers o encara no s'han publicat", + "ExpandBroadcastByDefaultHelpText": "Transmissió", + "ExpandEPByDefaultHelpText": "Eps", + "ExpandSingleByDefaultHelpText": "Individuals", + "FilterAlbumPlaceholder": "Filtra l'àlbum", + "FilterArtistPlaceholder": "Filtra l'artista", + "FirstAlbum": "Primer àlbum", + "FirstAlbumData": "Controla els primers àlbums. Tots els altres àlbums seran ignorats", + "ForeignIdHelpText": "L'ID del Musicbrainz de l'artista/àlbum a excloure", + "FutureAlbumsData": "Monitora els àlbums que encara no s'han publicat", + "HideTracks": "Oculta les pistes", + "ICalTagsArtistHelpText": "Feed només contindrà artistes amb almenys una etiqueta coincident", + "IfYouDontAddAnImportListExclusionAndTheArtistHasAMetadataProfileOtherThanNoneThenThisAlbumMayBeReaddedDuringTheNextArtistRefresh": "Si no afegiu una exclusió de la llista d'importació i l'artista té un perfil de metadades diferent de 'None'.", + "ImportCompleteFailed": "Ha fallat la importació", + "ImportListTagsHelpText": "Etiquetes que s'afegiran a la importació des d'aquesta llista", + "IndexerIdHelpText": "Especifiqueu a quin indexador s'aplica el perfil", + "IsExpandedHideAlbums": "Oculta els àlbums", + "IsExpandedHideTracks": "Oculta les pistes", + "IsExpandedShowAlbums": "Mostra els àlbums", + "IsInUseCantDeleteAMetadataProfileThatIsAttachedToAnArtistOrImportList": "No es pot suprimir un perfil de metadades que està adjuntat a un artista o a una llista d'importació", + "IsInUseCantDeleteAQualityProfileThatIsAttachedToAnArtistOrImportList": "No es pot suprimir un perfil de qualitat que estigui adjuntat a un artista o a una llista d'importació", + "IsShowingMonitoredUnmonitorSelected": "Unmonitor seleccionat", + "LastAlbum": "Últim àlbum", + "LatestAlbumData": "Monitoritza els últims àlbums i futurs àlbums", + "ManageTracks": "Gestiona les pistes", + "MatchedToArtist": "Coincideix amb l'artista", + "MassAlbumsCutoffUnmetWarning": "Esteu segur que voleu cercar tots els ‘{0}’ àlbums sense límits satisfets?", + "MissingAlbumsData": "Monitora els àlbums que no tenen fitxers o que encara no s'han publicat", + "MonitorAlbumExistingOnlyWarning": "Aquest és un ajust ajustat de la configuració monitoritzada per a cada àlbum. Utilitzeu l'opció Artist/Edit per controlar què passa amb els àlbums nous", + "MonitorAllAlbums": "Tots els àlbums", + "MonitorArtist": "Monitora l’artista", + "MonitorLastestAlbum": "Últim àlbum", + "MonitorNewItems": "Monitora els àlbums nous", + "MonitorNewItemsHelpText": "Quins àlbums nous s'han de controlar", + "MonitoredHelpText": "Baixa els àlbums monitoritzats d'aquest artista", + "MultiDiscTrackFormat": "Format de pista multidisc", + "MusicBrainzArtistID": "ID de l'artista del MusicBrainz", + "NoneData": "No es controlarà cap àlbum", + "OnArtistAdd": "En afegir l'artista", + "Retagged": "Reetiquetat", + "RecycleBinUnableToWriteHealthCheck": "No s'ha pogut escriure a la carpeta de contenidors de reciclatge configurada: {0}. Assegureu-vos que aquest camí existeix i que l'usuari que executa {appName} pot escriure", + "RefreshArtist": "Actualitza l'artista", + "ReleaseProfileTagArtistHelpText": "Els perfils de llançament s'aplicaran als artistes amb almenys una etiqueta coincident. Deixa en blanc per aplicar a tots els artistes", + "ReplaceExistingFiles": "Substitueix els fitxers existents", + "RetagSelectedArtists": "Reetiqueta els artistes seleccionats", + "SearchForAllCutoffUnmetAlbumsConfirmationCount": "Esteu segur que voleu cercar tots els {totalRecords} àlbums tallats Unmet?", + "SearchForAllMissingAlbums": "Cerca tots els àlbums que falten", + "SearchForAllMissingAlbumsConfirmationCount": "Esteu segur que voleu cercar tots els {totalRecords} àlbums que manquen?", + "SearchForMonitoredAlbums": "Cerca àlbums monitoritzats", + "SecondaryTypes": "Tipus secundaris", + "SelectAlbumRelease": "Selecciona la publicació de l'àlbum", + "SelectedCountArtistsSelectedInterp": "{selectedCount} Artistes seleccionats", + "ShowTitleHelpText": "Mostra el nom de l'artista sota el cartell", + "SkipRedownloadHelpText": "Evita que {appName} intenti baixar versions alternatives per als elements eliminats", + "SpecificAlbum": "Àlbum específic", + "TotalTrackCountTracksTotalTrackFileCountTracksWithFilesInterp": "{0} pistes totals. {1} pistes amb fitxers.", + "TrackFilesCountMessage": "No hi ha fitxers de pista", + "TrackFilesLoadError": "No s'han pogut carregar els fitxers de pista", + "TrackMissingFromDisk": "Falta la pista del disc", + "TracksLoadError": "No s'han pogut carregar les pistes", + "WriteAudioTagsHelpTextWarning": "En seleccionar ‘Tots els fitxers’ s'alteraran els fitxers existents quan s'importin.", + "DeleteArtistFolders": "Suprimeix les carpetes d'artista", + "DownloadClientSettingsOlderPriorityAlbumHelpText": "Prioritat a utilitzar en capturar àlbums publicats fa més de 14 dies", + "EditMetadata": "Edita les metadades", + "NewAlbums": "Àlbums nous", + "NoAlbums": "Sense àlbums", + "NoMissingItems": "No falten elements", + "OnArtistDelete": "En suprimir l'artista", + "OnTrackRetag": "En reetiquetar la pista", + "RootFolderPathHelpText": "Els elements de la llista de carpetes arrel s'afegiran a", + "ScrubAudioTagsHelpText": "Elimina les etiquetes existents dels fitxers, deixant només les afegides per {appName}.", + "ScrubExistingTags": "Neteja les etiquetes existents", + "Disambiguation": "Desambiguació" } diff --git a/src/NzbDrone.Core/Localization/Core/fr.json b/src/NzbDrone.Core/Localization/Core/fr.json index ab01fa5e8..6dbaaf986 100644 --- a/src/NzbDrone.Core/Localization/Core/fr.json +++ b/src/NzbDrone.Core/Localization/Core/fr.json @@ -690,7 +690,7 @@ "ResetDefinitions": "Réinitialiser les définitions", "ResetTitles": "Réinitialiser les titres", "HiddenClickToShow": "Masqué, cliquez pour afficher", - "RemotePathMappingCheckDownloadPermissions": "{appName} peut voir mais ne peut accéder au film téléchargé {0}. Il s'agit probablement d'une erreur de permissions.", + "RemotePathMappingCheckDownloadPermissions": "{appName} peut voir mais ne peut accéder au musique téléchargé {0}. Il s'agit probablement d'une erreur de permissions.", "RemotePathMappingCheckDockerFolderMissing": "Vous utilisez docker ; {0} enregistre les téléchargements dans {1} mais ce dossier n'est pas présent dans ce conteneur. Vérifiez vos paramètres de dossier distant et les paramètres de votre conteneur docker.", "ShownClickToHide": "Affiché, cliquez pour masquer", "ApiKeyValidationHealthCheckMessage": "Veuillez mettre à jour votre clé API pour qu'elle contienne au moins {0} caractères. Vous pouvez le faire via les paramètres ou le fichier de configuration", @@ -729,7 +729,7 @@ "RemotePathMappingCheckFilesWrongOSPath": "Le client de téléchargement distant {0} met les téléchargements dans {1} mais il ne s'agit pas d'un chemin {2} valide. Vérifiez les paramètres de votre client de téléchargement.", "RemotePathMappingCheckFolderPermissions": "{appName} peut voir mais pas accéder au répertoire de téléchargement {0}. Erreur d'autorisations probable.", "RemotePathMappingCheckGenericPermissions": "Le client de téléchargement {0} met les téléchargements dans {1} mais {appName} ne peut voir ce répertoire. Il est possible que vous ayez besoin d'ajuster les permissions de ce dossier.", - "RemotePathMappingCheckImportFailed": "{appName} a échoué en important un Film. Vérifier vos logs pour plus de détails.", + "RemotePathMappingCheckImportFailed": "{appName} a échoué en important une musique. Vérifier vos logs pour plus de détails.", "RemotePathMappingCheckLocalFolderMissing": "Le client de téléchargement distant {0} met les téléchargements dans {1} mais ce chemin ne semble pas exister. Vérifiez vos paramètres de chemins distants.", "RemotePathMappingCheckLocalWrongOSPath": "Le client de téléchargement {0} met les téléchargements dans {1} mais il ne s'agit pas d'un chemin {2} valide. Vérifiez les paramètres de votre client de téléchargement.", "RemotePathMappingCheckRemoteDownloadClient": "Le client de téléchargement distant {0} met les téléchargements dans {1} mais ce chemin ne semble pas exister. Vérifiez vos paramètres de chemins distants.", @@ -1352,5 +1352,12 @@ "WaitingToImport": "En attente d'import", "WaitingToProcess": "En attente de traitement", "DefaultDelayProfileArtist": "Il s'agit du profil par défaut. Il s'applique à tous les artistes qui n'ont pas de profil explicite.", - "DelayProfileArtistTagsHelpText": "S'applique aux artistes avec au moins une balise correspondante" + "DelayProfileArtistTagsHelpText": "S'applique aux artistes avec au moins une balise correspondante", + "ICalTagsArtistHelpText": "Le flux ne contiendra que des artistes ayant au moins un tag correspondant", + "NoMediumInformation": "Aucune information sur le support n'est disponible.", + "DownloadClientSettingsOlderPriorityAlbumHelpText": "Priorité à utiliser lors de la récupération des albums sortis il y a plus de 14 jours", + "DownloadClientSettingsRecentPriorityAlbumHelpText": "Priorité à utiliser lors de la récupération des albums sortis au cours des 14 derniers jours", + "NotificationsTagsArtistHelpText": "Envoyer des notifications uniquement pour les artistes ayant au moins un tag correspondant", + "ReleaseProfileTagArtistHelpText": "Les profils de sortie s'appliqueront aux artistes ayant au moins un tag correspondant. Laisser vide pour appliquer à tous les artistes", + "TracksLoadError": "Impossible de charger les pistes" } diff --git a/src/NzbDrone.Core/Localization/Core/uk.json b/src/NzbDrone.Core/Localization/Core/uk.json index 7b1d2a391..cfd4334cb 100644 --- a/src/NzbDrone.Core/Localization/Core/uk.json +++ b/src/NzbDrone.Core/Localization/Core/uk.json @@ -923,5 +923,27 @@ "Pending": "В очікуванні", "WaitingToImport": "Очікування імпорту", "WaitingToProcess": "Очікування обробки", - "CheckDownloadClientForDetails": "перевірте клієнт завантаження, щоб дізнатися більше" + "CheckDownloadClientForDetails": "перевірте клієнт завантаження, щоб дізнатися більше", + "DashOrSpaceDashDependingOnName": "Тире або пробіл залежно від імені", + "EpisodeDoesNotHaveAnAbsoluteEpisodeNumber": "Епізод не має абсолютного номера епізоду", + "ExpandOtherByDefaultHelpText": "Інше", + "ImportListTagsHelpText": "Теги, які будуть додані при імпорті з цього списку", + "IndexerIdHelpText": "Вкажіть, до якого індексатору застосовується профіль", + "IsShowingMonitoredUnmonitorSelected": "Не відстежувати вибрані", + "RemoveSelectedItemBlocklistMessageText": "Ви впевнені, що хочете видалити вибрані елементи з чорного списку?", + "RootFolderPathHelpText": "Елементи списку кореневих тек будуть додані в", + "ThereWasAnErrorLoadingThisItem": "Сталася помилка при завантаженні цього елемента", + "ThereWasAnErrorLoadingThisPage": "Сталася помилка під час завантаження цієї сторінки", + "AllExpandedExpandAll": "Розгорнути все", + "NoMissingItems": "Немає відсутніх елементів", + "TBA": "Будь ласка, перевірте пізніше", + "IsShowingMonitoredMonitorSelected": "Відстеження вибрано", + "SceneNumberHasntBeenVerifiedYet": "Номер сцени ще не перевірено", + "EnabledHelpText": "Установіть прапорець, щоб увімкнути профіль релізу", + "Loading": "Завантаження", + "NoCutoffUnmetItems": "Не має елементів що не досягли порогу", + "NotificationsEmbySettingsUpdateLibraryHelpText": "Оновити бібліотеку при імпорті, перейменуванні або видаленні", + "NotificationsSettingsUpdateMapPathsFromHelpText": "Шлях {appName}, який використовується для зміни шляхів до серіалів, коли {serviceName} бачить шлях до бібліотеки інакше, ніж {appName} (необхідно 'Оновити бібліотеку')", + "NotificationsSettingsUpdateMapPathsToHelpText": "Шлях {serviceName}, що використовується для зміни шляхів до серіалів, коли {serviceName} бачить шлях до бібліотеки інакше, ніж {appName} (потрібно 'Оновити бібліотеку')", + "Select...": "Вибрати..." } From fbfd24e226ebe1c1aaca2f4d1a3d907784203e10 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 13 Apr 2025 10:08:22 +0300 Subject: [PATCH 28/70] Bump version to 2.11.2 --- azure-pipelines.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c754fddfd..aebacf592 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -9,7 +9,7 @@ variables: testsFolder: './_tests' yarnCacheFolder: $(Pipeline.Workspace)/.yarn nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages - majorVersion: '2.11.1' + majorVersion: '2.11.2' minorVersion: $[counter('minorVersion', 1076)] lidarrVersion: '$(majorVersion).$(minorVersion)' buildName: '$(Build.SourceBranchName).$(lidarrVersion)' From d8850af0193846df6de6ec38d67bfabffe58e86b Mon Sep 17 00:00:00 2001 From: Bogdan Date: Thu, 17 Apr 2025 12:32:11 +0300 Subject: [PATCH 29/70] Increase input sizes in edit artist modal Closes #5294 --- .../src/Artist/Edit/EditArtistModalContent.js | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/frontend/src/Artist/Edit/EditArtistModalContent.js b/frontend/src/Artist/Edit/EditArtistModalContent.js index 82a390d84..bca6e3ea6 100644 --- a/frontend/src/Artist/Edit/EditArtistModalContent.js +++ b/frontend/src/Artist/Edit/EditArtistModalContent.js @@ -15,7 +15,7 @@ import ModalContent from 'Components/Modal/ModalContent'; import ModalFooter from 'Components/Modal/ModalFooter'; import ModalHeader from 'Components/Modal/ModalHeader'; import Popover from 'Components/Tooltip/Popover'; -import { icons, inputTypes, kinds, tooltipPositions } from 'Helpers/Props'; +import { icons, inputTypes, kinds, sizes, tooltipPositions } from 'Helpers/Props'; import translate from 'Utilities/String/translate'; import styles from './EditArtistModalContent.css'; @@ -93,7 +93,7 @@ class EditArtistModalContent extends Component {
- + {translate('Monitored')} @@ -107,9 +107,10 @@ class EditArtistModalContent extends Component { /> - + {translate('MonitorNewItems')} + - + {translate('QualityProfile')} @@ -146,10 +147,10 @@ class EditArtistModalContent extends Component { { - showMetadataProfile && - + showMetadataProfile ? + - Metadata Profile + {translate('MetadataProfile')} - + : + null } - + {translate('Path')} @@ -189,7 +191,7 @@ class EditArtistModalContent extends Component { /> - + {translate('Tags')} @@ -209,7 +211,7 @@ class EditArtistModalContent extends Component { kind={kinds.DANGER} onPress={onDeleteArtistPress} > - Delete + {translate('Delete')}