1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-09-17 15:02:34 +02:00

Translation update, updating inline div tags and placeHolder attributes

This commit is contained in:
nitsua 2020-09-05 14:46:39 -04:00 committed by Qstick
parent 914d8f9937
commit f286f99bb6
53 changed files with 313 additions and 96 deletions

View File

@ -65,13 +65,15 @@ class Blacklist extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to load blacklist</div> <div>
{translate('UnableToLoadBlacklist')}
</div>
} }
{ {
isPopulated && !error && !items.length && isPopulated && !error && !items.length &&
<div> <div>
No history blacklist {translate('NoHistory')}
</div> </div>
} }

View File

@ -83,7 +83,9 @@ class History extends Component {
{ {
!isFetchingAny && hasError && !isFetchingAny && hasError &&
<div>Unable to load history</div> <div>
{translate('UnableToLoadHistory')}
</div>
} }
{ {

View File

@ -127,7 +127,7 @@ class AddNewMovie extends Component {
!isFetching && !!error ? !isFetching && !!error ?
<div className={styles.message}> <div className={styles.message}>
<div className={styles.helpText}> <div className={styles.helpText}>
Failed to load search results, please try again. {translate('FailedLoadingSearchResults')}
</div> </div>
<div>{getErrorMessage(error)}</div> <div>{getErrorMessage(error)}</div>
</div> : null </div> : null
@ -152,11 +152,15 @@ class AddNewMovie extends Component {
{ {
!isFetching && !error && !items.length && !!term && !isFetching && !error && !items.length && !!term &&
<div className={styles.message}> <div className={styles.message}>
<div className={styles.noResults}>Couldn't find any results for '{term}'</div> <div className={styles.noResults}>
<div>You can also search using TMDB ID or IMDB ID of a movie. eg. tmdb:71663</div> (translate('CouldNotFindResults', [term]))
</div>
<div>
{translate('YouCanAlsoSearch')}
</div>
<div> <div>
<Link to="https://github.com/Radarr/Radarr/wiki/FAQ#why-cant-i-add-a-new-movie-when-i-know-the-tmdb-id"> <Link to="https://github.com/Radarr/Radarr/wiki/FAQ#why-cant-i-add-a-new-movie-when-i-know-the-tmdb-id">
Why can't I find my movie? {translate('CantFindMovie')}
</Link> </Link>
</div> </div>
</div> </div>
@ -169,7 +173,9 @@ class AddNewMovie extends Component {
<div className={styles.helpText}> <div className={styles.helpText}>
{translate('AddNewMessage')} {translate('AddNewMessage')}
</div> </div>
<div>{translate('AddNewTmdbIdMessage')}</div> <div>
{translate('AddNewTmdbIdMessage')}
</div>
</div> </div>
} }
@ -177,7 +183,7 @@ class AddNewMovie extends Component {
!term && !hasExistingMovies ? !term && !hasExistingMovies ?
<div className={styles.message}> <div className={styles.message}>
<div className={styles.noMoviesText}> <div className={styles.noMoviesText}>
You haven't added any movies yet, do you want to import some or all of your movies first? {translate('HaveNotAddedMovies')}
</div> </div>
<div> <div>
<Button <Button

View File

@ -104,7 +104,9 @@ class ImportMovie extends Component {
{ {
!rootFoldersFetching && !!rootFoldersError ? !rootFoldersFetching && !!rootFoldersError ?
<div>Unable to load root folders</div> : <div>
{translate('UnableToLoadRootFolders')}
</div> :
null null
} }

View File

@ -86,7 +86,9 @@ class ImportMovieSelectFolder extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to load root folders</div> <div>
{translate('UnableToLoadRootFolders')}
</div>
} }
{ {

View File

@ -1,6 +1,7 @@
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import React, { Component } from 'react'; import React, { Component } from 'react';
import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import translate from 'Utilities/String/translate';
import AgendaConnector from './Agenda/AgendaConnector'; import AgendaConnector from './Agenda/AgendaConnector';
import * as calendarViews from './calendarViews'; import * as calendarViews from './calendarViews';
import CalendarDaysConnector from './Day/CalendarDaysConnector'; import CalendarDaysConnector from './Day/CalendarDaysConnector';
@ -30,7 +31,9 @@ class Calendar extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to load the calendar</div> <div>
{translate('UnableToLoadTheCalendar')}
</div>
} }
{ {

View File

@ -135,7 +135,7 @@ class FileBrowserModalContent extends Component {
<PathInput <PathInput
className={styles.pathInput} className={styles.pathInput}
placeholder="Start typing or select a path below" placeholder={translate('StartTypingOrSelectAPathBelow')}
hasFileBrowser={false} hasFileBrowser={false}
{...otherProps} {...otherProps}
value={this.state.currentPath} value={this.state.currentPath}
@ -149,7 +149,9 @@ class FileBrowserModalContent extends Component {
> >
{ {
!!error && !!error &&
<div>Error loading contents</div> <div>
{translate('ErrorLoadingContents')}
</div>
} }
{ {

View File

@ -376,7 +376,9 @@ class DiscoverMovie extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to load movies</div> <div>
{translate('UnableToLoadMovies')}
</div>
} }
{ {

View File

@ -154,7 +154,7 @@ class DiscoverMoviePoster extends Component {
isExcluded && isExcluded &&
<div <div
className={styles.excluded} className={styles.excluded}
title={translate('Exluded')} title={translate('Excluded')}
/> />
} }

View File

@ -88,7 +88,9 @@ class SelectLanguageModalContent extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to load languages</div> <div>
{translate('UnableToLoadLanguages')}
</div>
} }
{ {

View File

@ -183,7 +183,7 @@ class SelectMovieModalContent extends Component {
> >
<TextInput <TextInput
className={styles.filterInput} className={styles.filterInput}
placeholder="Search movies" placeholder={translate('FilterPlaceHolder')}
name="filter" name="filter"
value={filter} value={filter}
autoFocus={true} autoFocus={true}

View File

@ -92,7 +92,9 @@ class SelectQualityModalContent extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to load qualities</div> <div>
{translate('UnableToLoadQualities')}
</div>
} }
{ {

View File

@ -581,17 +581,23 @@ class MovieDetails extends Component {
<div className={styles.contentContainer}> <div className={styles.contentContainer}>
{ {
!isFetching && movieFilesError && !isFetching && movieFilesError &&
<div>Loading movie files failed</div> <div>
{translate('LoadingMovieFilesFailed')}
</div>
} }
{ {
!isFetching && movieCreditsError && !isFetching && movieCreditsError &&
<div>Loading movie credits failed</div> <div>
{translate('LoadingMovieCreditsFailed')}
</div>
} }
{ {
!isFetching && extraFilesError && !isFetching && extraFilesError &&
<div>Loading movie extra files failed</div> <div>
{translate('LoadingMovieExtraFilesFailed')}
</div>
} }
<Tabs selectedIndex={this.state.tabIndex} onSelect={(tabIndex) => this.setState({ selectedTabIndex: tabIndex })}> <Tabs selectedIndex={this.state.tabIndex} onSelect={(tabIndex) => this.setState({ selectedTabIndex: tabIndex })}>

View File

@ -94,10 +94,10 @@ class TagsModalContent extends Component {
value={applyTags} value={applyTags}
values={applyTagsOptions} values={applyTagsOptions}
helpTexts={[ helpTexts={[
'How to apply tags to the selected movies', translate('ApplyTagsHelpTexts1'),
'Add: Add the tags the existing list of tags', translate('ApplyTagsHelpTexts2'),
'Remove: Remove the entered tags', translate('ApplyTagsHelpTexts3'),
'Replace: Replace the tags with the entered tags (enter no tags to clear all tags)' translate('ApplyTagsHelpTexts4')
]} ]}
onChange={this.onInputChange} onChange={this.onInputChange}
/> />

View File

@ -44,12 +44,16 @@ class MovieIndexFooter extends PureComponent {
<div> <div>
<div className={styles.legendItem}> <div className={styles.legendItem}>
<div className={styles.ended} /> <div className={styles.ended} />
<div>Downloaded and Monitored</div> <div>
{translate('DownloadedAndMonitored')}
</div>
</div> </div>
<div className={styles.legendItem}> <div className={styles.legendItem}>
<div className={styles.availNotMonitored} /> <div className={styles.availNotMonitored} />
<div>Downloaded, but not Monitored</div> <div>
{translate('DownloadedButNotMonitored')}
</div>
</div> </div>
<div className={styles.legendItem}> <div className={styles.legendItem}>
@ -58,7 +62,9 @@ class MovieIndexFooter extends PureComponent {
colorImpairedMode && 'colorImpaired' colorImpairedMode && 'colorImpaired'
)} )}
/> />
<div>Missing, Monitored and considered Available</div> <div>
{translate('MissingMonitoredAndConsideredAvailable')}
</div>
</div> </div>
<div className={styles.legendItem}> <div className={styles.legendItem}>
@ -67,12 +73,16 @@ class MovieIndexFooter extends PureComponent {
colorImpairedMode && 'colorImpaired' colorImpairedMode && 'colorImpaired'
)} )}
/> />
<div>Missing, not Monitored</div> <div>
{translate('MissingNotMonitored')}
</div>
</div> </div>
<div className={styles.legendItem}> <div className={styles.legendItem}>
<div className={styles.continuing} /> <div className={styles.continuing} />
<div>Unreleased</div> <div>
{translate('Unreleased')}
</div>
</div> </div>
</div> </div>

View File

@ -92,7 +92,9 @@ class SelectQualityModalContent extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to load qualities</div> <div>
{translate('UnableToLoadQualities')}
</div>
} }
{ {

View File

@ -103,7 +103,9 @@ class OrganizePreviewModalContent extends Component {
{ {
!isFetching && error && !isFetching && error &&
<div>Error loading previews</div> <div>
{translate('ErrorLoadingPreviews')}
</div>
} }
{ {

View File

@ -44,7 +44,9 @@ function RootFolders(props) {
if (!isFetching && !!error) { if (!isFetching && !!error) {
return ( return (
<div>Unable to load root folders</div> <div>
{translate('UnableToLoadRootFolders')}
</div>
); );
} }

View File

@ -101,7 +101,9 @@ class EditCustomFormatModalContent extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new custom format, please try again.</div> <div>
{translate('UnableToAddANewCustomFormatPleaseTryAgain')}
</div>
} }
{ {

View File

@ -42,7 +42,9 @@ class AddSpecificationModalContent extends Component {
{ {
!isSchemaFetching && !!schemaError && !isSchemaFetching && !!schemaError &&
<div>Unable to add a new condition, please try again.</div> <div>
{translate('UnableToAddANewConditionPleaseTryAgain')}
</div>
} }
{ {
@ -50,8 +52,13 @@ class AddSpecificationModalContent extends Component {
<div> <div>
<Alert kind={kinds.INFO}> <Alert kind={kinds.INFO}>
<div>Radarr supports custom conditions against the release properties below.</div> <div>
<div>Visit <Link to='https://github.com/Radarr/Radarr/wiki/Custom-Formats-Aphrodite'>GitHub</Link> for more details.</div> {translate('RadarrSupportsCustomConditionsAgainstTheReleasePropertiesBelow')}
</div>
<div>
{translate('VisitGithubCustomFormatsAphrodite')}
<Link to="https://github.com/Radarr/Radarr/wiki/Custom-Formats-Aphrodite">GitHub</Link>
</div>
</Alert> </Alert>
<div className={styles.specifications}> <div className={styles.specifications}>

View File

@ -51,8 +51,14 @@ function EditSpecificationModalContent(props) {
{ {
fields && fields.some((x) => x.label === 'Regular Expression') && fields && fields.some((x) => x.label === 'Regular Expression') &&
<Alert kind={kinds.INFO}> <Alert kind={kinds.INFO}>
<div>This condition matches using Regular Expressions. See <Link to="https://www.regular-expressions.info/tutorial.html">here</Link> for details. Note that the characters <code>{'\\^$.|?*+()[{'}</code> have special meanings and need escaping with a <code>\</code></div> <div>
<div>Regular expressions can be tested <Link to="http://regexstorm.net/tester">here</Link>.</div> <div dangerouslySetInnerHTML={{ __html: translate('ThisConditionMatchesUsingRegularExpressions', ['<code>\\^$.|?*+()[{</code>', '<code>\\</code>']) }} />
{translate('MoreDetails')} <Link to="https://www.regular-expressions.info/tutorial.html">{translate('LinkHere')}</Link>
</div>
<div>
{translate('RegularExpressionsCanBeTested')}
<Link to="http://regexstorm.net/tester">{translate('LinkHere')}</Link>
</div>
</Alert> </Alert>
} }

View File

@ -43,7 +43,9 @@ class AddDownloadClientModalContent extends Component {
{ {
!isSchemaFetching && !!schemaError && !isSchemaFetching && !!schemaError &&
<div>Unable to add a new downloadClient, please try again.</div> <div>
{translate('UnableToAddANewDownloadClientPleaseTryAgain')}
</div>
} }
{ {
@ -51,8 +53,12 @@ class AddDownloadClientModalContent extends Component {
<div> <div>
<Alert kind={kinds.INFO}> <Alert kind={kinds.INFO}>
<div>Radarr supports any downloadClient that uses the Newznab standard, as well as other downloadClients listed below.</div> <div>
<div>For more information on the individual downloadClients, clink on the info buttons.</div> {translate('RadarrSupportsAnyDownloadClient')}
</div>
<div>
{translate('ForMoreInformationOnTheIndividualDownloadClients')}
</div>
</Alert> </Alert>
<FieldSet legend={translate('Usenet')}> <FieldSet legend={translate('Usenet')}>

View File

@ -64,7 +64,9 @@ class EditDownloadClientModalContent extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new download client, please try again.</div> <div>
{translate('UnableToAddANewDownloadClientPleaseTryAgain')}
</div>
} }
{ {

View File

@ -28,7 +28,9 @@ function DownloadClientOptions(props) {
{ {
!isFetching && error && !isFetching && error &&
<div>Unable to load download client options</div> <div>
{translate('UnableToLoadDownloadClientOptions')}
</div>
} }
{ {

View File

@ -52,7 +52,9 @@ function EditRemotePathMappingModalContent(props) {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new remote path mapping, please try again.</div> <div>
{translate('UnableToAddANewRemotePathMappingPleaseTryAgain')}
</div>
} }
{ {

View File

@ -126,7 +126,9 @@ class GeneralSettings extends Component {
{ {
!isFetching && error && !isFetching && error &&
<div>Unable to load General settings</div> <div>
{translate('UnableToLoadGeneralSettings')}
</div>
} }
{ {

View File

@ -50,7 +50,9 @@ function EditImportExclusionModalContent(props) {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new list exclusion, please try again.</div> <div>
{translate('UnableToAddANewListExclusionPleaseTryAgain')}
</div>
} }
{ {

View File

@ -43,7 +43,9 @@ class AddImportListModalContent extends Component {
{ {
!isSchemaFetching && !!schemaError && !isSchemaFetching && !!schemaError &&
<div>Unable to add a new list, please try again.</div> <div>
{translate('UnableToAddANewListPleaseTryAgain')}
</div>
} }
{ {
@ -51,8 +53,12 @@ class AddImportListModalContent extends Component {
<div> <div>
<Alert kind={kinds.INFO}> <Alert kind={kinds.INFO}>
<div>Radarr supports any RSS movie lists as well as the one stated below.</div> <div>
<div>For more information on the individual importLists, clink on the info buttons.</div> {translate('RadarrSupportsAnyRSSMovieListsAsWellAsTheOneStatedBelow')}
</div>
<div>
{translate('ForMoreInformationOnTheIndividualImportListsClinkOnTheInfoButtons')}
</div>
</Alert> </Alert>
{ {

View File

@ -63,7 +63,9 @@ function EditImportListModalContent(props) {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new list, please try again.</div> <div>
{translate('UnableToAddANewListPleaseTryAgain')}
</div>
} }
{ {

View File

@ -35,7 +35,9 @@ function ImportListOptions(props) {
{ {
!isFetching && error && !isFetching && error &&
<div>Unable to load list options</div> <div>
{translate('UnableToLoadListOptions')}
</div>
} }
{ {

View File

@ -43,7 +43,9 @@ class AddIndexerModalContent extends Component {
{ {
!isSchemaFetching && !!schemaError && !isSchemaFetching && !!schemaError &&
<div>Unable to add a new indexer, please try again.</div> <div>
{translate('UnableToAddANewIndexerPleaseTryAgain')}
</div>
} }
{ {
@ -51,8 +53,12 @@ class AddIndexerModalContent extends Component {
<div> <div>
<Alert kind={kinds.INFO}> <Alert kind={kinds.INFO}>
<div>Radarr supports any indexer that uses the Newznab standard, as well as other indexers listed below.</div> <div>
<div>For more information on the individual indexers, click on the info buttons.</div> {translate('RadarrSupportsAnyIndexer')}
</div>
<div>
{translate('ForMoreInformationOnTheIndividualIndexers')}
</div>
</Alert> </Alert>
<FieldSet legend={translate('Usenet')}> <FieldSet legend={translate('Usenet')}>

View File

@ -60,7 +60,9 @@ function EditIndexerModalContent(props) {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new indexer, please try again.</div> <div>
{translate('UnableToAddANewIndexerPleaseTryAgain')}
</div>
} }
{ {

View File

@ -28,7 +28,9 @@ function IndexerOptions(props) {
{ {
!isFetching && error && !isFetching && error &&
<div>Unable to load indexer options</div> <div>
{translate('UnableToLoadIndexerOptions')}
</div>
} }
{ {

View File

@ -51,7 +51,7 @@ function EditRestrictionModalContent(props) {
name="required" name="required"
helpText={translate('RequiredHelpText')} helpText={translate('RequiredHelpText')}
kind={kinds.SUCCESS} kind={kinds.SUCCESS}
placeholder="Add new restriction" placeholder={translate('RequiredPlaceHolder')}
{...required} {...required}
onChange={onInputChange} onChange={onInputChange}
/> />
@ -65,7 +65,7 @@ function EditRestrictionModalContent(props) {
name="ignored" name="ignored"
helpText={translate('IgnoredHelpText')} helpText={translate('IgnoredHelpText')}
kind={kinds.DANGER} kind={kinds.DANGER}
placeholder="Add new restriction" placeholder={translate('IgnoredPlaceHolder')}
{...ignored} {...ignored}
onChange={onInputChange} onChange={onInputChange}
/> />

View File

@ -66,7 +66,9 @@ class MediaManagement extends Component {
{ {
!isFetching && error && !isFetching && error &&
<FieldSet legend={translate('NamingSettings')}> <FieldSet legend={translate('NamingSettings')}>
<div>Unable to load Media Management settings</div> <div>
{translate('UnableToLoadMediaManagementSettings')}
</div>
</FieldSet> </FieldSet>
} }
@ -197,8 +199,8 @@ class MediaManagement extends Component {
type={inputTypes.TEXT} type={inputTypes.TEXT}
name="extraFileExtensions" name="extraFileExtensions"
helpTexts={[ helpTexts={[
'Comma separated list of extra files to import (.nfo will be imported as .nfo-orig)', translate('ExtraFileExtensionsHelpTexts1'),
'Examples: ".sub, .nfo" or "sub,nfo"' translate('ExtraFileExtensionsHelpTexts2')
]} ]}
onChange={onInputChange} onChange={onInputChange}
{...settings.extraFileExtensions} {...settings.extraFileExtensions}
@ -353,8 +355,8 @@ class MediaManagement extends Component {
type={inputTypes.TEXT} type={inputTypes.TEXT}
name="fileChmod" name="fileChmod"
helpTexts={[ helpTexts={[
'Octal, applied to media files when imported/renamed by Radarr', translate('FileChmodHelpTexts1'),
'The same mode is applied to movie/sub folders with the execute bit added, e.g., 0644 becomes 0755' translate('FileChmodHelpTexts2')
]} ]}
onChange={onInputChange} onChange={onInputChange}
{...settings.fileChmod} {...settings.fileChmod}

View File

@ -110,7 +110,9 @@ class Naming extends Component {
{ {
!isFetching && error && !isFetching && error &&
<div>Unable to load Naming settings</div> <div>
{translate('UnableToLoadNamingSettings')}
</div>
} }
{ {

View File

@ -32,7 +32,9 @@ function MetadataOptions(props) {
{ {
!isFetching && error && !isFetching && error &&
<div>Unable to load indexer options</div> <div>
{translate('UnableToLoadIndexerOptions')}
</div>
} }
{ {

View File

@ -39,7 +39,9 @@ class AddNotificationModalContent extends Component {
{ {
!isSchemaFetching && !!schemaError && !isSchemaFetching && !!schemaError &&
<div>Unable to add a new notification, please try again.</div> <div>
{translate('UnableToAddANewNotificationPleaseTryAgain')}
</div>
} }
{ {

View File

@ -59,7 +59,9 @@ function EditNotificationModalContent(props) {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new notification, please try again.</div> <div>
{translate('UnableToAddANewNotificationPleaseTryAgain')}
</div>
} }
{ {

View File

@ -90,7 +90,7 @@ function NotificationEventItems(props) {
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="onDelete" name="onDelete"
helpText="On Delete" helpText={translate('OnDeleteHelpText')}
isDisabled={!supportsOnDelete.value} isDisabled={!supportsOnDelete.value}
{...onDelete} {...onDelete}
onChange={onInputChange} onChange={onInputChange}

View File

@ -57,7 +57,9 @@ function EditDelayProfileModalContent(props) {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new quality profile, please try again.</div> <div>
{translate('UnableToAddANewQualityProfilePleaseTryAgain')}
</div>
} }
{ {

View File

@ -146,7 +146,9 @@ class EditQualityProfileModalContent extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to add a new quality profile, please try again.</div> <div>
{translate('UnableToAddANewQualityProfilePleaseTryAgain')}
</div>
} }
{ {

View File

@ -1,6 +1,7 @@
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import React from 'react'; import React from 'react';
import formatBytes from 'Utilities/Number/formatBytes'; import formatBytes from 'Utilities/Number/formatBytes';
import translate from 'Utilities/String/translate';
function QualityDefinitionLimits(props) { function QualityDefinitionLimits(props) {
const { const {
@ -18,9 +19,15 @@ function QualityDefinitionLimits(props) {
return ( return (
<div> <div>
<div>60 Minutes: {sixty}</div> <div>
<div>90 Minutes: {ninety}</div> {translate('MinutesSixty', [sixty])}
<div>120 Minutes: {hundredTwenty}</div> </div>
<div>
{translate('MinutesNinety', [ninety])}
</div>
<div>
{translate('MinutesHundredTwenty', [hundredTwenty])}
</div>
</div> </div>
); );
} }

View File

@ -35,7 +35,9 @@ function TagDetailsModalContent(props) {
<ModalBody> <ModalBody>
{ {
!isTagUsed && !isTagUsed &&
<div>Tag is not used and can be deleted</div> <div>
{translate('TagIsNotUsedAndCanBeDeleted')}
</div>
} }
{ {

View File

@ -14,7 +14,9 @@ function Tags(props) {
if (!items.length) { if (!items.length) {
return ( return (
<div>No tags have been added yet</div> <div>
{translate('NoTagsHaveBeenAddedYet')}
</div>
); );
} }

View File

@ -80,7 +80,9 @@ class UISettings extends Component {
{ {
!isFetching && error && !isFetching && error &&
<div>Unable to load UI settings</div> <div>
{translate('UnableToLoadUISettings')}
</div>
} }
{ {

View File

@ -102,12 +102,16 @@ class Backups extends Component {
{ {
!isFetching && !!error && !isFetching && !!error &&
<div>Unable to load backups</div> <div>
{translate('UnableToLoadBackups')}
</div>
} }
{ {
noBackups && noBackups &&
<div>No backups are available</div> <div>
{translate('NoBackupsAreAvailable')}
</div>
} }
{ {

View File

@ -168,7 +168,9 @@ class RestoreBackupModalContent extends Component {
/> />
</div> </div>
<div>Restore</div> <div>
{translate('Restore')}
</div>
</div> </div>
<div className={styles.step}> <div className={styles.step}>
@ -179,7 +181,9 @@ class RestoreBackupModalContent extends Component {
/> />
</div> </div>
<div>Restart</div> <div>
{translate('Restart')}
</div>
</div> </div>
<div className={styles.step}> <div className={styles.step}>
@ -190,7 +194,9 @@ class RestoreBackupModalContent extends Component {
/> />
</div> </div>
<div>Reload</div> <div>
{translate('Reload')}
</div>
</div> </div>
</div> </div>
</ModalBody> </ModalBody>

View File

@ -32,7 +32,9 @@ function LogsTableDetailsModal(props) {
</ModalHeader> </ModalHeader>
<ModalBody> <ModalBody>
<div>Message</div> <div>
{translate('Message')}
</div>
<Scroller <Scroller
className={styles.detailsText} className={styles.detailsText}
@ -44,7 +46,9 @@ function LogsTableDetailsModal(props) {
{ {
!!exception && !!exception &&
<div> <div>
<div>Exception</div> <div>
{translate('Exception')}
</div>
<Scroller <Scroller
className={styles.detailsText} className={styles.detailsText}
scrollDirection={scrollDirections.HORIZONTAL} scrollDirection={scrollDirections.HORIZONTAL}

View File

@ -118,7 +118,9 @@ class LogFiles extends Component {
{ {
!isFetching && !items.length && !isFetching && !items.length &&
<div>No log files</div> <div>
{translate('NoLogFiles')}
</div>
} }
</PageContentBody> </PageContentBody>
</PageContent> </PageContent>

View File

@ -58,7 +58,9 @@ class Updates extends Component {
{ {
noUpdates && noUpdates &&
<div>No updates are available</div> <div>
{translate('NoUpdatesAreAvailable')}
</div>
} }
{ {
@ -162,7 +164,9 @@ class Updates extends Component {
{ {
!hasChanges && !hasChanges &&
<div>Maintenance release</div> <div>
{translate('MaintenanceRelease')}
</div>
} }
{ {

View File

@ -25,12 +25,8 @@ const translations = getTranslations();
export default function translate(key, args = '') { export default function translate(key, args = '') {
if (args) { if (args) {
const translatedKey = translate(key); const translatedKey = translate(key);
return translatedKey.replace(/(\{\{\d\}\}|\{\d\})/g, (translatedKeyDbl) => { return translatedKey.replace(/\{(\d+)\}/g, (match, index) => {
if (translatedKeyDbl.substring(0, 2) === '{{') { return args[index];
return translatedKeyDbl;
}
const match = parseInt(translatedKey.match(/\d/)[0]);
return args[match];
}); });
} }

View File

@ -34,6 +34,10 @@
"AppDataLocationHealthCheckMessage": "Updating will not be possible to prevent deleting AppData on Update", "AppDataLocationHealthCheckMessage": "Updating will not be possible to prevent deleting AppData on Update",
"Apply": "Apply", "Apply": "Apply",
"ApplyTags": "Apply Tags", "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?", "AreYouSureYouWantToDeleteThisDelayProfile": "Are you sure you want to delete this delay profile?",
"AreYouSureYouWantToDeleteThisImportListExclusion": "Are you sure you want to delete this import list exclusion?", "AreYouSureYouWantToDeleteThisImportListExclusion": "Are you sure you want to delete this import list exclusion?",
"AreYouSureYouWantToDeleteThisRemotePathMapping": "Are you sure you want to delete this remote path mapping?", "AreYouSureYouWantToDeleteThisRemotePathMapping": "Are you sure you want to delete this remote path mapping?",
@ -67,6 +71,7 @@
"Calendar": "Calendar", "Calendar": "Calendar",
"Cancel": "Cancel", "Cancel": "Cancel",
"CancelPendingTask": "Are you sure you want to cancel this pending task?", "CancelPendingTask": "Are you sure you want to cancel this pending task?",
"CantFindMovie": "Why can't I find my movie?",
"Cast": "Cast", "Cast": "Cast",
"CertificateValidation": "Certificate Validation", "CertificateValidation": "Certificate Validation",
"CertificateValidationHelpText": "Change how strict HTTPS certification validation is", "CertificateValidationHelpText": "Change how strict HTTPS certification validation is",
@ -104,6 +109,7 @@
"ConnectSettingsSummary": "Notifications, connections to media servers/players and custom scripts", "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", "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.", "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", "CreateEmptyMovieFolders": "Create empty movie folders",
"CreateEmptyMovieFoldersHelpText": "Create missing movie folders during disk scan", "CreateEmptyMovieFoldersHelpText": "Create missing movie folders during disk scan",
"CreateGroup": "Create group", "CreateGroup": "Create group",
@ -170,6 +176,8 @@
"DownloadClientStatusCheckSingleClientMessage": "Download clients unavailable due to failures: {0}", "DownloadClientStatusCheckSingleClientMessage": "Download clients unavailable due to failures: {0}",
"DownloadClientUnavailable": "Download client is unavailable", "DownloadClientUnavailable": "Download client is unavailable",
"Downloaded": "Downloaded", "Downloaded": "Downloaded",
"DownloadedAndMonitored": "Downloaded and Monitored",
"DownloadedButNotMonitored": "Downloaded, but not Monitored",
"DownloadFailed": "Download failed", "DownloadFailed": "Download failed",
"DownloadFailedCheckDownloadClientForMoreDetails": "Download failed: check download client for more details", "DownloadFailedCheckDownloadClientForMoreDetails": "Download failed: check download client for more details",
"DownloadFailedInterp": "Download failed: {0}", "DownloadFailedInterp": "Download failed: {0}",
@ -202,15 +210,23 @@
"EnableSslHelpText": " Requires restart running as administrator to take effect", "EnableSslHelpText": " Requires restart running as administrator to take effect",
"Ended": "Ended", "Ended": "Ended",
"Error": "Error", "Error": "Error",
"ErrorLoadingContents": "Error loading contents",
"ErrorLoadingPreviews": "Error loading previews",
"Events": "Events", "Events": "Events",
"EventType": "Event Type", "EventType": "Event Type",
"Exception": "Exception",
"Excluded": "Excluded",
"ExcludeMovie": "Exclude Movie", "ExcludeMovie": "Exclude Movie",
"ExistingMovies": "Existing Movie(s)", "ExistingMovies": "Existing Movie(s)",
"ExistingTag": "Existing tag", "ExistingTag": "Existing tag",
"Exluded": "Exluded",
"Extension": "Extension", "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", "Failed": "Failed",
"FailedDownloadHandling": "Failed Download Handling", "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", "FileChmodMode": "File chmod mode",
"FileDateHelpText": "Change file date on import/rescan", "FileDateHelpText": "Change file date on import/rescan",
"FileManagement": "File Management", "FileManagement": "File Management",
@ -219,6 +235,7 @@
"Files": "Files", "Files": "Files",
"Filesize": "Filesize", "Filesize": "Filesize",
"Filter": "Filter", "Filter": "Filter",
"FilterPlaceHolder": "Search movies",
"FirstDayOfWeek": "First Day of Week", "FirstDayOfWeek": "First Day of Week",
"Fixed": "Fixed", "Fixed": "Fixed",
"Folder": "Folder", "Folder": "Folder",
@ -226,6 +243,9 @@
"FollowPerson": "Follow Person", "FollowPerson": "Follow Person",
"Forecast": "Forecast", "Forecast": "Forecast",
"Formats": "Formats", "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", "FreeSpace": "Free Space",
"General": "General", "General": "General",
"GeneralSettings": "General Settings", "GeneralSettings": "General Settings",
@ -241,6 +261,7 @@
"GrabSelected": "Grab Selected", "GrabSelected": "Grab Selected",
"Group": "Group", "Group": "Group",
"HardlinkCopyFiles": "Hardlink/Copy Files", "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", "Health": "Health",
"HealthNoIssues": "No issues with your configuration", "HealthNoIssues": "No issues with your configuration",
"HelpText": "Interval in minutes. Set to zero to disable (this will stop all automatic release grabbing)", "HelpText": "Interval in minutes. Set to zero to disable (this will stop all automatic release grabbing)",
@ -257,6 +278,7 @@
"IgnoredAddresses": "Ignored Addresses", "IgnoredAddresses": "Ignored Addresses",
"IgnoreDeletedMovies": "Ignore Deleted Movies", "IgnoreDeletedMovies": "Ignore Deleted Movies",
"IgnoredHelpText": "The release will be rejected if it contains one or more of the terms (case insensitive)", "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", "IllRestartLater": "I'll restart later",
"Import": "Import", "Import": "Import",
"Imported": "Imported", "Imported": "Imported",
@ -307,6 +329,7 @@
"LastWriteTime": "Last Write Time", "LastWriteTime": "Last Write Time",
"LaunchBrowserHelpText": " Open a web browser and navigate to the Radarr homepage on app start.", "LaunchBrowserHelpText": " Open a web browser and navigate to the Radarr homepage on app start.",
"Level": "Level", "Level": "Level",
"LinkHere": "here",
"Links": "Links", "Links": "Links",
"ListExclusions": "List Exclusions", "ListExclusions": "List Exclusions",
"Lists": "Lists", "Lists": "Lists",
@ -314,6 +337,9 @@
"ListsSettingsSummary": "Import Lists, list exclusions", "ListsSettingsSummary": "Import Lists, list exclusions",
"ListSyncLevelHelpText": "Movies in library will be removed or unmonitored if not in your list", "ListSyncLevelHelpText": "Movies in library will be removed or unmonitored if not in your list",
"ListUpdateInterval": "List Update Interval", "ListUpdateInterval": "List Update Interval",
"LoadingMovieCreditsFailed": "Loading movie credits failed",
"LoadingMovieExtraFilesFailed": "Loading movie extra files failed",
"LoadingMovieFilesFailed": "Loading movie files failed",
"Local": "Local", "Local": "Local",
"Location": "Location", "Location": "Location",
"LogFiles": "Log Files", "LogFiles": "Log Files",
@ -322,6 +348,7 @@
"LogLevel": "Log Level", "LogLevel": "Log Level",
"LogLevelTraceHelpTextWarning": "Trace logging should only be enabled temporarily", "LogLevelTraceHelpTextWarning": "Trace logging should only be enabled temporarily",
"Logs": "Logs", "Logs": "Logs",
"MaintenanceRelease": "Maintenance release",
"Manual": "Manual", "Manual": "Manual",
"ManualImport": "Manual Import", "ManualImport": "Manual Import",
"MarkAsFailed": "Mark as Failed", "MarkAsFailed": "Mark as Failed",
@ -349,7 +376,12 @@
"MinimumFreeSpace": "Minimum Free Space", "MinimumFreeSpace": "Minimum Free Space",
"MinimumFreeSpaceWhenImportingHelpText": "Prevent import if it would leave less than this amount of disk space available", "MinimumFreeSpaceWhenImportingHelpText": "Prevent import if it would leave less than this amount of disk space available",
"MinimumLimits": "Minimum Limits", "MinimumLimits": "Minimum Limits",
"MinutesHundredTwenty": "120 Minutes: {0}",
"MinutesNinety": "90 Minutes: {0}",
"MinutesSixty": "60 Minutes: {0}",
"Missing": "Missing", "Missing": "Missing",
"MissingMonitoredAndConsideredAvailable": "Missing, Monitored and considered Available",
"MissingNotMonitored": "Missing, not Monitored",
"Mode": "Mode", "Mode": "Mode",
"Monitor": "Monitor", "Monitor": "Monitor",
"Monitored": "Monitored", "Monitored": "Monitored",
@ -363,6 +395,7 @@
"MonoVersionCheckOldNotSupportedMessage": "Currently installed Mono version {0} is old and unsupported. Please upgrade Mono to version {1}.", "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.", "MonoVersionCheckUpgradeRecommendedMessage": "Currently installed Mono version {0} is supported but upgrading to {1} is recommended.",
"Month": "Month", "Month": "Month",
"MoreDetails": "More details",
"MoreInfo": "More Info", "MoreInfo": "More Info",
"MountCheckMessage": "Mount containing a movie path is mounted read-only: ", "MountCheckMessage": "Mount containing a movie path is mounted read-only: ",
"MoveFiles": "Move Files", "MoveFiles": "Move Files",
@ -395,16 +428,22 @@
"NegateHelpText": "If checked, the custom format will not apply if this {0} condition matches.", "NegateHelpText": "If checked, the custom format will not apply if this {0} condition matches.",
"NetCore": ".NET Core", "NetCore": ".NET Core",
"New": "New", "New": "New",
"NoBackupsAreAvailable": "No backups are available",
"NoChange": "No Change", "NoChange": "No Change",
"NoChanges": "No Changes", "NoChanges": "No Changes",
"NoHistory": "No history",
"NoLeaveIt": "No, Leave It", "NoLeaveIt": "No, Leave It",
"NoLimitForAnyRuntime": "No limit for any runtime", "NoLimitForAnyRuntime": "No limit for any runtime",
"NoLogFiles": "No log files",
"NoMinimumForAnyRuntime": "No minimum for any runtime", "NoMinimumForAnyRuntime": "No minimum for any runtime",
"NoTagsHaveBeenAddedYet": "No tags have been added yet",
"NotAvailable": "Not Available", "NotAvailable": "Not Available",
"NotificationTriggers": "Notification Triggers", "NotificationTriggers": "Notification Triggers",
"NotMonitored": "Not Monitored", "NotMonitored": "Not Monitored",
"NoUpdatesAreAvailable": "No updates are available",
"OAuthPopupMessage": "Pop-ups are being blocked by your browser", "OAuthPopupMessage": "Pop-ups are being blocked by your browser",
"Ok": "Ok", "Ok": "Ok",
"OnDeleteHelpText": "On Delete",
"OnDownloadHelpText": "Be notified when movies are successfully imported", "OnDownloadHelpText": "Be notified when movies are successfully imported",
"OnGrabHelpText": "On Grab", "OnGrabHelpText": "On Grab",
"OnHealthIssueHelpText": "On Health Issue", "OnHealthIssueHelpText": "On Health Issue",
@ -473,6 +512,10 @@
"Queued": "Queued", "Queued": "Queued",
"QuickImport": "Quick Import", "QuickImport": "Quick Import",
"Radarr": "Radarr", "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", "RadarrTags": "Radarr Tags",
"Ratings": "Ratings", "Ratings": "Ratings",
"ReadTheWikiForMoreInformation": "Read the Wiki for more information", "ReadTheWikiForMoreInformation": "Read the Wiki for more information",
@ -489,6 +532,7 @@
"RefreshAndScan": "Refresh & Scan", "RefreshAndScan": "Refresh & Scan",
"RefreshInformationAndScanDisk": "Refresh information and scan disk", "RefreshInformationAndScanDisk": "Refresh information and scan disk",
"RefreshMovie": "Refresh movie", "RefreshMovie": "Refresh movie",
"RegularExpressionsCanBeTested": "Regular expressions can be tested ",
"RejectionCount": "Rejection Count", "RejectionCount": "Rejection Count",
"RelativePath": "Relative Path", "RelativePath": "Relative Path",
"ReleaseBranchCheckOfficialBranchMessage": "Branch {0} is not a valid Radarr release branch, you will not receive updates", "ReleaseBranchCheckOfficialBranchMessage": "Branch {0} is not a valid Radarr release branch, you will not receive updates",
@ -523,6 +567,7 @@
"ReplaceIllegalCharacters": "Replace Illegal Characters", "ReplaceIllegalCharacters": "Replace Illegal Characters",
"ReplaceIllegalCharactersHelpText": "Replace illegal characters. If unchecked, Radarr will remove them instead", "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.", "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", "RescanAfterRefreshHelpText": "Rescan the movie folder after refreshing the movie",
"RescanAfterRefreshHelpTextWarning": "Radarr will not automatically detect changes to files when not set to 'Always'", "RescanAfterRefreshHelpTextWarning": "Radarr will not automatically detect changes to files when not set to 'Always'",
"RescanMovieFolderAfterRefresh": "Rescan Movie Folder after Refresh", "RescanMovieFolderAfterRefresh": "Rescan Movie Folder after Refresh",
@ -532,6 +577,7 @@
"RestartNow": "Restart Now", "RestartNow": "Restart Now",
"RestartRadarr": "Restart Radarr", "RestartRadarr": "Restart Radarr",
"RestartRequiredHelpTextWarning": "Requires restart to take effect", "RestartRequiredHelpTextWarning": "Requires restart to take effect",
"Restore": "Restore",
"RestoreBackup": "Restore Backup", "RestoreBackup": "Restore Backup",
"Restrictions": "Restrictions", "Restrictions": "Restrictions",
"Result": "Result", "Result": "Result",
@ -629,6 +675,7 @@
"SSLCertPathHelpText": "Path to pfx file", "SSLCertPathHelpText": "Path to pfx file",
"SSLPort": "SSL Port", "SSLPort": "SSL Port",
"StandardMovieFormat": "Standard Movie Format", "StandardMovieFormat": "Standard Movie Format",
"StartTypingOrSelectAPathBelow": "Start typing or select a path below",
"StartupDirectory": "Startup directory", "StartupDirectory": "Startup directory",
"Status": "Status", "Status": "Status",
"Studio": "Studio", "Studio": "Studio",
@ -641,6 +688,7 @@
"TableOptions": "Table Options", "TableOptions": "Table Options",
"TableOptionsColumnsMessage": "Choose which columns are visible and which order they appear in", "TableOptionsColumnsMessage": "Choose which columns are visible and which order they appear in",
"TagCannotBeDeletedWhileInUse": "Cannot be deleted while in use", "TagCannotBeDeletedWhileInUse": "Cannot be deleted while in use",
"TagIsNotUsedAndCanBeDeleted": "Tag is not used and can be deleted",
"Tags": "Tags", "Tags": "Tags",
"TagsHelpText": "Applies to movies with at least one matching tag", "TagsHelpText": "Applies to movies with at least one matching tag",
"TagsSettingsSummary": "See all tags and how they are used. Unused tags can be removed", "TagsSettingsSummary": "See all tags and how they are used. Unused tags can be removed",
@ -650,6 +698,7 @@
"TestAllClients": "Test All Clients", "TestAllClients": "Test All Clients",
"TestAllIndexers": "Test All Indexers", "TestAllIndexers": "Test All Indexers",
"TestAllLists": "Test All Lists", "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", "Time": "Time",
"TimeFormat": "Time Format", "TimeFormat": "Time Format",
"Timeleft": "Timeleft", "Timeleft": "Timeleft",
@ -666,24 +715,49 @@
"UI": "UI", "UI": "UI",
"UISettings": "UI Settings", "UISettings": "UI Settings",
"UISettingsSummary": "Calendar, date and color impaired options", "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", "UnableToLoadCustomFormats": "Unable to load Custom Formats",
"UnableToLoadDelayProfiles": "Unable to load Delay Profiles", "UnableToLoadDelayProfiles": "Unable to load Delay Profiles",
"UnableToLoadDownloadClientOptions": "Unable to load download client options",
"UnableToLoadDownloadClients": "Unable to load download clients", "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", "UnableToLoadIndexers": "Unable to load Indexers",
"UnableToLoadLanguages": "Unable to load languages",
"UnableToLoadListExclusions": "Unable to load List Exclusions", "UnableToLoadListExclusions": "Unable to load List Exclusions",
"UnableToLoadListOptions": "Unable to load list options",
"UnableToLoadLists": "Unable to load Lists", "UnableToLoadLists": "Unable to load Lists",
"UnableToLoadMediaManagementSettings": "Unable to load Media Management settings",
"UnableToLoadMetadata": "Unable to load Metadata", "UnableToLoadMetadata": "Unable to load Metadata",
"UnableToLoadMovies": "Unable to load movies",
"UnableToLoadNamingSettings": "Unable to load Naming settings",
"UnableToLoadNotifications": "Unable to load Notifications", "UnableToLoadNotifications": "Unable to load Notifications",
"UnableToLoadQualities": "Unable to load qualities",
"UnableToLoadQualityDefinitions": "Unable to load Quality Definitions", "UnableToLoadQualityDefinitions": "Unable to load Quality Definitions",
"UnableToLoadQualityProfiles": "Unable to load Quality Profiles", "UnableToLoadQualityProfiles": "Unable to load Quality Profiles",
"UnableToLoadRemotePathMappings": "Unable to load Remote Path Mappings", "UnableToLoadRemotePathMappings": "Unable to load Remote Path Mappings",
"UnableToLoadRestrictions": "Unable to load Restrictions", "UnableToLoadRestrictions": "Unable to load Restrictions",
"UnableToLoadRootFolders": "Unable to load root folders",
"UnableToLoadTags": "Unable to load Tags", "UnableToLoadTags": "Unable to load Tags",
"UnableToLoadTheCalendar": "Unable to load the calendar",
"UnableToLoadUISettings": "Unable to load UI settings",
"Unavailable": "Unavailable", "Unavailable": "Unavailable",
"Ungroup": "Ungroup", "Ungroup": "Ungroup",
"UnmappedFolders": "Unmapped Folders", "UnmappedFolders": "Unmapped Folders",
"Unmonitored": "Unmonitored", "Unmonitored": "Unmonitored",
"UnmonitoredHelpText": "Include unmonitored movies in the iCal feed", "UnmonitoredHelpText": "Include unmonitored movies in the iCal feed",
"Unreleased": "Unreleased",
"UnsavedChanges": "Unsaved Changes", "UnsavedChanges": "Unsaved Changes",
"UnselectAll": "Unselect All", "UnselectAll": "Unselect All",
"UpdateAll": "Update All", "UpdateAll": "Update All",
@ -709,6 +783,7 @@
"Version": "Version", "Version": "Version",
"VideoCodec": "Video Codec", "VideoCodec": "Video Codec",
"View": "View", "View": "View",
"VisitGithubCustomFormatsAphrodite": "Visit Github for more details: ",
"WaitingToImport": "Waiting to Import", "WaitingToImport": "Waiting to Import",
"WaitingToProcess": "Waiting to Process", "WaitingToProcess": "Waiting to Process",
"Wanted": "Wanted", "Wanted": "Wanted",
@ -718,5 +793,6 @@
"WhitelistedHardcodedSubsHelpText": "Subtitle tags set here will not be considered hardcoded", "WhitelistedHardcodedSubsHelpText": "Subtitle tags set here will not be considered hardcoded",
"WhitelistedSubtitleTags": "Whitelisted Subtitle Tags", "WhitelistedSubtitleTags": "Whitelisted Subtitle Tags",
"Year": "Year", "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"
} }