From f286f99bb66cb42aa4b2e6cbd25d27bed984f70e Mon Sep 17 00:00:00 2001 From: nitsua Date: Sat, 5 Sep 2020 14:46:39 -0400 Subject: [PATCH] Translation update, updating inline div tags and placeHolder attributes --- frontend/src/Activity/Blacklist/Blacklist.js | 6 +- frontend/src/Activity/History/History.js | 4 +- .../src/AddMovie/AddNewMovie/AddNewMovie.js | 18 +++-- .../ImportMovie/Import/ImportMovie.js | 4 +- .../SelectFolder/ImportMovieSelectFolder.js | 4 +- frontend/src/Calendar/Calendar.js | 5 +- .../FileBrowser/FileBrowserModalContent.js | 6 +- frontend/src/DiscoverMovie/DiscoverMovie.js | 4 +- .../Posters/DiscoverMoviePoster.js | 2 +- .../Language/SelectLanguageModalContent.js | 4 +- .../Movie/SelectMovieModalContent.js | 2 +- .../Quality/SelectQualityModalContent.js | 4 +- frontend/src/Movie/Details/MovieDetails.js | 12 ++- .../src/Movie/Editor/Tags/TagsModalContent.js | 8 +- frontend/src/Movie/Index/MovieIndexFooter.js | 20 +++-- .../Quality/SelectQualityModalContent.js | 4 +- .../Organize/OrganizePreviewModalContent.js | 4 +- frontend/src/RootFolder/RootFolders.js | 4 +- .../EditCustomFormatModalContent.js | 4 +- .../AddSpecificationModalContent.js | 13 ++- .../EditSpecificationModalContent.js | 10 ++- .../AddDownloadClientModalContent.js | 12 ++- .../EditDownloadClientModalContent.js | 4 +- .../Options/DownloadClientOptions.js | 4 +- .../EditRemotePathMappingModalContent.js | 4 +- .../src/Settings/General/GeneralSettings.js | 4 +- .../EditImportExclusionModalContent.js | 4 +- .../ImportLists/AddImportListModalContent.js | 12 ++- .../ImportLists/EditImportListModalContent.js | 4 +- .../ImportLists/Options/ImportListOptions.js | 4 +- .../Indexers/AddIndexerModalContent.js | 12 ++- .../Indexers/EditIndexerModalContent.js | 4 +- .../Indexers/Options/IndexerOptions.js | 4 +- .../EditRestrictionModalContent.js | 4 +- .../MediaManagement/MediaManagement.js | 12 +-- .../Settings/MediaManagement/Naming/Naming.js | 4 +- .../Metadata/Options/MetadataOptions.js | 4 +- .../AddNotificationModalContent.js | 4 +- .../EditNotificationModalContent.js | 4 +- .../Notifications/NotificationEventItems.js | 2 +- .../Delay/EditDelayProfileModalContent.js | 4 +- .../Quality/EditQualityProfileModalContent.js | 4 +- .../Definition/QualityDefinitionLimits.js | 13 ++- .../Tags/Details/TagDetailsModalContent.js | 4 +- frontend/src/Settings/Tags/Tags.js | 4 +- frontend/src/Settings/UI/UISettings.js | 4 +- frontend/src/System/Backup/Backups.js | 8 +- .../Backup/RestoreBackupModalContent.js | 12 ++- .../System/Events/LogsTableDetailsModal.js | 8 +- frontend/src/System/Logs/Files/LogFiles.js | 4 +- frontend/src/System/Updates/Updates.js | 8 +- frontend/src/Utilities/String/translate.js | 8 +- src/NzbDrone.Core/Localization/Core/en.json | 80 ++++++++++++++++++- 53 files changed, 313 insertions(+), 96 deletions(-) diff --git a/frontend/src/Activity/Blacklist/Blacklist.js b/frontend/src/Activity/Blacklist/Blacklist.js index 4b7919640..99bb486f5 100644 --- a/frontend/src/Activity/Blacklist/Blacklist.js +++ b/frontend/src/Activity/Blacklist/Blacklist.js @@ -65,13 +65,15 @@ class Blacklist extends Component { { !isFetching && !!error && -
Unable to load blacklist
+
+ {translate('UnableToLoadBlacklist')} +
} { isPopulated && !error && !items.length &&
- No history blacklist + {translate('NoHistory')}
} diff --git a/frontend/src/Activity/History/History.js b/frontend/src/Activity/History/History.js index 63ee5d279..82823a459 100644 --- a/frontend/src/Activity/History/History.js +++ b/frontend/src/Activity/History/History.js @@ -83,7 +83,9 @@ class History extends Component { { !isFetchingAny && hasError && -
Unable to load history
+
+ {translate('UnableToLoadHistory')} +
} { diff --git a/frontend/src/AddMovie/AddNewMovie/AddNewMovie.js b/frontend/src/AddMovie/AddNewMovie/AddNewMovie.js index 3479126c3..0b92cada1 100644 --- a/frontend/src/AddMovie/AddNewMovie/AddNewMovie.js +++ b/frontend/src/AddMovie/AddNewMovie/AddNewMovie.js @@ -127,7 +127,7 @@ class AddNewMovie extends Component { !isFetching && !!error ?
- Failed to load search results, please try again. + {translate('FailedLoadingSearchResults')}
{getErrorMessage(error)}
: null @@ -152,11 +152,15 @@ class AddNewMovie extends Component { { !isFetching && !error && !items.length && !!term &&
-
Couldn't find any results for '{term}'
-
You can also search using TMDB ID or IMDB ID of a movie. eg. tmdb:71663
+
+ (translate('CouldNotFindResults', [term])) +
+
+ {translate('YouCanAlsoSearch')} +
- Why can't I find my movie? + {translate('CantFindMovie')}
@@ -169,7 +173,9 @@ class AddNewMovie extends Component {
{translate('AddNewMessage')}
-
{translate('AddNewTmdbIdMessage')}
+
+ {translate('AddNewTmdbIdMessage')} +
} @@ -177,7 +183,7 @@ class AddNewMovie extends Component { !term && !hasExistingMovies ?
- You haven't added any movies yet, do you want to import some or all of your movies first? + {translate('HaveNotAddedMovies')}
: +
+ {translate('UnableToLoadRootFolders')} +
: null } diff --git a/frontend/src/AddMovie/ImportMovie/SelectFolder/ImportMovieSelectFolder.js b/frontend/src/AddMovie/ImportMovie/SelectFolder/ImportMovieSelectFolder.js index 49378ed3d..e3eb03025 100644 --- a/frontend/src/AddMovie/ImportMovie/SelectFolder/ImportMovieSelectFolder.js +++ b/frontend/src/AddMovie/ImportMovie/SelectFolder/ImportMovieSelectFolder.js @@ -86,7 +86,9 @@ class ImportMovieSelectFolder extends Component { { !isFetching && !!error && -
Unable to load root folders
+
+ {translate('UnableToLoadRootFolders')} +
} { diff --git a/frontend/src/Calendar/Calendar.js b/frontend/src/Calendar/Calendar.js index 734de3121..fec208a00 100644 --- a/frontend/src/Calendar/Calendar.js +++ b/frontend/src/Calendar/Calendar.js @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; +import translate from 'Utilities/String/translate'; import AgendaConnector from './Agenda/AgendaConnector'; import * as calendarViews from './calendarViews'; import CalendarDaysConnector from './Day/CalendarDaysConnector'; @@ -30,7 +31,9 @@ class Calendar extends Component { { !isFetching && !!error && -
Unable to load the calendar
+
+ {translate('UnableToLoadTheCalendar')} +
} { diff --git a/frontend/src/Components/FileBrowser/FileBrowserModalContent.js b/frontend/src/Components/FileBrowser/FileBrowserModalContent.js index 5e3bd0dc0..75aae2891 100644 --- a/frontend/src/Components/FileBrowser/FileBrowserModalContent.js +++ b/frontend/src/Components/FileBrowser/FileBrowserModalContent.js @@ -135,7 +135,7 @@ class FileBrowserModalContent extends Component { { !!error && -
Error loading contents
+
+ {translate('ErrorLoadingContents')} +
} { diff --git a/frontend/src/DiscoverMovie/DiscoverMovie.js b/frontend/src/DiscoverMovie/DiscoverMovie.js index b27d29417..5dec4f35e 100644 --- a/frontend/src/DiscoverMovie/DiscoverMovie.js +++ b/frontend/src/DiscoverMovie/DiscoverMovie.js @@ -376,7 +376,9 @@ class DiscoverMovie extends Component { { !isFetching && !!error && -
Unable to load movies
+
+ {translate('UnableToLoadMovies')} +
} { diff --git a/frontend/src/DiscoverMovie/Posters/DiscoverMoviePoster.js b/frontend/src/DiscoverMovie/Posters/DiscoverMoviePoster.js index 2617584a7..012d3660a 100644 --- a/frontend/src/DiscoverMovie/Posters/DiscoverMoviePoster.js +++ b/frontend/src/DiscoverMovie/Posters/DiscoverMoviePoster.js @@ -154,7 +154,7 @@ class DiscoverMoviePoster extends Component { isExcluded &&
} diff --git a/frontend/src/InteractiveImport/Language/SelectLanguageModalContent.js b/frontend/src/InteractiveImport/Language/SelectLanguageModalContent.js index 08bf61e4d..67f182ad7 100644 --- a/frontend/src/InteractiveImport/Language/SelectLanguageModalContent.js +++ b/frontend/src/InteractiveImport/Language/SelectLanguageModalContent.js @@ -88,7 +88,9 @@ class SelectLanguageModalContent extends Component { { !isFetching && !!error && -
Unable to load languages
+
+ {translate('UnableToLoadLanguages')} +
} { diff --git a/frontend/src/InteractiveImport/Movie/SelectMovieModalContent.js b/frontend/src/InteractiveImport/Movie/SelectMovieModalContent.js index 6d98efd4c..a35c30ecd 100644 --- a/frontend/src/InteractiveImport/Movie/SelectMovieModalContent.js +++ b/frontend/src/InteractiveImport/Movie/SelectMovieModalContent.js @@ -183,7 +183,7 @@ class SelectMovieModalContent extends Component { > Unable to load qualities
+
+ {translate('UnableToLoadQualities')} +
} { diff --git a/frontend/src/Movie/Details/MovieDetails.js b/frontend/src/Movie/Details/MovieDetails.js index 02f91993f..89657102b 100644 --- a/frontend/src/Movie/Details/MovieDetails.js +++ b/frontend/src/Movie/Details/MovieDetails.js @@ -581,17 +581,23 @@ class MovieDetails extends Component {
{ !isFetching && movieFilesError && -
Loading movie files failed
+
+ {translate('LoadingMovieFilesFailed')} +
} { !isFetching && movieCreditsError && -
Loading movie credits failed
+
+ {translate('LoadingMovieCreditsFailed')} +
} { !isFetching && extraFilesError && -
Loading movie extra files failed
+
+ {translate('LoadingMovieExtraFilesFailed')} +
} this.setState({ selectedTabIndex: tabIndex })}> diff --git a/frontend/src/Movie/Editor/Tags/TagsModalContent.js b/frontend/src/Movie/Editor/Tags/TagsModalContent.js index 8daf744a4..13bb255be 100644 --- a/frontend/src/Movie/Editor/Tags/TagsModalContent.js +++ b/frontend/src/Movie/Editor/Tags/TagsModalContent.js @@ -94,10 +94,10 @@ class TagsModalContent extends Component { value={applyTags} values={applyTagsOptions} helpTexts={[ - 'How to apply tags to the selected movies', - 'Add: Add the tags the existing list of tags', - 'Remove: Remove the entered tags', - 'Replace: Replace the tags with the entered tags (enter no tags to clear all tags)' + translate('ApplyTagsHelpTexts1'), + translate('ApplyTagsHelpTexts2'), + translate('ApplyTagsHelpTexts3'), + translate('ApplyTagsHelpTexts4') ]} onChange={this.onInputChange} /> diff --git a/frontend/src/Movie/Index/MovieIndexFooter.js b/frontend/src/Movie/Index/MovieIndexFooter.js index 91858e2c2..fbc09d34b 100644 --- a/frontend/src/Movie/Index/MovieIndexFooter.js +++ b/frontend/src/Movie/Index/MovieIndexFooter.js @@ -44,12 +44,16 @@ class MovieIndexFooter extends PureComponent {
-
Downloaded and Monitored
+
+ {translate('DownloadedAndMonitored')} +
-
Downloaded, but not Monitored
+
+ {translate('DownloadedButNotMonitored')} +
@@ -58,7 +62,9 @@ class MovieIndexFooter extends PureComponent { colorImpairedMode && 'colorImpaired' )} /> -
Missing, Monitored and considered Available
+
+ {translate('MissingMonitoredAndConsideredAvailable')} +
@@ -67,12 +73,16 @@ class MovieIndexFooter extends PureComponent { colorImpairedMode && 'colorImpaired' )} /> -
Missing, not Monitored
+
+ {translate('MissingNotMonitored')} +
-
Unreleased
+
+ {translate('Unreleased')} +
diff --git a/frontend/src/MovieFile/Quality/SelectQualityModalContent.js b/frontend/src/MovieFile/Quality/SelectQualityModalContent.js index 122cacb09..dd22b9889 100644 --- a/frontend/src/MovieFile/Quality/SelectQualityModalContent.js +++ b/frontend/src/MovieFile/Quality/SelectQualityModalContent.js @@ -92,7 +92,9 @@ class SelectQualityModalContent extends Component { { !isFetching && !!error && -
Unable to load qualities
+
+ {translate('UnableToLoadQualities')} +
} { diff --git a/frontend/src/Organize/OrganizePreviewModalContent.js b/frontend/src/Organize/OrganizePreviewModalContent.js index 8eae6d488..c1bd97f94 100644 --- a/frontend/src/Organize/OrganizePreviewModalContent.js +++ b/frontend/src/Organize/OrganizePreviewModalContent.js @@ -103,7 +103,9 @@ class OrganizePreviewModalContent extends Component { { !isFetching && error && -
Error loading previews
+
+ {translate('ErrorLoadingPreviews')} +
} { diff --git a/frontend/src/RootFolder/RootFolders.js b/frontend/src/RootFolder/RootFolders.js index 639a364a9..ef81f2b61 100644 --- a/frontend/src/RootFolder/RootFolders.js +++ b/frontend/src/RootFolder/RootFolders.js @@ -44,7 +44,9 @@ function RootFolders(props) { if (!isFetching && !!error) { return ( -
Unable to load root folders
+
+ {translate('UnableToLoadRootFolders')} +
); } diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/EditCustomFormatModalContent.js b/frontend/src/Settings/CustomFormats/CustomFormats/EditCustomFormatModalContent.js index b2886b5f4..cd3082b47 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/EditCustomFormatModalContent.js +++ b/frontend/src/Settings/CustomFormats/CustomFormats/EditCustomFormatModalContent.js @@ -101,7 +101,9 @@ class EditCustomFormatModalContent extends Component { { !isFetching && !!error && -
Unable to add a new custom format, please try again.
+
+ {translate('UnableToAddANewCustomFormatPleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/AddSpecificationModalContent.js b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/AddSpecificationModalContent.js index 145117fca..21bd0ddd9 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/AddSpecificationModalContent.js +++ b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/AddSpecificationModalContent.js @@ -42,7 +42,9 @@ class AddSpecificationModalContent extends Component { { !isSchemaFetching && !!schemaError && -
Unable to add a new condition, please try again.
+
+ {translate('UnableToAddANewConditionPleaseTryAgain')} +
} { @@ -50,8 +52,13 @@ class AddSpecificationModalContent extends Component {
-
Radarr supports custom conditions against the release properties below.
-
Visit GitHub for more details.
+
+ {translate('RadarrSupportsCustomConditionsAgainstTheReleasePropertiesBelow')} +
+
+ {translate('VisitGithubCustomFormatsAphrodite')} + GitHub +
diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js index 8a786fb14..4ffc82386 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js +++ b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js @@ -51,8 +51,14 @@ function EditSpecificationModalContent(props) { { fields && fields.some((x) => x.label === 'Regular Expression') && -
This condition matches using Regular Expressions. See here for details. Note that the characters {'\\^$.|?*+()[{'} have special meanings and need escaping with a \
-
Regular expressions can be tested here.
+
+
\\^$.|?*+()[{', '\\']) }} /> + {translate('MoreDetails')} {translate('LinkHere')} +
+
+ {translate('RegularExpressionsCanBeTested')} + {translate('LinkHere')} +
} diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientModalContent.js b/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientModalContent.js index af2756f3e..2fcff25bd 100644 --- a/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientModalContent.js +++ b/frontend/src/Settings/DownloadClients/DownloadClients/AddDownloadClientModalContent.js @@ -43,7 +43,9 @@ class AddDownloadClientModalContent extends Component { { !isSchemaFetching && !!schemaError && -
Unable to add a new downloadClient, please try again.
+
+ {translate('UnableToAddANewDownloadClientPleaseTryAgain')} +
} { @@ -51,8 +53,12 @@ class AddDownloadClientModalContent extends Component {
-
Radarr supports any downloadClient that uses the Newznab standard, as well as other downloadClients listed below.
-
For more information on the individual downloadClients, clink on the info buttons.
+
+ {translate('RadarrSupportsAnyDownloadClient')} +
+
+ {translate('ForMoreInformationOnTheIndividualDownloadClients')} +
diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.js b/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.js index 7ce203c74..d32301ee8 100644 --- a/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.js +++ b/frontend/src/Settings/DownloadClients/DownloadClients/EditDownloadClientModalContent.js @@ -64,7 +64,9 @@ class EditDownloadClientModalContent extends Component { { !isFetching && !!error && -
Unable to add a new download client, please try again.
+
+ {translate('UnableToAddANewDownloadClientPleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/DownloadClients/Options/DownloadClientOptions.js b/frontend/src/Settings/DownloadClients/Options/DownloadClientOptions.js index 1f32813a7..35252c013 100644 --- a/frontend/src/Settings/DownloadClients/Options/DownloadClientOptions.js +++ b/frontend/src/Settings/DownloadClients/Options/DownloadClientOptions.js @@ -28,7 +28,9 @@ function DownloadClientOptions(props) { { !isFetching && error && -
Unable to load download client options
+
+ {translate('UnableToLoadDownloadClientOptions')} +
} { diff --git a/frontend/src/Settings/DownloadClients/RemotePathMappings/EditRemotePathMappingModalContent.js b/frontend/src/Settings/DownloadClients/RemotePathMappings/EditRemotePathMappingModalContent.js index 38172b05a..e8185bf9a 100644 --- a/frontend/src/Settings/DownloadClients/RemotePathMappings/EditRemotePathMappingModalContent.js +++ b/frontend/src/Settings/DownloadClients/RemotePathMappings/EditRemotePathMappingModalContent.js @@ -52,7 +52,9 @@ function EditRemotePathMappingModalContent(props) { { !isFetching && !!error && -
Unable to add a new remote path mapping, please try again.
+
+ {translate('UnableToAddANewRemotePathMappingPleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/General/GeneralSettings.js b/frontend/src/Settings/General/GeneralSettings.js index 39d0af59c..3870e2754 100644 --- a/frontend/src/Settings/General/GeneralSettings.js +++ b/frontend/src/Settings/General/GeneralSettings.js @@ -126,7 +126,9 @@ class GeneralSettings extends Component { { !isFetching && error && -
Unable to load General settings
+
+ {translate('UnableToLoadGeneralSettings')} +
} { diff --git a/frontend/src/Settings/ImportLists/ImportExclusions/EditImportExclusionModalContent.js b/frontend/src/Settings/ImportLists/ImportExclusions/EditImportExclusionModalContent.js index 36743e6e2..2840200a1 100644 --- a/frontend/src/Settings/ImportLists/ImportExclusions/EditImportExclusionModalContent.js +++ b/frontend/src/Settings/ImportLists/ImportExclusions/EditImportExclusionModalContent.js @@ -50,7 +50,9 @@ function EditImportExclusionModalContent(props) { { !isFetching && !!error && -
Unable to add a new list exclusion, please try again.
+
+ {translate('UnableToAddANewListExclusionPleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContent.js b/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContent.js index 4d28b0e6f..5aa0cbb40 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContent.js +++ b/frontend/src/Settings/ImportLists/ImportLists/AddImportListModalContent.js @@ -43,7 +43,9 @@ class AddImportListModalContent extends Component { { !isSchemaFetching && !!schemaError && -
Unable to add a new list, please try again.
+
+ {translate('UnableToAddANewListPleaseTryAgain')} +
} { @@ -51,8 +53,12 @@ class AddImportListModalContent extends Component {
-
Radarr supports any RSS movie lists as well as the one stated below.
-
For more information on the individual importLists, clink on the info buttons.
+
+ {translate('RadarrSupportsAnyRSSMovieListsAsWellAsTheOneStatedBelow')} +
+
+ {translate('ForMoreInformationOnTheIndividualImportListsClinkOnTheInfoButtons')} +
{ diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js index 7e342d9a8..8e6af7ce8 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js @@ -63,7 +63,9 @@ function EditImportListModalContent(props) { { !isFetching && !!error && -
Unable to add a new list, please try again.
+
+ {translate('UnableToAddANewListPleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/ImportLists/Options/ImportListOptions.js b/frontend/src/Settings/ImportLists/Options/ImportListOptions.js index e31858813..08c480b83 100644 --- a/frontend/src/Settings/ImportLists/Options/ImportListOptions.js +++ b/frontend/src/Settings/ImportLists/Options/ImportListOptions.js @@ -35,7 +35,9 @@ function ImportListOptions(props) { { !isFetching && error && -
Unable to load list options
+
+ {translate('UnableToLoadListOptions')} +
} { diff --git a/frontend/src/Settings/Indexers/Indexers/AddIndexerModalContent.js b/frontend/src/Settings/Indexers/Indexers/AddIndexerModalContent.js index daab04a86..74873bb49 100644 --- a/frontend/src/Settings/Indexers/Indexers/AddIndexerModalContent.js +++ b/frontend/src/Settings/Indexers/Indexers/AddIndexerModalContent.js @@ -43,7 +43,9 @@ class AddIndexerModalContent extends Component { { !isSchemaFetching && !!schemaError && -
Unable to add a new indexer, please try again.
+
+ {translate('UnableToAddANewIndexerPleaseTryAgain')} +
} { @@ -51,8 +53,12 @@ class AddIndexerModalContent extends Component {
-
Radarr supports any indexer that uses the Newznab standard, as well as other indexers listed below.
-
For more information on the individual indexers, click on the info buttons.
+
+ {translate('RadarrSupportsAnyIndexer')} +
+
+ {translate('ForMoreInformationOnTheIndividualIndexers')} +
diff --git a/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js b/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js index 8aa85d068..a198a20a5 100644 --- a/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js +++ b/frontend/src/Settings/Indexers/Indexers/EditIndexerModalContent.js @@ -60,7 +60,9 @@ function EditIndexerModalContent(props) { { !isFetching && !!error && -
Unable to add a new indexer, please try again.
+
+ {translate('UnableToAddANewIndexerPleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/Indexers/Options/IndexerOptions.js b/frontend/src/Settings/Indexers/Options/IndexerOptions.js index 6fc5a8801..e6139bc14 100644 --- a/frontend/src/Settings/Indexers/Options/IndexerOptions.js +++ b/frontend/src/Settings/Indexers/Options/IndexerOptions.js @@ -28,7 +28,9 @@ function IndexerOptions(props) { { !isFetching && error && -
Unable to load indexer options
+
+ {translate('UnableToLoadIndexerOptions')} +
} { diff --git a/frontend/src/Settings/Indexers/Restrictions/EditRestrictionModalContent.js b/frontend/src/Settings/Indexers/Restrictions/EditRestrictionModalContent.js index 03764e61c..4a196ca2d 100644 --- a/frontend/src/Settings/Indexers/Restrictions/EditRestrictionModalContent.js +++ b/frontend/src/Settings/Indexers/Restrictions/EditRestrictionModalContent.js @@ -51,7 +51,7 @@ function EditRestrictionModalContent(props) { name="required" helpText={translate('RequiredHelpText')} kind={kinds.SUCCESS} - placeholder="Add new restriction" + placeholder={translate('RequiredPlaceHolder')} {...required} onChange={onInputChange} /> @@ -65,7 +65,7 @@ function EditRestrictionModalContent(props) { name="ignored" helpText={translate('IgnoredHelpText')} kind={kinds.DANGER} - placeholder="Add new restriction" + placeholder={translate('IgnoredPlaceHolder')} {...ignored} onChange={onInputChange} /> diff --git a/frontend/src/Settings/MediaManagement/MediaManagement.js b/frontend/src/Settings/MediaManagement/MediaManagement.js index 0fd73eac5..de456f802 100644 --- a/frontend/src/Settings/MediaManagement/MediaManagement.js +++ b/frontend/src/Settings/MediaManagement/MediaManagement.js @@ -66,7 +66,9 @@ class MediaManagement extends Component { { !isFetching && error &&
-
Unable to load Media Management settings
+
+ {translate('UnableToLoadMediaManagementSettings')} +
} @@ -197,8 +199,8 @@ class MediaManagement extends Component { type={inputTypes.TEXT} name="extraFileExtensions" helpTexts={[ - 'Comma separated list of extra files to import (.nfo will be imported as .nfo-orig)', - 'Examples: ".sub, .nfo" or "sub,nfo"' + translate('ExtraFileExtensionsHelpTexts1'), + translate('ExtraFileExtensionsHelpTexts2') ]} onChange={onInputChange} {...settings.extraFileExtensions} @@ -353,8 +355,8 @@ class MediaManagement extends Component { type={inputTypes.TEXT} name="fileChmod" helpTexts={[ - 'Octal, applied to media files when imported/renamed by Radarr', - 'The same mode is applied to movie/sub folders with the execute bit added, e.g., 0644 becomes 0755' + translate('FileChmodHelpTexts1'), + translate('FileChmodHelpTexts2') ]} onChange={onInputChange} {...settings.fileChmod} diff --git a/frontend/src/Settings/MediaManagement/Naming/Naming.js b/frontend/src/Settings/MediaManagement/Naming/Naming.js index 980488289..aaff0e0a1 100644 --- a/frontend/src/Settings/MediaManagement/Naming/Naming.js +++ b/frontend/src/Settings/MediaManagement/Naming/Naming.js @@ -110,7 +110,9 @@ class Naming extends Component { { !isFetching && error && -
Unable to load Naming settings
+
+ {translate('UnableToLoadNamingSettings')} +
} { diff --git a/frontend/src/Settings/Metadata/Options/MetadataOptions.js b/frontend/src/Settings/Metadata/Options/MetadataOptions.js index 30bb3e7ac..b6d061809 100644 --- a/frontend/src/Settings/Metadata/Options/MetadataOptions.js +++ b/frontend/src/Settings/Metadata/Options/MetadataOptions.js @@ -32,7 +32,9 @@ function MetadataOptions(props) { { !isFetching && error && -
Unable to load indexer options
+
+ {translate('UnableToLoadIndexerOptions')} +
} { diff --git a/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.js b/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.js index da292cce6..aaf784094 100644 --- a/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.js +++ b/frontend/src/Settings/Notifications/Notifications/AddNotificationModalContent.js @@ -39,7 +39,9 @@ class AddNotificationModalContent extends Component { { !isSchemaFetching && !!schemaError && -
Unable to add a new notification, please try again.
+
+ {translate('UnableToAddANewNotificationPleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js index 97dc357c1..ec20ccff1 100644 --- a/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js +++ b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js @@ -59,7 +59,9 @@ function EditNotificationModalContent(props) { { !isFetching && !!error && -
Unable to add a new notification, please try again.
+
+ {translate('UnableToAddANewNotificationPleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js b/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js index 71c9532d3..ad3f9290a 100644 --- a/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js +++ b/frontend/src/Settings/Notifications/Notifications/NotificationEventItems.js @@ -90,7 +90,7 @@ function NotificationEventItems(props) { Unable to add a new quality profile, please try again.
+
+ {translate('UnableToAddANewQualityProfilePleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/Profiles/Quality/EditQualityProfileModalContent.js b/frontend/src/Settings/Profiles/Quality/EditQualityProfileModalContent.js index 8a53a8c48..c888f1ac4 100644 --- a/frontend/src/Settings/Profiles/Quality/EditQualityProfileModalContent.js +++ b/frontend/src/Settings/Profiles/Quality/EditQualityProfileModalContent.js @@ -146,7 +146,9 @@ class EditQualityProfileModalContent extends Component { { !isFetching && !!error && -
Unable to add a new quality profile, please try again.
+
+ {translate('UnableToAddANewQualityProfilePleaseTryAgain')} +
} { diff --git a/frontend/src/Settings/Quality/Definition/QualityDefinitionLimits.js b/frontend/src/Settings/Quality/Definition/QualityDefinitionLimits.js index 3451dbf1a..2f8886b1f 100644 --- a/frontend/src/Settings/Quality/Definition/QualityDefinitionLimits.js +++ b/frontend/src/Settings/Quality/Definition/QualityDefinitionLimits.js @@ -1,6 +1,7 @@ import PropTypes from 'prop-types'; import React from 'react'; import formatBytes from 'Utilities/Number/formatBytes'; +import translate from 'Utilities/String/translate'; function QualityDefinitionLimits(props) { const { @@ -18,9 +19,15 @@ function QualityDefinitionLimits(props) { return (
-
60 Minutes: {sixty}
-
90 Minutes: {ninety}
-
120 Minutes: {hundredTwenty}
+
+ {translate('MinutesSixty', [sixty])} +
+
+ {translate('MinutesNinety', [ninety])} +
+
+ {translate('MinutesHundredTwenty', [hundredTwenty])} +
); } diff --git a/frontend/src/Settings/Tags/Details/TagDetailsModalContent.js b/frontend/src/Settings/Tags/Details/TagDetailsModalContent.js index ecc3be1a3..adbc42dd3 100644 --- a/frontend/src/Settings/Tags/Details/TagDetailsModalContent.js +++ b/frontend/src/Settings/Tags/Details/TagDetailsModalContent.js @@ -35,7 +35,9 @@ function TagDetailsModalContent(props) { { !isTagUsed && -
Tag is not used and can be deleted
+
+ {translate('TagIsNotUsedAndCanBeDeleted')} +
} { diff --git a/frontend/src/Settings/Tags/Tags.js b/frontend/src/Settings/Tags/Tags.js index 004d75932..453860426 100644 --- a/frontend/src/Settings/Tags/Tags.js +++ b/frontend/src/Settings/Tags/Tags.js @@ -14,7 +14,9 @@ function Tags(props) { if (!items.length) { return ( -
No tags have been added yet
+
+ {translate('NoTagsHaveBeenAddedYet')} +
); } diff --git a/frontend/src/Settings/UI/UISettings.js b/frontend/src/Settings/UI/UISettings.js index 024c3d924..2200f0aba 100644 --- a/frontend/src/Settings/UI/UISettings.js +++ b/frontend/src/Settings/UI/UISettings.js @@ -80,7 +80,9 @@ class UISettings extends Component { { !isFetching && error && -
Unable to load UI settings
+
+ {translate('UnableToLoadUISettings')} +
} { diff --git a/frontend/src/System/Backup/Backups.js b/frontend/src/System/Backup/Backups.js index 3f6277a0d..f65010875 100644 --- a/frontend/src/System/Backup/Backups.js +++ b/frontend/src/System/Backup/Backups.js @@ -102,12 +102,16 @@ class Backups extends Component { { !isFetching && !!error && -
Unable to load backups
+
+ {translate('UnableToLoadBackups')} +
} { noBackups && -
No backups are available
+
+ {translate('NoBackupsAreAvailable')} +
} { diff --git a/frontend/src/System/Backup/RestoreBackupModalContent.js b/frontend/src/System/Backup/RestoreBackupModalContent.js index 40aec125f..bd3f90598 100644 --- a/frontend/src/System/Backup/RestoreBackupModalContent.js +++ b/frontend/src/System/Backup/RestoreBackupModalContent.js @@ -168,7 +168,9 @@ class RestoreBackupModalContent extends Component { />
-
Restore
+
+ {translate('Restore')} +
@@ -179,7 +181,9 @@ class RestoreBackupModalContent extends Component { />
-
Restart
+
+ {translate('Restart')} +
@@ -190,7 +194,9 @@ class RestoreBackupModalContent extends Component { />
-
Reload
+
+ {translate('Reload')} +
diff --git a/frontend/src/System/Events/LogsTableDetailsModal.js b/frontend/src/System/Events/LogsTableDetailsModal.js index 151ec6182..afbb1c2fa 100644 --- a/frontend/src/System/Events/LogsTableDetailsModal.js +++ b/frontend/src/System/Events/LogsTableDetailsModal.js @@ -32,7 +32,9 @@ function LogsTableDetailsModal(props) { -
Message
+
+ {translate('Message')} +
-
Exception
+
+ {translate('Exception')} +
No log files
+
+ {translate('NoLogFiles')} +
} diff --git a/frontend/src/System/Updates/Updates.js b/frontend/src/System/Updates/Updates.js index 5a62af7eb..42332246f 100644 --- a/frontend/src/System/Updates/Updates.js +++ b/frontend/src/System/Updates/Updates.js @@ -58,7 +58,9 @@ class Updates extends Component { { noUpdates && -
No updates are available
+
+ {translate('NoUpdatesAreAvailable')} +
} { @@ -162,7 +164,9 @@ class Updates extends Component { { !hasChanges && -
Maintenance release
+
+ {translate('MaintenanceRelease')} +
} { diff --git a/frontend/src/Utilities/String/translate.js b/frontend/src/Utilities/String/translate.js index 01e162512..38605c2de 100644 --- a/frontend/src/Utilities/String/translate.js +++ b/frontend/src/Utilities/String/translate.js @@ -25,12 +25,8 @@ const translations = getTranslations(); export default function translate(key, args = '') { if (args) { const translatedKey = translate(key); - return translatedKey.replace(/(\{\{\d\}\}|\{\d\})/g, (translatedKeyDbl) => { - if (translatedKeyDbl.substring(0, 2) === '{{') { - return translatedKeyDbl; - } - const match = parseInt(translatedKey.match(/\d/)[0]); - return args[match]; + return translatedKey.replace(/\{(\d+)\}/g, (match, index) => { + return args[index]; }); } diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index b1ffd7bc0..64d0b6744 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -34,6 +34,10 @@ "AppDataLocationHealthCheckMessage": "Updating will not be possible to prevent deleting AppData on Update", "Apply": "Apply", "ApplyTags": "Apply Tags", + "ApplyTagsHelpTexts1": "How to apply tags to the selected movies", + "ApplyTagsHelpTexts2": "Add: Add the tags the existing list of tags", + "ApplyTagsHelpTexts3": "Remove: Remove the entered tags", + "ApplyTagsHelpTexts4": "Replace: Replace the tags with the entered tags (enter no tags to clear all tags)", "AreYouSureYouWantToDeleteThisDelayProfile": "Are you sure you want to delete this delay profile?", "AreYouSureYouWantToDeleteThisImportListExclusion": "Are you sure you want to delete this import list exclusion?", "AreYouSureYouWantToDeleteThisRemotePathMapping": "Are you sure you want to delete this remote path mapping?", @@ -67,6 +71,7 @@ "Calendar": "Calendar", "Cancel": "Cancel", "CancelPendingTask": "Are you sure you want to cancel this pending task?", + "CantFindMovie": "Why can't I find my movie?", "Cast": "Cast", "CertificateValidation": "Certificate Validation", "CertificateValidationHelpText": "Change how strict HTTPS certification validation is", @@ -104,6 +109,7 @@ "ConnectSettingsSummary": "Notifications, connections to media servers/players and custom scripts", "CopyUsingHardlinksHelpText": "Use Hardlinks when trying to copy files from torrents that are still being seeded", "CopyUsingHardlinksHelpTextWarning": "Occasionally, file locks may prevent renaming files that are being seeded. You may temporarily disable seeding and use Radarr's rename function as a work around.", + "CouldNotFindResults": "Couldn't find any results for '{0}'", "CreateEmptyMovieFolders": "Create empty movie folders", "CreateEmptyMovieFoldersHelpText": "Create missing movie folders during disk scan", "CreateGroup": "Create group", @@ -170,6 +176,8 @@ "DownloadClientStatusCheckSingleClientMessage": "Download clients unavailable due to failures: {0}", "DownloadClientUnavailable": "Download client is unavailable", "Downloaded": "Downloaded", + "DownloadedAndMonitored": "Downloaded and Monitored", + "DownloadedButNotMonitored": "Downloaded, but not Monitored", "DownloadFailed": "Download failed", "DownloadFailedCheckDownloadClientForMoreDetails": "Download failed: check download client for more details", "DownloadFailedInterp": "Download failed: {0}", @@ -202,15 +210,23 @@ "EnableSslHelpText": " Requires restart running as administrator to take effect", "Ended": "Ended", "Error": "Error", + "ErrorLoadingContents": "Error loading contents", + "ErrorLoadingPreviews": "Error loading previews", "Events": "Events", "EventType": "Event Type", + "Exception": "Exception", + "Excluded": "Excluded", "ExcludeMovie": "Exclude Movie", "ExistingMovies": "Existing Movie(s)", "ExistingTag": "Existing tag", - "Exluded": "Exluded", "Extension": "Extension", + "ExtraFileExtensionsHelpTexts1": "Comma separated list of extra files to import (.nfo will be imported as .nfo-orig)", + "ExtraFileExtensionsHelpTexts2": "Examples: '.sub, .nfo' or 'sub,nfo'", "Failed": "Failed", "FailedDownloadHandling": "Failed Download Handling", + "FailedLoadingSearchResults": "Failed to load search results, please try again.", + "FileChmodHelpTexts1": "Octal, applied to media files when imported/renamed by Radarr", + "FileChmodHelpTexts2": "The same mode is applied to movie/sub folders with the execute bit added, e.g., 0644 becomes 0755", "FileChmodMode": "File chmod mode", "FileDateHelpText": "Change file date on import/rescan", "FileManagement": "File Management", @@ -219,6 +235,7 @@ "Files": "Files", "Filesize": "Filesize", "Filter": "Filter", + "FilterPlaceHolder": "Search movies", "FirstDayOfWeek": "First Day of Week", "Fixed": "Fixed", "Folder": "Folder", @@ -226,6 +243,9 @@ "FollowPerson": "Follow Person", "Forecast": "Forecast", "Formats": "Formats", + "ForMoreInformationOnTheIndividualDownloadClients": "For more information on the individual download clients, clink on the info buttons.", + "ForMoreInformationOnTheIndividualImportListsClinkOnTheInfoButtons": "For more information on the individual import lists, clink on the info buttons.", + "ForMoreInformationOnTheIndividualIndexers": "For more information on the individual indexers, click on the info buttons.", "FreeSpace": "Free Space", "General": "General", "GeneralSettings": "General Settings", @@ -241,6 +261,7 @@ "GrabSelected": "Grab Selected", "Group": "Group", "HardlinkCopyFiles": "Hardlink/Copy Files", + "HaveNotAddedMovies": "You haven't added any movies yet, do you want to import some or all of your movies first?", "Health": "Health", "HealthNoIssues": "No issues with your configuration", "HelpText": "Interval in minutes. Set to zero to disable (this will stop all automatic release grabbing)", @@ -257,6 +278,7 @@ "IgnoredAddresses": "Ignored Addresses", "IgnoreDeletedMovies": "Ignore Deleted Movies", "IgnoredHelpText": "The release will be rejected if it contains one or more of the terms (case insensitive)", + "IgnoredPlaceHolder": "Add new restriction", "IllRestartLater": "I'll restart later", "Import": "Import", "Imported": "Imported", @@ -307,6 +329,7 @@ "LastWriteTime": "Last Write Time", "LaunchBrowserHelpText": " Open a web browser and navigate to the Radarr homepage on app start.", "Level": "Level", + "LinkHere": "here", "Links": "Links", "ListExclusions": "List Exclusions", "Lists": "Lists", @@ -314,6 +337,9 @@ "ListsSettingsSummary": "Import Lists, list exclusions", "ListSyncLevelHelpText": "Movies in library will be removed or unmonitored if not in your list", "ListUpdateInterval": "List Update Interval", + "LoadingMovieCreditsFailed": "Loading movie credits failed", + "LoadingMovieExtraFilesFailed": "Loading movie extra files failed", + "LoadingMovieFilesFailed": "Loading movie files failed", "Local": "Local", "Location": "Location", "LogFiles": "Log Files", @@ -322,6 +348,7 @@ "LogLevel": "Log Level", "LogLevelTraceHelpTextWarning": "Trace logging should only be enabled temporarily", "Logs": "Logs", + "MaintenanceRelease": "Maintenance release", "Manual": "Manual", "ManualImport": "Manual Import", "MarkAsFailed": "Mark as Failed", @@ -349,7 +376,12 @@ "MinimumFreeSpace": "Minimum Free Space", "MinimumFreeSpaceWhenImportingHelpText": "Prevent import if it would leave less than this amount of disk space available", "MinimumLimits": "Minimum Limits", + "MinutesHundredTwenty": "120 Minutes: {0}", + "MinutesNinety": "90 Minutes: {0}", + "MinutesSixty": "60 Minutes: {0}", "Missing": "Missing", + "MissingMonitoredAndConsideredAvailable": "Missing, Monitored and considered Available", + "MissingNotMonitored": "Missing, not Monitored", "Mode": "Mode", "Monitor": "Monitor", "Monitored": "Monitored", @@ -363,6 +395,7 @@ "MonoVersionCheckOldNotSupportedMessage": "Currently installed Mono version {0} is old and unsupported. Please upgrade Mono to version {1}.", "MonoVersionCheckUpgradeRecommendedMessage": "Currently installed Mono version {0} is supported but upgrading to {1} is recommended.", "Month": "Month", + "MoreDetails": "More details", "MoreInfo": "More Info", "MountCheckMessage": "Mount containing a movie path is mounted read-only: ", "MoveFiles": "Move Files", @@ -395,16 +428,22 @@ "NegateHelpText": "If checked, the custom format will not apply if this {0} condition matches.", "NetCore": ".NET Core", "New": "New", + "NoBackupsAreAvailable": "No backups are available", "NoChange": "No Change", "NoChanges": "No Changes", + "NoHistory": "No history", "NoLeaveIt": "No, Leave It", "NoLimitForAnyRuntime": "No limit for any runtime", + "NoLogFiles": "No log files", "NoMinimumForAnyRuntime": "No minimum for any runtime", + "NoTagsHaveBeenAddedYet": "No tags have been added yet", "NotAvailable": "Not Available", "NotificationTriggers": "Notification Triggers", "NotMonitored": "Not Monitored", + "NoUpdatesAreAvailable": "No updates are available", "OAuthPopupMessage": "Pop-ups are being blocked by your browser", "Ok": "Ok", + "OnDeleteHelpText": "On Delete", "OnDownloadHelpText": "Be notified when movies are successfully imported", "OnGrabHelpText": "On Grab", "OnHealthIssueHelpText": "On Health Issue", @@ -473,6 +512,10 @@ "Queued": "Queued", "QuickImport": "Quick Import", "Radarr": "Radarr", + "RadarrSupportsAnyDownloadClient": "Radarr supports any download client that uses the Newznab standard, as well as other download clients listed below.", + "RadarrSupportsAnyIndexer": "Radarr supports any indexer that uses the Newznab standard, as well as other indexers listed below.", + "RadarrSupportsAnyRSSMovieListsAsWellAsTheOneStatedBelow": "Radarr supports any RSS movie lists as well as the one stated below.", + "RadarrSupportsCustomConditionsAgainstTheReleasePropertiesBelow": "Radarr supports custom conditions against the release properties below.", "RadarrTags": "Radarr Tags", "Ratings": "Ratings", "ReadTheWikiForMoreInformation": "Read the Wiki for more information", @@ -489,6 +532,7 @@ "RefreshAndScan": "Refresh & Scan", "RefreshInformationAndScanDisk": "Refresh information and scan disk", "RefreshMovie": "Refresh movie", + "RegularExpressionsCanBeTested": "Regular expressions can be tested ", "RejectionCount": "Rejection Count", "RelativePath": "Relative Path", "ReleaseBranchCheckOfficialBranchMessage": "Branch {0} is not a valid Radarr release branch, you will not receive updates", @@ -523,6 +567,7 @@ "ReplaceIllegalCharacters": "Replace Illegal Characters", "ReplaceIllegalCharactersHelpText": "Replace illegal characters. If unchecked, Radarr will remove them instead", "RequiredHelpText": "This {0} condition must match for the custom format to apply. Otherwise a single {1} match is sufficient.", + "RequiredPlaceHolder": "Add new restriction", "RescanAfterRefreshHelpText": "Rescan the movie folder after refreshing the movie", "RescanAfterRefreshHelpTextWarning": "Radarr will not automatically detect changes to files when not set to 'Always'", "RescanMovieFolderAfterRefresh": "Rescan Movie Folder after Refresh", @@ -532,6 +577,7 @@ "RestartNow": "Restart Now", "RestartRadarr": "Restart Radarr", "RestartRequiredHelpTextWarning": "Requires restart to take effect", + "Restore": "Restore", "RestoreBackup": "Restore Backup", "Restrictions": "Restrictions", "Result": "Result", @@ -629,6 +675,7 @@ "SSLCertPathHelpText": "Path to pfx file", "SSLPort": "SSL Port", "StandardMovieFormat": "Standard Movie Format", + "StartTypingOrSelectAPathBelow": "Start typing or select a path below", "StartupDirectory": "Startup directory", "Status": "Status", "Studio": "Studio", @@ -641,6 +688,7 @@ "TableOptions": "Table Options", "TableOptionsColumnsMessage": "Choose which columns are visible and which order they appear in", "TagCannotBeDeletedWhileInUse": "Cannot be deleted while in use", + "TagIsNotUsedAndCanBeDeleted": "Tag is not used and can be deleted", "Tags": "Tags", "TagsHelpText": "Applies to movies with at least one matching tag", "TagsSettingsSummary": "See all tags and how they are used. Unused tags can be removed", @@ -650,6 +698,7 @@ "TestAllClients": "Test All Clients", "TestAllIndexers": "Test All Indexers", "TestAllLists": "Test All Lists", + "ThisConditionMatchesUsingRegularExpressions": "This condition matches using Regular Expressions. Note that the characters {0} have special meanings and need escaping with a {1}", "Time": "Time", "TimeFormat": "Time Format", "Timeleft": "Timeleft", @@ -666,24 +715,49 @@ "UI": "UI", "UISettings": "UI Settings", "UISettingsSummary": "Calendar, date and color impaired options", + "UnableToAddANewConditionPleaseTryAgain": "Unable to add a new condition, please try again.", + "UnableToAddANewCustomFormatPleaseTryAgain": "Unable to add a new custom format, please try again.", + "UnableToAddANewDownloadClientPleaseTryAgain": "Unable to add a new download client, please try again.", + "UnableToAddANewIndexerPleaseTryAgain": "Unable to add a new indexer, please try again.", + "UnableToAddANewListExclusionPleaseTryAgain": "Unable to add a new list exclusion, please try again.", + "UnableToAddANewListPleaseTryAgain": "Unable to add a new list, please try again.", + "UnableToAddANewNotificationPleaseTryAgain": "Unable to add a new notification, please try again.", + "UnableToAddANewQualityProfilePleaseTryAgain": "Unable to add a new quality profile, please try again.", + "UnableToAddANewRemotePathMappingPleaseTryAgain": "Unable to add a new remote path mapping, please try again.", + "UnableToLoadBackups": "Unable to load backups", + "UnableToLoadBlacklist": "Unable to load blacklist", "UnableToLoadCustomFormats": "Unable to load Custom Formats", "UnableToLoadDelayProfiles": "Unable to load Delay Profiles", + "UnableToLoadDownloadClientOptions": "Unable to load download client options", "UnableToLoadDownloadClients": "Unable to load download clients", + "UnableToLoadGeneralSettings": "Unable to load General settings", + "UnableToLoadHistory": "Unable to load history", + "UnableToLoadIndexerOptions": "Unable to load indexer options", "UnableToLoadIndexers": "Unable to load Indexers", + "UnableToLoadLanguages": "Unable to load languages", "UnableToLoadListExclusions": "Unable to load List Exclusions", + "UnableToLoadListOptions": "Unable to load list options", "UnableToLoadLists": "Unable to load Lists", + "UnableToLoadMediaManagementSettings": "Unable to load Media Management settings", "UnableToLoadMetadata": "Unable to load Metadata", + "UnableToLoadMovies": "Unable to load movies", + "UnableToLoadNamingSettings": "Unable to load Naming settings", "UnableToLoadNotifications": "Unable to load Notifications", + "UnableToLoadQualities": "Unable to load qualities", "UnableToLoadQualityDefinitions": "Unable to load Quality Definitions", "UnableToLoadQualityProfiles": "Unable to load Quality Profiles", "UnableToLoadRemotePathMappings": "Unable to load Remote Path Mappings", "UnableToLoadRestrictions": "Unable to load Restrictions", + "UnableToLoadRootFolders": "Unable to load root folders", "UnableToLoadTags": "Unable to load Tags", + "UnableToLoadTheCalendar": "Unable to load the calendar", + "UnableToLoadUISettings": "Unable to load UI settings", "Unavailable": "Unavailable", "Ungroup": "Ungroup", "UnmappedFolders": "Unmapped Folders", "Unmonitored": "Unmonitored", "UnmonitoredHelpText": "Include unmonitored movies in the iCal feed", + "Unreleased": "Unreleased", "UnsavedChanges": "Unsaved Changes", "UnselectAll": "Unselect All", "UpdateAll": "Update All", @@ -709,6 +783,7 @@ "Version": "Version", "VideoCodec": "Video Codec", "View": "View", + "VisitGithubCustomFormatsAphrodite": "Visit Github for more details: ", "WaitingToImport": "Waiting to Import", "WaitingToProcess": "Waiting to Process", "Wanted": "Wanted", @@ -718,5 +793,6 @@ "WhitelistedHardcodedSubsHelpText": "Subtitle tags set here will not be considered hardcoded", "WhitelistedSubtitleTags": "Whitelisted Subtitle Tags", "Year": "Year", - "YesCancel": "Yes, Cancel" + "YesCancel": "Yes, Cancel", + "YouCanAlsoSearch": "You can also search using TMDb ID or IMDb ID of a movie. eg. tmdb:71663" }