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

Another translation update

This commit is contained in:
nitsua 2020-08-31 23:41:20 -04:00 committed by Qstick
parent 0d7bf98efb
commit 3a7b48825d
43 changed files with 183 additions and 100 deletions

View File

@ -24,7 +24,7 @@ function QueueDetails(props) {
return ( return (
<Icon <Icon
name={icons.PENDING} name={icons.PENDING}
title={`Release will be processed ${moment(estimatedCompletionTime).fromNow()}`} title={translate('ReleaseWillBeProcessedInterp', [moment(estimatedCompletionTime).fromNow()])}
/> />
); );
} }
@ -35,7 +35,7 @@ function QueueDetails(props) {
<Icon <Icon
name={icons.DOWNLOAD} name={icons.DOWNLOAD}
kind={kinds.DANGER} kind={kinds.DANGER}
title={`Import failed: ${errorMessage}`} title={translate('ImportFailedInterp', [errorMessage])}
/> />
); );
} }
@ -48,7 +48,7 @@ function QueueDetails(props) {
<Icon <Icon
name={icons.DOWNLOADING} name={icons.DOWNLOADING}
kind={kinds.DANGER} kind={kinds.DANGER}
title={`Download failed: ${errorMessage}`} title={translate('DownloadFailedInterp', [errorMessage])}
/> />
); );
} }
@ -77,7 +77,7 @@ function QueueDetails(props) {
return ( return (
<Icon <Icon
name={icons.DOWNLOADING} name={icons.DOWNLOADING}
title={`Movie is downloading - ${progress.toFixed(1)}% ${title}`} title={translate('MovieIsDownloadingInterp', [progress.toFixed(1), title])}
/> />
); );
} }

View File

@ -4,6 +4,7 @@ import Icon from 'Components/Icon';
import TableRowCell from 'Components/Table/Cells/TableRowCell'; import TableRowCell from 'Components/Table/Cells/TableRowCell';
import Popover from 'Components/Tooltip/Popover'; import Popover from 'Components/Tooltip/Popover';
import { icons, kinds, tooltipPositions } from 'Helpers/Props'; import { icons, kinds, tooltipPositions } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import styles from './QueueStatusCell.css'; import styles from './QueueStatusCell.css';
function getDetailedPopoverBody(statusMessages) { function getDetailedPopoverBody(statusMessages) {
@ -49,34 +50,34 @@ function QueueStatusCell(props) {
// status === 'downloading' // status === 'downloading'
let iconName = icons.DOWNLOADING; let iconName = icons.DOWNLOADING;
let iconKind = kinds.DEFAULT; let iconKind = kinds.DEFAULT;
let title = 'Downloading'; let title = translate('Downloading');
if (status === 'paused') { if (status === 'paused') {
iconName = icons.PAUSED; iconName = icons.PAUSED;
title = 'Paused'; title = translate('Paused');
} }
if (status === 'queued') { if (status === 'queued') {
iconName = icons.QUEUED; iconName = icons.QUEUED;
title = 'Queued'; title = translate('Queued');
} }
if (status === 'completed') { if (status === 'completed') {
iconName = icons.DOWNLOADED; iconName = icons.DOWNLOADED;
title = 'Downloaded'; title = translate('Downloaded');
if (trackedDownloadState === 'importPending') { if (trackedDownloadState === 'importPending') {
title += ' - Waiting to Import'; title += ` - ${translate('WaitingToImport')}`;
iconKind = kinds.PURPLE; iconKind = kinds.PURPLE;
} }
if (trackedDownloadState === 'importing') { if (trackedDownloadState === 'importing') {
title += ' - Importing'; title += ` - ${translate('Importing')}`;
iconKind = kinds.PURPLE; iconKind = kinds.PURPLE;
} }
if (trackedDownloadState === 'failedPending') { if (trackedDownloadState === 'failedPending') {
title += ' - Waiting to Process'; title += ` - ${translate('WaitingToProcess')}`;
iconKind = kinds.DANGER; iconKind = kinds.DANGER;
} }
} }
@ -87,36 +88,37 @@ function QueueStatusCell(props) {
if (status === 'delay') { if (status === 'delay') {
iconName = icons.PENDING; iconName = icons.PENDING;
title = 'Pending'; title = translate('Pending');
} }
if (status === 'DownloadClientUnavailable') { if (status === 'DownloadClientUnavailable') {
iconName = icons.PENDING; iconName = icons.PENDING;
iconKind = kinds.WARNING; iconKind = kinds.WARNING;
title = 'Pending - Download client is unavailable'; title = `${translate('Pending')} - ${translate('DownloadClientUnavailable')}`;
} }
if (status === 'failed') { if (status === 'failed') {
iconName = icons.DOWNLOADING; iconName = icons.DOWNLOADING;
iconKind = kinds.DANGER; iconKind = kinds.DANGER;
title = 'Download failed'; title = translate('DownloadFailed');
} }
if (status === 'warning') { if (status === 'warning') {
iconName = icons.DOWNLOADING; iconName = icons.DOWNLOADING;
iconKind = kinds.WARNING; iconKind = kinds.WARNING;
title = `Download warning: ${errorMessage || 'check download client for more details'}`; const warningMessage = errorMessage || translate('CheckDownloadClientForDetails');
title = translate('DownloadWarning', [warningMessage]);
} }
if (hasError) { if (hasError) {
if (status === 'completed') { if (status === 'completed') {
iconName = icons.DOWNLOAD; iconName = icons.DOWNLOAD;
iconKind = kinds.DANGER; iconKind = kinds.DANGER;
title = `Import failed: ${sourceTitle}`; title = translate('ImportFailed', [sourceTitle]);
} else { } else {
iconName = icons.DOWNLOADING; iconName = icons.DOWNLOADING;
iconKind = kinds.DANGER; iconKind = kinds.DANGER;
title = 'Download failed'; title = translate('DownloadFailed');
} }
} }
@ -148,8 +150,8 @@ QueueStatusCell.propTypes = {
}; };
QueueStatusCell.defaultProps = { QueueStatusCell.defaultProps = {
trackedDownloadStatus: 'Ok', trackedDownloadStatus: translate('Ok'),
trackedDownloadState: 'Downloading' trackedDownloadState: translate('Downloading')
}; };
export default QueueStatusCell; export default QueueStatusCell;

View File

@ -5,6 +5,7 @@ import formatTime from 'Utilities/Date/formatTime';
import formatTimeSpan from 'Utilities/Date/formatTimeSpan'; import formatTimeSpan from 'Utilities/Date/formatTimeSpan';
import getRelativeDate from 'Utilities/Date/getRelativeDate'; import getRelativeDate from 'Utilities/Date/getRelativeDate';
import formatBytes from 'Utilities/Number/formatBytes'; import formatBytes from 'Utilities/Number/formatBytes';
import translate from 'Utilities/String/translate';
import styles from './TimeleftCell.css'; import styles from './TimeleftCell.css';
function TimeleftCell(props) { function TimeleftCell(props) {
@ -26,7 +27,7 @@ function TimeleftCell(props) {
return ( return (
<TableRowCell <TableRowCell
className={styles.timeleft} className={styles.timeleft}
title={`Delaying download until ${date} at ${time}`} title={translate('DelayingDownloadUntilInterp', [date, time])}
> >
- -
</TableRowCell> </TableRowCell>
@ -40,7 +41,7 @@ function TimeleftCell(props) {
return ( return (
<TableRowCell <TableRowCell
className={styles.timeleft} className={styles.timeleft}
title={`Retrying download ${date} at ${time}`} title={translate('RetryingDownloadInterp', [date, time])}
> >
- -
</TableRowCell> </TableRowCell>

View File

@ -109,7 +109,7 @@ class AddNewMovieModalContent extends Component {
movieFolder: folder, movieFolder: folder,
isWindows isWindows
}} }}
helpText={`'${folder}' subfolder will be created automatically`} helpText={translate('SubfolderWillBeCreatedAutomaticallyInterp', [folder])}
onChange={onInputChange} onChange={onInputChange}
{...rootFolderPath} {...rootFolderPath}
/> />

View File

@ -3,6 +3,7 @@ import React from 'react';
import QueueDetails from 'Activity/Queue/QueueDetails'; import QueueDetails from 'Activity/Queue/QueueDetails';
import CircularProgressBar from 'Components/CircularProgressBar'; import CircularProgressBar from 'Components/CircularProgressBar';
import colors from 'Styles/Variables/colors'; import colors from 'Styles/Variables/colors';
import translate from 'Utilities/String/translate';
function CalendarEventQueueDetails(props) { function CalendarEventQueueDetails(props) {
const { const {
@ -25,7 +26,7 @@ function CalendarEventQueueDetails(props) {
status={status} status={status}
errorMessage={errorMessage} errorMessage={errorMessage}
progressBar={ progressBar={
<div title={`Movie is downloading - ${progress.toFixed(1)}% ${title}`}> <div title={translate('MovieIsDownloadingInterp', [progress.toFixed(1), title])}>
<CircularProgressBar <CircularProgressBar
progress={progress} progress={progress}
size={20} size={20}

View File

@ -286,7 +286,7 @@ class DiscoverMovie extends Component {
onPress={this.onImportListSyncPress} onPress={this.onImportListSyncPress}
/> />
<PageToolbarButton <PageToolbarButton
label={allSelected ? 'Unselect All' : 'Select All'} label={allSelected ? translate('UnselectAll') : translate('SelectAll')}
iconName={icons.CHECK_SQUARE} iconName={icons.CHECK_SQUARE}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onSelectAllPress} onPress={this.onSelectAllPress}

View File

@ -219,7 +219,7 @@ class DiscoverMovieFooter extends Component {
<div className={styles.buttonContainer}> <div className={styles.buttonContainer}>
<div className={styles.buttonContainerContent}> <div className={styles.buttonContainerContent}>
<DiscoverMovieFooterLabel <DiscoverMovieFooterLabel
label={`${selectedCount} Movie(s) Selected`} label={translate('MoviesSelectedInterp', [selectedCount])}
isSaving={false} isSaving={false}
/> />

View File

@ -156,7 +156,7 @@ class DiscoverMovieOverview extends Component {
className={styles.alreadyExistsIcon} className={styles.alreadyExistsIcon}
name={icons.CHECK_CIRCLE} name={icons.CHECK_CIRCLE}
size={30} size={30}
title={'Already in your Library'} title={translate('AlreadyInYourLibrary')}
/> : null /> : null
} }
{ {
@ -192,7 +192,7 @@ class DiscoverMovieOverview extends Component {
<IconButton <IconButton
name={icons.REMOVE} name={icons.REMOVE}
title={isExcluded ? 'Movie already Excluded' : 'Exclude Movie'} title={isExcluded ? translate('MovieAlreadyExcluded') : translate('ExcludeMovie')}
onPress={this.onExcludeMoviePress} onPress={this.onExcludeMoviePress}
isDisabled={isExcluded} isDisabled={isExcluded}
/> />

View File

@ -132,12 +132,12 @@ class DiscoverMovieOverviewOptionsModalContent extends Component {
<ModalBody> <ModalBody>
<Form> <Form>
<FormGroup> <FormGroup>
<FormLabel>Include Radarr Recommendations</FormLabel> <FormLabel>{translate('IncludeRadarrRecommendations')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="includeRecommendations" name="includeRecommendations"
value={includeRecommendations} value={includeRecommendations}
helpText="Include Radarr recommended movies in discovery view" helpText={translate('IncludeRecommendationsHelpText')}
onChange={this.onChangeOption} onChange={this.onChangeOption}
/> />
</FormGroup> </FormGroup>
@ -155,7 +155,7 @@ class DiscoverMovieOverviewOptionsModalContent extends Component {
</FormGroup> </FormGroup>
<FormGroup> <FormGroup>
<FormLabel>Show Genres</FormLabel> <FormLabel>{translate('ShowGenres')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
@ -177,7 +177,7 @@ class DiscoverMovieOverviewOptionsModalContent extends Component {
</FormGroup> </FormGroup>
<FormGroup> <FormGroup>
<FormLabel>Show Year</FormLabel> <FormLabel>{translate('ShowYear')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
@ -188,7 +188,7 @@ class DiscoverMovieOverviewOptionsModalContent extends Component {
</FormGroup> </FormGroup>
<FormGroup> <FormGroup>
<FormLabel>Show Ratings</FormLabel> <FormLabel>{translate('ShowRatings')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
@ -199,7 +199,7 @@ class DiscoverMovieOverviewOptionsModalContent extends Component {
</FormGroup> </FormGroup>
<FormGroup> <FormGroup>
<FormLabel>Show Certification</FormLabel> <FormLabel>{translate('ShowCertification')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}

View File

@ -126,7 +126,7 @@ class DiscoverMoviePoster extends Component {
<IconButton <IconButton
className={styles.action} className={styles.action}
name={icons.REMOVE} name={icons.REMOVE}
title={isExcluded ? 'Movie already Excluded' : 'Exclude Movie'} title={isExcluded ? translate('MovieAlreadyExcluded') : translate('ExcludeMovie')}
onPress={this.onExcludeMoviePress} onPress={this.onExcludeMoviePress}
isDisabled={isExcluded} isDisabled={isExcluded}
/> />

View File

@ -104,13 +104,13 @@ class DiscoverMoviePosterOptionsModalContent extends Component {
<ModalBody> <ModalBody>
<Form> <Form>
<FormGroup> <FormGroup>
<FormLabel>Include Radarr Recommendations</FormLabel> <FormLabel>{translate('IncludeRadarrRecommendations')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="includeRecommendations" name="includeRecommendations"
value={includeRecommendations} value={includeRecommendations}
helpText="Include Radarr recommended movies in discovery view" helpText={translate('IncludeRecommendationsHelpText')}
onChange={this.onChangeOption} onChange={this.onChangeOption}
/> />
</FormGroup> </FormGroup>

View File

@ -142,7 +142,7 @@ class DiscoverMovieRow extends Component {
<Icon <Icon
className={styles.alreadyExistsIcon} className={styles.alreadyExistsIcon}
name={icons.CHECK_CIRCLE} name={icons.CHECK_CIRCLE}
title={'Already in your Library'} title={translate('AlreadyInYourLibrary')}
/> : null /> : null
} }
@ -151,7 +151,7 @@ class DiscoverMovieRow extends Component {
<Icon <Icon
className={styles.exclusionIcon} className={styles.exclusionIcon}
name={icons.DANGER} name={icons.DANGER}
title={'Movie Excluded From Automatic Add'} title={translate('MovieExcludedFromAutomaticAdd')}
/> : null /> : null
} }
</VirtualTableRowCell> </VirtualTableRowCell>
@ -322,7 +322,7 @@ class DiscoverMovieRow extends Component {
<IconButton <IconButton
name={icons.REMOVE} name={icons.REMOVE}
title={isExcluded ? 'Movie already Excluded' : 'Exclude Movie'} title={isExcluded ? translate('MovieAlreadyExcluded') : translate('ExcludeMovie')}
onPress={this.onExcludeMoviePress} onPress={this.onExcludeMoviePress}
isDisabled={isExcluded} isDisabled={isExcluded}
/> />

View File

@ -4,6 +4,7 @@ import FormGroup from 'Components/Form/FormGroup';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import { inputTypes } from 'Helpers/Props'; import { inputTypes } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
class DiscoverMovieTableOptions extends Component { class DiscoverMovieTableOptions extends Component {
@ -51,13 +52,13 @@ class DiscoverMovieTableOptions extends Component {
return ( return (
<FormGroup> <FormGroup>
<FormLabel>Include Radarr Recommendations</FormLabel> <FormLabel>{translate('IncludeRadarrRecommendations')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="includeRecommendations" name="includeRecommendations"
value={includeRecommendations} value={includeRecommendations}
helpText="Include Radarr recommended movies in discovery view" helpText={translate('IncludeRecommendationsHelpText')}
onChange={this.onChangeOption} onChange={this.onChangeOption}
/> />
</FormGroup> </FormGroup>

View File

@ -173,7 +173,7 @@ class InteractiveImportRow extends Component {
<TableRowCellButton <TableRowCellButton
isDisabled={!allowMovieChange} isDisabled={!allowMovieChange}
title={allowMovieChange ? 'Click to change movie' : undefined} title={allowMovieChange ? translate('ClickToChangeMovie') : undefined}
onPress={this.onSelectMoviePress} onPress={this.onSelectMoviePress}
> >
{ {

View File

@ -267,7 +267,7 @@ class InteractiveSearchRow extends Component {
isOpen={this.state.isConfirmGrabModalOpen} isOpen={this.state.isConfirmGrabModalOpen}
kind={kinds.WARNING} kind={kinds.WARNING}
title={translate('GrabRelease')} title={translate('GrabRelease')}
message={`Radarr was unable to determine which movie this release was for. Radarr may be unable to automatically import this release. Do you want to grab '${title}'?`} message={translate('GrabReleaseMessageText', [title])}
confirmLabel={translate('Grab')} confirmLabel={translate('Grab')}
onConfirm={this.onGrabConfirm} onConfirm={this.onGrabConfirm}
onCancel={this.onGrabCancel} onCancel={this.onGrabCancel}

View File

@ -380,7 +380,7 @@ class MovieDetails extends Component {
className={styles.movieNavigationButton} className={styles.movieNavigationButton}
name={icons.ARROW_LEFT} name={icons.ARROW_LEFT}
size={30} size={30}
title={`Go to ${previousMovie.title}`} title={translate('GoToInterp', [previousMovie.title])}
to={`/movie/${previousMovie.titleSlug}`} to={`/movie/${previousMovie.titleSlug}`}
/> />
@ -388,7 +388,7 @@ class MovieDetails extends Component {
className={styles.movieNavigationButton} className={styles.movieNavigationButton}
name={icons.ARROW_RIGHT} name={icons.ARROW_RIGHT}
size={30} size={30}
title={`Go to ${nextMovie.title}`} title={translate('GoToInterp', [nextMovie.title])}
to={`/movie/${nextMovie.titleSlug}`} to={`/movie/${nextMovie.titleSlug}`}
/> />
</div> </div>

View File

@ -225,7 +225,7 @@ class MovieEditorFooter extends Component {
<div className={styles.buttonContainer}> <div className={styles.buttonContainer}>
<div className={styles.buttonContainerContent}> <div className={styles.buttonContainerContent}>
<MovieEditorFooterLabel <MovieEditorFooterLabel
label={`${selectedCount} Movie(s) Selected`} label={translate('MoviesSelectedInterp', [selectedCount])}
isSaving={false} isSaving={false}
/> />

View File

@ -121,7 +121,7 @@ class TagsModalContent extends Component {
return ( return (
<Label <Label
key={tag.id} key={tag.id}
title={removeTag ? 'Removing tag' : 'Existing tag'} title={removeTag ? translate('RemovingTag') : translate('ExistingTag')}
kind={removeTag ? kinds.INVERSE : kinds.INFO} kind={removeTag ? kinds.INVERSE : kinds.INFO}
size={sizes.LARGE} size={sizes.LARGE}
> >
@ -147,7 +147,7 @@ class TagsModalContent extends Component {
return ( return (
<Label <Label
key={tag.id} key={tag.id}
title={'Adding tag'} title={translate('AddingTag')}
kind={kinds.SUCCESS} kind={kinds.SUCCESS}
size={sizes.LARGE} size={sizes.LARGE}
> >

View File

@ -129,7 +129,7 @@ class MovieHistoryRow extends Component {
isOpen={isMarkAsFailedModalOpen} isOpen={isMarkAsFailedModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('MarkAsFailed')} title={translate('MarkAsFailed')}
message={`Are you sure you want to mark '${sourceTitle}' as failed?`} message={translate('MarkAsFailedMessageText', [sourceTitle])}
confirmLabel={translate('MarkAsFailed')} confirmLabel={translate('MarkAsFailed')}
onConfirm={this.onConfirmMarkAsFailed} onConfirm={this.onConfirmMarkAsFailed}
onCancel={this.onMarkAsFailedModalClose} onCancel={this.onMarkAsFailedModalClose}

View File

@ -4,6 +4,7 @@ import Icon from 'Components/Icon';
import VirtualTableRowCell from 'Components/Table/Cells/TableRowCell'; import VirtualTableRowCell from 'Components/Table/Cells/TableRowCell';
import { icons } from 'Helpers/Props'; import { icons } from 'Helpers/Props';
import { getMovieStatusDetails } from 'Movie/MovieStatus'; import { getMovieStatusDetails } from 'Movie/MovieStatus';
import translate from 'Utilities/String/translate';
import styles from './MovieStatusCell.css'; import styles from './MovieStatusCell.css';
function MovieStatusCell(props) { function MovieStatusCell(props) {
@ -25,7 +26,7 @@ function MovieStatusCell(props) {
<Icon <Icon
className={styles.statusIcon} className={styles.statusIcon}
name={monitored ? icons.MONITORED : icons.UNMONITORED} name={monitored ? icons.MONITORED : icons.UNMONITORED}
title={monitored ? 'Movie is monitored' : 'Movie is unmonitored'} title={monitored ? translate('MovieIsMonitored') : translate('MovieIsUnmonitored')}
/> />
<Icon <Icon

View File

@ -36,7 +36,7 @@ function MovieFileStatus(props) {
{...queueItem} {...queueItem}
progressBar={ progressBar={
<ProgressBar <ProgressBar
title={`Movie is downloading - ${progress.toFixed(1)}% ${queueItem.title}`} title={translate('MovieIsDownloadingInterp', [progress.toFixed(1), queueItem.title])}
progress={progress} progress={progress}
kind={kinds.PURPLE} kind={kinds.PURPLE}
size={sizes.MEDIUM} size={sizes.MEDIUM}

View File

@ -203,7 +203,7 @@ class MovieFileEditorRow extends Component {
ids={[id]} ids={[id]}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteSelectedMovieFiles')} title={translate('DeleteSelectedMovieFiles')}
message={'Are you sure you want to delete the selected movie files?'} message={translate('DeleteSelectedMovieFilesMessage')}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDelete} onConfirm={this.onConfirmDelete}
onCancel={this.onConfirmDeleteModalClose} onCancel={this.onConfirmDeleteModalClose}

View File

@ -16,7 +16,7 @@ function AdvancedSettingsButton(props) {
return ( return (
<Link <Link
className={styles.button} className={styles.button}
title={advancedSettings ? 'Shown, click to hide' : 'Hidden, click to show'} title={advancedSettings ? translate('ShownClickToHide') : translate('HiddenClickToShow')}
onPress={onAdvancedSettingsPress} onPress={onAdvancedSettingsPress}
> >
<Icon <Icon

View File

@ -93,7 +93,7 @@ function EditSpecificationModalContent(props) {
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="negate" name="negate"
{...negate} {...negate}
helpText={`If checked, the custom format will not apply if this ${implementationName} condition matches.`} helpText={translate('NegateHelpText', [implementationName])}
onChange={onInputChange} onChange={onInputChange}
/> />
</FormGroup> </FormGroup>
@ -107,7 +107,7 @@ function EditSpecificationModalContent(props) {
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="required" name="required"
{...required} {...required}
helpText={`This ${implementationName} condition must match for the custom format to apply. Otherwise a single ${implementationName} match is sufficient.`} helpText={translate('RequiredHelpText', [implementationName, implementationName])}
onChange={onInputChange} onChange={onInputChange}
/> />
</FormGroup> </FormGroup>

View File

@ -105,7 +105,7 @@ class DownloadClient extends Component {
isOpen={this.state.isDeleteDownloadClientModalOpen} isOpen={this.state.isDeleteDownloadClientModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteDownloadClient')} title={translate('DeleteDownloadClient')}
message={`Are you sure you want to delete the download client '${name}'?`} message={translate('DeleteDownloadClientMessageText', [name])}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteDownloadClient} onConfirm={this.onConfirmDeleteDownloadClient}
onCancel={this.onDeleteDownloadClientModalClose} onCancel={this.onDeleteDownloadClientModalClose}

View File

@ -115,7 +115,7 @@ function HostSettings(props) {
advancedSettings={advancedSettings} advancedSettings={advancedSettings}
isAdvanced={true} isAdvanced={true}
> >
<FormLabel>{translate('SSLCertPath')}</FormLabel> <FormLabel>{translate('SslCertPath')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.TEXT} type={inputTypes.TEXT}

View File

@ -32,7 +32,7 @@ function LoggingSettings(props) {
type={inputTypes.SELECT} type={inputTypes.SELECT}
name="logLevel" name="logLevel"
values={logLevelOptions} values={logLevelOptions}
helpTextWarning={logLevel.value === 'trace' ? 'Trace logging should only be enabled temporarily' : undefined} helpTextWarning={logLevel.value === 'trace' ? translate('LogLevelTraceHelpTextWarning') : undefined}
onChange={onInputChange} onChange={onInputChange}
{...logLevel} {...logLevel}
/> />

View File

@ -54,7 +54,7 @@ function UpdateSettings(props) {
<FormInputGroup <FormInputGroup
type={inputTypes.TEXT} type={inputTypes.TEXT}
name="branch" name="branch"
helpText={usingExternalUpdateMechanism ? 'Branch used by external update mechanism' : 'Branch to use to update Radarr'} helpText={usingExternalUpdateMechanism ? translate('BranchUpdateMechanism') : translate('BranchUpdate')}
helpLink="https://github.com/Radarr/Radarr/wiki/Release-Branches" helpLink="https://github.com/Radarr/Radarr/wiki/Release-Branches"
{...branch} {...branch}
onChange={onInputChange} onChange={onInputChange}

View File

@ -121,12 +121,12 @@ function EditImportListModalContent(props) {
{ {
shouldMonitor && shouldMonitor &&
<FormGroup> <FormGroup>
<FormLabel>Search on Add</FormLabel> <FormLabel>{translate('SearchOnAdd')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="searchOnAdd" name="searchOnAdd"
helpText="Search for movies on this list when added to Radarr" helpText={translate('SearchOnAddHelpText')}
{...searchOnAdd} {...searchOnAdd}
onChange={onInputChange} onChange={onInputChange}
/> />

View File

@ -107,7 +107,7 @@ class ImportList extends Component {
isOpen={this.state.isDeleteImportListModalOpen} isOpen={this.state.isDeleteImportListModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteList')} title={translate('DeleteList')}
message={`Are you sure you want to delete the list '${name}'?`} message={translate('DeleteListMessageText', [name])}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteImportList} onConfirm={this.onConfirmDeleteImportList}
onCancel={this.onDeleteImportListModalClose} onCancel={this.onDeleteImportListModalClose}

View File

@ -83,7 +83,7 @@ function EditIndexerModalContent(props) {
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="enableRss" name="enableRss"
helpTextWarning={supportsRss.value ? undefined : 'RSS is not supported with this indexer'} helpTextWarning={supportsRss.value ? undefined : translate('RSSIsNotSupportedWithThisIndexer')}
isDisabled={!supportsRss.value} isDisabled={!supportsRss.value}
{...enableRss} {...enableRss}
onChange={onInputChange} onChange={onInputChange}
@ -96,8 +96,8 @@ function EditIndexerModalContent(props) {
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="enableAutomaticSearch" name="enableAutomaticSearch"
helpText={supportsSearch.value ? 'Will be used when automatic searches are performed via the UI or by Radarr' : undefined} helpText={supportsSearch.value ? translate('EnableAutomaticSearchHelpText') : undefined}
helpTextWarning={supportsSearch.value ? undefined : 'Search is not supported with this indexer'} helpTextWarning={supportsSearch.value ? undefined : translate('EnableAutomaticSearchHelpTextWarning')}
isDisabled={!supportsSearch.value} isDisabled={!supportsSearch.value}
{...enableAutomaticSearch} {...enableAutomaticSearch}
onChange={onInputChange} onChange={onInputChange}
@ -110,8 +110,8 @@ function EditIndexerModalContent(props) {
<FormInputGroup <FormInputGroup
type={inputTypes.CHECK} type={inputTypes.CHECK}
name="enableInteractiveSearch" name="enableInteractiveSearch"
helpText={supportsSearch.value ? 'Will be used when interactive search is used' : undefined} helpText={supportsSearch.value ? translate('EnableInteractiveSearchHelpText') : undefined}
helpTextWarning={supportsSearch.value ? undefined : 'Search is not supported with this indexer'} helpTextWarning={supportsSearch.value ? undefined : translate('EnableInteractiveSearchHelpTextWarning')}
isDisabled={!supportsSearch.value} isDisabled={!supportsSearch.value}
{...enableInteractiveSearch} {...enableInteractiveSearch}
onChange={onInputChange} onChange={onInputChange}

View File

@ -136,7 +136,7 @@ class Indexer extends Component {
isOpen={this.state.isDeleteIndexerModalOpen} isOpen={this.state.isDeleteIndexerModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteIndexer')} title={translate('DeleteIndexer')}
message={`Are you sure you want to delete the indexer '${name}'?`} message={translate('DeleteIndexerMessageText', [name])}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteIndexer} onConfirm={this.onConfirmDeleteIndexer}
onCancel={this.onDeleteIndexerModalClose} onCancel={this.onDeleteIndexerModalClose}

View File

@ -106,7 +106,7 @@ function IndexerOptions(props) {
advancedSettings={advancedSettings} advancedSettings={advancedSettings}
isAdvanced={true} isAdvanced={true}
> >
<FormLabel>{translate('RSSSyncInterval')}</FormLabel> <FormLabel>{translate('RssSyncInterval')}</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.NUMBER} type={inputTypes.NUMBER}

View File

@ -122,7 +122,7 @@ class Restriction extends Component {
isOpen={this.state.isDeleteRestrictionModalOpen} isOpen={this.state.isDeleteRestrictionModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteRestriction')} title={translate('DeleteRestriction')}
message={'Are you sure you want to delete this restriction?'} message={translate('DeleteRestrictionHelpText')}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteRestriction} onConfirm={this.onConfirmDeleteRestriction}
onCancel={this.onDeleteRestrictionModalClose} onCancel={this.onDeleteRestrictionModalClose}

View File

@ -142,7 +142,7 @@ class Notification extends Component {
isOpen={this.state.isDeleteNotificationModalOpen} isOpen={this.state.isDeleteNotificationModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteNotification')} title={translate('DeleteNotification')}
message={`Are you sure you want to delete the notification '${name}'?`} message={translate('DeleteNotificationMessageText', [name])}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteNotification} onConfirm={this.onConfirmDeleteNotification}
onCancel={this.onDeleteNotificationModalClose} onCancel={this.onDeleteNotificationModalClose}

View File

@ -105,7 +105,7 @@ class QualityProfile extends Component {
<Label <Label
key={item.quality.id} key={item.quality.id}
kind={isCutoff ? kinds.INFO : kinds.default} kind={isCutoff ? kinds.INFO : kinds.default}
title={isCutoff ? 'Upgrade until this quality is met or exceeded' : null} title={isCutoff ? translate('UpgradeUntilThisQualityIsMetOrExceeded') : null}
> >
{item.quality.name} {item.quality.name}
</Label> </Label>
@ -121,7 +121,7 @@ class QualityProfile extends Component {
anchor={ anchor={
<Label <Label
kind={isCutoff ? kinds.INFO : kinds.default} kind={isCutoff ? kinds.INFO : kinds.default}
title={isCutoff ? 'Cutoff' : null} title={isCutoff ? translate('Cutoff') : null}
> >
{item.name} {item.name}
</Label> </Label>
@ -134,7 +134,7 @@ class QualityProfile extends Component {
<Label <Label
key={groupItem.quality.id} key={groupItem.quality.id}
kind={isCutoff ? kinds.INFO : kinds.default} kind={isCutoff ? kinds.INFO : kinds.default}
title={isCutoff ? 'Cutoff' : null} title={isCutoff ? translate('Cutoff') : null}
> >
{groupItem.quality.name} {groupItem.quality.name}
</Label> </Label>
@ -162,7 +162,7 @@ class QualityProfile extends Component {
isOpen={this.state.isDeleteQualityProfileModalOpen} isOpen={this.state.isDeleteQualityProfileModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteQualityProfile')} title={translate('DeleteQualityProfile')}
message={`Are you sure you want to delete the quality profile '${name}'?`} message={translate('QualityProfileDeleteConfirm', [name])}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
isSpinning={isDeleting} isSpinning={isDeleting}
onConfirm={this.onConfirmDeleteQualityProfile} onConfirm={this.onConfirmDeleteQualityProfile}

View File

@ -164,7 +164,7 @@ function TagDetailsModalContent(props) {
<Button <Button
className={styles.deleteButton} className={styles.deleteButton}
kind={kinds.DANGER} kind={kinds.DANGER}
title={isTagUsed ? 'Cannot be deleted while in use' : undefined} title={isTagUsed ? translate('TagCannotBeDeletedWhileInUse') : undefined}
isDisabled={isTagUsed} isDisabled={isTagUsed}
onPress={onDeleteTagPress} onPress={onDeleteTagPress}
> >

View File

@ -147,7 +147,7 @@ class Tag extends Component {
isOpen={isDeleteTagModalOpen} isOpen={isDeleteTagModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteTag')} title={translate('DeleteTag')}
message={`Are you sure you want to delete the tag '${label}'?`} message={translate('DeleteTagMessageText', [label])}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteTag} onConfirm={this.onConfirmDeleteTag}
onCancel={this.onDeleteTagModalClose} onCancel={this.onDeleteTagModalClose}

View File

@ -74,14 +74,14 @@ class BackupRow extends Component {
} = this.state; } = this.state;
let iconClassName = icons.SCHEDULED; let iconClassName = icons.SCHEDULED;
let iconTooltip = 'Scheduled'; let iconTooltip = translate('Scheduled');
if (type === 'manual') { if (type === 'manual') {
iconClassName = icons.INTERACTIVE; iconClassName = icons.INTERACTIVE;
iconTooltip = 'Manual'; iconTooltip = translate('Manual');
} else if (type === 'update') { } else if (type === 'update') {
iconClassName = icons.UPDATE; iconClassName = icons.UPDATE;
iconTooltip = 'Before update'; iconTooltip = translate('BeforeUpdate');
} }
return ( return (
@ -132,7 +132,7 @@ class BackupRow extends Component {
isOpen={isConfirmDeleteModalOpen} isOpen={isConfirmDeleteModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('DeleteBackup')} title={translate('DeleteBackup')}
message={`Are you sure you want to delete the backup '${name}'?`} message={translate('DeleteBackupMessageText', [name])}
confirmLabel={translate('Delete')} confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeletePress} onConfirm={this.onConfirmDeletePress}
onCancel={this.onConfirmDeleteModalClose} onCancel={this.onConfirmDeleteModalClose}

View File

@ -73,7 +73,7 @@ class About extends Component {
} }
<DescriptionListItem <DescriptionListItem
title={translate('DBMigration')} title={translate('DbMigration')}
data={migrationVersion} data={migrationVersion}
/> />

View File

@ -236,7 +236,7 @@ class QueuedTaskRow extends Component {
isOpen={isCancelConfirmModalOpen} isOpen={isCancelConfirmModalOpen}
kind={kinds.DANGER} kind={kinds.DANGER}
title={translate('Cancel')} title={translate('Cancel')}
message={'Are you sure you want to cancel this pending task?'} message={translate('CancelPendingTask')}
confirmLabel={translate('YesCancel')} confirmLabel={translate('YesCancel')}
cancelLabel={translate('NoLeaveIt')} cancelLabel={translate('NoLeaveIt')}
onConfirm={onCancelPress} onConfirm={onCancelPress}

View File

@ -22,7 +22,18 @@ function getTranslations() {
const translations = getTranslations(); const translations = getTranslations();
export default function translate(key) { 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];
});
}
const formatedKey = key.charAt(0).toLowerCase() + key.slice(1); const formatedKey = key.charAt(0).toLowerCase() + key.slice(1);
return translations[formatedKey] || key; return translations[formatedKey] || key;
} }

View File

@ -4,15 +4,16 @@
"Activity": "Activity", "Activity": "Activity",
"Added": "Added", "Added": "Added",
"AddExclusion": "Add Exclusion", "AddExclusion": "Add Exclusion",
"AddImportExclusionHelpText": "Prevent movie from being added to Radarr by lists",
"AddingTag": "Adding tag",
"AddList": "Add List", "AddList": "Add List",
"AddListExclusion": "Add List Exclusion", "AddListExclusion": "Add List Exclusion",
"AddMovies": "Add Movies", "AddMovies": "Add Movies",
"AddMoviesMonitored": "Add Movies Monitored", "AddMoviesMonitored": "Add Movies Monitored",
"AddImportExclusionHelpText": "Prevent movie from being added to Radarr by lists",
"AddNew": "Add New", "AddNew": "Add New",
"AddNewMessage": "It's easy to add a new movie, just start typing the name of the movie you want to add", "AddNewMessage": "It's easy to add a new movie, just start typing the name of the movie you want to add",
"AddNewMovie": "Add New Movie", "AddNewMovie": "Add New Movie",
"AddNewTmdbIdMessage": "You can also search using TMDB Id of a movie. eg. tmdb:71663", "AddNewTmdbIdMessage": "You can also search using TMDb Id of a movie. eg. tmdb:71663",
"AddRemotePathMapping": "Add Remote Path Mapping", "AddRemotePathMapping": "Add Remote Path Mapping",
"Age": "Age", "Age": "Age",
"Agenda": "Agenda", "Agenda": "Agenda",
@ -21,6 +22,7 @@
"AllMoviesHiddenDueToFilter": "All movies are hidden due to applied filter.", "AllMoviesHiddenDueToFilter": "All movies are hidden due to applied filter.",
"AllowHardcodedSubs": "Allow Hardcoded Subs", "AllowHardcodedSubs": "Allow Hardcoded Subs",
"AllowHardcodedSubsHelpText": "Detected hardcoded subs will be automatically downloaded", "AllowHardcodedSubsHelpText": "Detected hardcoded subs will be automatically downloaded",
"AllowMovieChangeClickToChangeMovie": "Click to change movie",
"AlreadyInYourLibrary": "Already in your library", "AlreadyInYourLibrary": "Already in your library",
"AlternativeTitle": "Alternative Title", "AlternativeTitle": "Alternative Title",
"AnalyseVideoFiles": "Analyse video files", "AnalyseVideoFiles": "Analyse video files",
@ -52,15 +54,19 @@
"BackupNow": "Backup Now", "BackupNow": "Backup Now",
"BackupRetentionHelpText": "Automatic backups older than the retention period will be cleaned up automatically", "BackupRetentionHelpText": "Automatic backups older than the retention period will be cleaned up automatically",
"Backups": "Backups", "Backups": "Backups",
"BeforeUpdate": "Before update",
"BindAddress": "Bind Address", "BindAddress": "Bind Address",
"BindAddressHelpText": "Valid IP4 address or '*' for all interfaces", "BindAddressHelpText": "Valid IP4 address or '*' for all interfaces",
"Blacklist": "Blacklist", "Blacklist": "Blacklist",
"BlacklistHelpText": "Prevents Radarr from automatically grabbing this movie again", "BlacklistHelpText": "Prevents Radarr from automatically grabbing this movie again",
"BlacklistRelease": "Blacklist Release", "BlacklistRelease": "Blacklist Release",
"Branch": "Branch", "Branch": "Branch",
"BranchUpdate": "Branch to use to update Radarr",
"BranchUpdateMechanism": "Branch used by external update mechanism",
"BypassProxyForLocalAddresses": "Bypass Proxy for Local Addresses", "BypassProxyForLocalAddresses": "Bypass Proxy for Local Addresses",
"Calendar": "Calendar", "Calendar": "Calendar",
"Cancel": "Cancel", "Cancel": "Cancel",
"CancelPendingTask": "Are you sure you want to cancel this pending task?",
"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",
@ -69,11 +75,13 @@
"CertificationCountryHelpText": "Select Country for Movie Certifications", "CertificationCountryHelpText": "Select Country for Movie Certifications",
"ChangeFileDate": "Change File Date", "ChangeFileDate": "Change File Date",
"ChangeHasNotBeenSavedYet": "Change has not been saved yet", "ChangeHasNotBeenSavedYet": "Change has not been saved yet",
"CheckDownloadClientForDetails": "check download client for more details",
"CheckForFinishedDownloadsInterval": "Check For Finished Downloads Interval", "CheckForFinishedDownloadsInterval": "Check For Finished Downloads Interval",
"ChooseAnotherFolder": "Choose another Folder", "ChooseAnotherFolder": "Choose another Folder",
"CleanLibraryLevel": "Clean Library Level", "CleanLibraryLevel": "Clean Library Level",
"Clear": "Clear", "Clear": "Clear",
"ClickToChangeLanguage": "Click to change language", "ClickToChangeLanguage": "Click to change language",
"ClickToChangeMovie": "Click to change movie",
"ClickToChangeQuality": "Click to change quality", "ClickToChangeQuality": "Click to change quality",
"ClientPriority": "Client Priority", "ClientPriority": "Client Priority",
"CloneFormatTag": "Clone Format Tag", "CloneFormatTag": "Clone Format Tag",
@ -105,6 +113,7 @@
"CustomFormatScore": "Custom Format score", "CustomFormatScore": "Custom Format score",
"CustomFormatsSettings": "Custom Formats Settings", "CustomFormatsSettings": "Custom Formats Settings",
"CustomFormatsSettingsSummary": "Custom Formats and Settings", "CustomFormatsSettingsSummary": "Custom Formats and Settings",
"Cutoff": "Cutoff",
"CutoffFormatScoreHelpText": "Once this custom format score is reached Radarr will no longer download movies", "CutoffFormatScoreHelpText": "Once this custom format score is reached Radarr will no longer download movies",
"CutoffHelpText": "Once this quality is reached Radarr will no longer download movies", "CutoffHelpText": "Once this quality is reached Radarr will no longer download movies",
"CutoffUnmet": "Cut-off Unmet", "CutoffUnmet": "Cut-off Unmet",
@ -112,25 +121,34 @@
"Dates": "Dates", "Dates": "Dates",
"Day": "Day", "Day": "Day",
"DBMigration": "DB Migration", "DBMigration": "DB Migration",
"DelayingDownloadUntilInterp": "Delaying download until {0} at {1}",
"DelayProfile": "Delay Profile", "DelayProfile": "Delay Profile",
"DelayProfiles": "Delay Profiles", "DelayProfiles": "Delay Profiles",
"Delete": "Delete", "Delete": "Delete",
"DeleteBackup": "Delete Backup", "DeleteBackup": "Delete Backup",
"DeleteBackupMessageText": "Are you sure you want to delete the backup '{0}'?",
"DeleteCustomFormat": "Delete Custom Format", "DeleteCustomFormat": "Delete Custom Format",
"Deleted": "Deleted", "Deleted": "Deleted",
"DeleteDelayProfile": "Delete Delay Profile", "DeleteDelayProfile": "Delete Delay Profile",
"DeleteDownloadClient": "Delete Download Client", "DeleteDownloadClient": "Delete Download Client",
"DeleteDownloadClientMessageText": "Are you sure you want to delete the download client '{0}'?",
"DeleteEmptyFolders": "Delete empty folders", "DeleteEmptyFolders": "Delete empty folders",
"DeleteEmptyFoldersHelpText": "Delete empty movie folders during disk scan and when movie files are deleted", "DeleteEmptyFoldersHelpText": "Delete empty movie folders during disk scan and when movie files are deleted",
"DeleteFile": "Delete file", "DeleteFile": "Delete file",
"DeleteImportListExclusion": "Delete Import List Exclusion", "DeleteImportListExclusion": "Delete Import List Exclusion",
"DeleteIndexer": "Delete Indexer", "DeleteIndexer": "Delete Indexer",
"DeleteIndexerMessageText": "Are you sure you want to delete the indexer '{0}'?",
"DeleteList": "Delete List", "DeleteList": "Delete List",
"DeleteListMessageText": "Are you sure you want to delete the list '{0}'?",
"DeleteNotification": "Delete Notification", "DeleteNotification": "Delete Notification",
"DeleteNotificationMessageText": "Are you sure you want to delete the notification '{0}'?",
"DeleteQualityProfile": "Delete Quality Profile", "DeleteQualityProfile": "Delete Quality Profile",
"DeleteRestriction": "Delete Restriction", "DeleteRestriction": "Delete Restriction",
"DeleteRestrictionHelpText": "Are you sure you want to delete this restriction?",
"DeleteSelectedMovieFiles": "Delete Selected Movie Files", "DeleteSelectedMovieFiles": "Delete Selected Movie Files",
"DeleteSelectedMovieFilesMessage": "Are you sure you want to delete the selected movie files?",
"DeleteTag": "Delete Tag", "DeleteTag": "Delete Tag",
"DeleteTagMessageText": "Are you sure you want to delete the tag '{0}'?",
"DestinationPath": "Destination Path", "DestinationPath": "Destination Path",
"DestinationRelativePath": "Destination Relative Path", "DestinationRelativePath": "Destination Relative Path",
"DetailedProgressBar": "Detailed Progress Bar", "DetailedProgressBar": "Detailed Progress Bar",
@ -150,9 +168,14 @@
"DownloadClientsSettingsSummary": "Download clients, download handling and remote path mappings", "DownloadClientsSettingsSummary": "Download clients, download handling and remote path mappings",
"DownloadClientStatusCheckAllClientMessage": "All download clients are unavailable due to failures", "DownloadClientStatusCheckAllClientMessage": "All download clients are unavailable due to failures",
"DownloadClientStatusCheckSingleClientMessage": "Download clients unavailable due to failures: {0}", "DownloadClientStatusCheckSingleClientMessage": "Download clients unavailable due to failures: {0}",
"DownloadClientUnavailable": "Download client is unavailable",
"Downloaded": "Downloaded", "Downloaded": "Downloaded",
"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}",
"Downloading": "Downloading",
"DownloadPropers": "Download Propers", "DownloadPropers": "Download Propers",
"DownloadWarning": "Download warning: {0}",
"DownloadWarningCheckDownloadClientForMoreDetails": "Download warning: check download client for more details", "DownloadWarningCheckDownloadClientForMoreDetails": "Download warning: check download client for more details",
"Edit": "Edit", "Edit": "Edit",
"Edition": "Edition", "Edition": "Edition",
@ -163,12 +186,16 @@
"EnableAutoHelpText": "If enabled, Movies will be automatically added to Radarr from this list", "EnableAutoHelpText": "If enabled, Movies will be automatically added to Radarr from this list",
"EnableAutomaticAdd": "Enable Automatic Add", "EnableAutomaticAdd": "Enable Automatic Add",
"EnableAutomaticSearch": "Enable Automatic Search", "EnableAutomaticSearch": "Enable Automatic Search",
"EnableAutomaticSearchHelpText": "Will be used when automatic searches are performed via the UI or by Radarr",
"EnableAutomaticSearchHelpTextWarning": "Will be used when interactive search is used",
"EnableColorImpairedMode": "Enable Color-Impaired Mode", "EnableColorImpairedMode": "Enable Color-Impaired Mode",
"EnableColorImpairedModeHelpText": "Altered style to allow color-impaired users to better distinguish color coded information", "EnableColorImpairedModeHelpText": "Altered style to allow color-impaired users to better distinguish color coded information",
"EnableCompletedDownloadHandlingHelpText": "Automatically import completed downloads from download client", "EnableCompletedDownloadHandlingHelpText": "Automatically import completed downloads from download client",
"EnabledHelpText": "Enable this list for use in Radarr", "EnabledHelpText": "Enable this list for use in Radarr",
"EnableHelpText": "Enable metadata file creation for this metadata type", "EnableHelpText": "Enable metadata file creation for this metadata type",
"EnableInteractiveSearch": "Enable Interactive Search", "EnableInteractiveSearch": "Enable Interactive Search",
"EnableInteractiveSearchHelpText": "Will be used when interactive search is used",
"EnableInteractiveSearchHelpTextWarning": "Search is not supported with this indexer",
"EnableMediaInfoHelpText": "Extract video information such as resolution, runtime and codec information from files. This requires Radarr to read parts of the file which may cause high disk or network activity during scans.", "EnableMediaInfoHelpText": "Extract video information such as resolution, runtime and codec information from files. This requires Radarr to read parts of the file which may cause high disk or network activity during scans.",
"EnableRSS": "Enable RSS", "EnableRSS": "Enable RSS",
"EnableSSL": "Enable SSL", "EnableSSL": "Enable SSL",
@ -177,7 +204,9 @@
"Error": "Error", "Error": "Error",
"Events": "Events", "Events": "Events",
"EventType": "Event Type", "EventType": "Event Type",
"ExcludeMovie": "Exclude Movie",
"ExistingMovies": "Existing Movie(s)", "ExistingMovies": "Existing Movie(s)",
"ExistingTag": "Existing tag",
"Exluded": "Exluded", "Exluded": "Exluded",
"Extension": "Extension", "Extension": "Extension",
"Failed": "Failed", "Failed": "Failed",
@ -203,16 +232,19 @@
"GeneralSettingsSummary": "Port, SSL, username/password, proxy, analytics and updates", "GeneralSettingsSummary": "Port, SSL, username/password, proxy, analytics and updates",
"Genres": "Genres", "Genres": "Genres",
"Global": "Global", "Global": "Global",
"GoToInterp": "Go to {0}",
"Grab": "Grab", "Grab": "Grab",
"Grabbed": "Grabbed", "Grabbed": "Grabbed",
"GrabID": "Grab ID", "GrabID": "Grab ID",
"GrabRelease": "Grab Release", "GrabRelease": "Grab Release",
"GrabReleaseMessageText": "Radarr was unable to determine which movie this release was for. Radarr may be unable to automatically import this release. Do you want to grab '{0}'?",
"GrabSelected": "Grab Selected", "GrabSelected": "Grab Selected",
"Group": "Group", "Group": "Group",
"HardlinkCopyFiles": "Hardlink/Copy Files", "HardlinkCopyFiles": "Hardlink/Copy Files",
"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)",
"HiddenClickToShow": "Hidden, click to show",
"HideAdvanced": "Hide Advanced", "HideAdvanced": "Hide Advanced",
"History": "History", "History": "History",
"Host": "Host", "Host": "Host",
@ -224,7 +256,7 @@
"Ignored": "Ignored", "Ignored": "Ignored",
"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 terms (case insensitive)", "IgnoredHelpText": "The release will be rejected if it contains one or more of the terms (case insensitive)",
"IllRestartLater": "I'll restart later", "IllRestartLater": "I'll restart later",
"Import": "Import", "Import": "Import",
"Imported": "Imported", "Imported": "Imported",
@ -232,9 +264,14 @@
"ImportExistingMovies": "Import Existing Movies", "ImportExistingMovies": "Import Existing Movies",
"ImportExtraFiles": "Import Extra Files", "ImportExtraFiles": "Import Extra Files",
"ImportExtraFilesHelpText": "Import matching extra files (subtitles, nfo, etc) after importing an movie file", "ImportExtraFilesHelpText": "Import matching extra files (subtitles, nfo, etc) after importing an movie file",
"ImportFailed": "Import failed: {0}",
"ImportFailedInterp": "Import failed: {0}",
"ImportFirstTip": "Make sure that your files include the quality in their filenames. eg.", "ImportFirstTip": "Make sure that your files include the quality in their filenames. eg.",
"ImportHeader": "Import movies you already have", "ImportHeader": "Import movies you already have",
"Importing": "Importing", "Importing": "Importing",
"ImportListStatusCheckAllClientMessage": "All lists are unavailable due to failures",
"ImportListStatusCheckSingleClientMessage": "Lists unavailable due to failures: {0}",
"ImportListSyncIntervalHelpText": "How often Radarr syncs with your lists.",
"ImportMechanismHealthCheckMessage": "Enable Completed Download Handling", "ImportMechanismHealthCheckMessage": "Enable Completed Download Handling",
"ImportMovies": "Import Movies", "ImportMovies": "Import Movies",
"ImportSecondTip": "Point Radarr to the folder containing all of your movies, not a specific one. eg.", "ImportSecondTip": "Point Radarr to the folder containing all of your movies, not a specific one. eg.",
@ -243,7 +280,9 @@
"IncludeCustomFormatWhenRenaming": "Include Custom Format when Renaming", "IncludeCustomFormatWhenRenaming": "Include Custom Format when Renaming",
"IncludeCustomFormatWhenRenamingHelpText": "Include in {Custom Formats} renaming format", "IncludeCustomFormatWhenRenamingHelpText": "Include in {Custom Formats} renaming format",
"IncludeHealthWarningsHelpText": "Include Health Warnings", "IncludeHealthWarningsHelpText": "Include Health Warnings",
"IncludeUnknownMovieItemsHelpText": "Show items without a movie in the queue, this could include removed movie, movies or anything else in Radarr's category", "IncludeRadarrRecommendations": "Include Radarr Recommendations",
"IncludeRecommendationsHelpText": "Include Radarr recommended movies in discovery view",
"IncludeUnknownMovieItemsHelpText": "Show items without a movie in the queue. This could include removed movies or anything else in Radarr's category",
"IncludeUnmonitored": "Include Unmonitored", "IncludeUnmonitored": "Include Unmonitored",
"Indexer": "Indexer", "Indexer": "Indexer",
"IndexerFlags": "Indexer Flags", "IndexerFlags": "Indexer Flags",
@ -264,8 +303,9 @@
"Language": "Language", "Language": "Language",
"LanguageHelpText": "Language for Releases", "LanguageHelpText": "Language for Releases",
"Languages": "Languages", "Languages": "Languages",
"LastDuration": "lastDuration",
"LastWriteTime": "Last Write Time", "LastWriteTime": "Last Write Time",
"LaunchBrowserHelpText": " Open a web browser and navigate to Radarr homepage on app start.", "LaunchBrowserHelpText": " Open a web browser and navigate to the Radarr homepage on app start.",
"Level": "Level", "Level": "Level",
"Links": "Links", "Links": "Links",
"ListExclusions": "List Exclusions", "ListExclusions": "List Exclusions",
@ -280,9 +320,12 @@
"LogFilesLocationMessage": "Log files are located in:", "LogFilesLocationMessage": "Log files are located in:",
"Logging": "Logging", "Logging": "Logging",
"LogLevel": "Log Level", "LogLevel": "Log Level",
"LogLevelTraceHelpTextWarning": "Trace logging should only be enabled temporarily",
"Logs": "Logs", "Logs": "Logs",
"Manual": "Manual",
"ManualImport": "Manual Import", "ManualImport": "Manual Import",
"MarkAsFailed": "Mark as Failed", "MarkAsFailed": "Mark as Failed",
"MarkAsFailedMessageText": "Are you sure you want to mark '{0}' as failed?",
"MassMovieSearch": "Mass Movie Search", "MassMovieSearch": "Mass Movie Search",
"MaximumLimits": "Maximum Limits", "MaximumLimits": "Maximum Limits",
"MaximumSize": "Maximum Size", "MaximumSize": "Maximum Size",
@ -312,7 +355,7 @@
"Monitored": "Monitored", "Monitored": "Monitored",
"MonitoredHelpText": "Download movie if available", "MonitoredHelpText": "Download movie if available",
"MonitoredOnly": "Monitored Only", "MonitoredOnly": "Monitored Only",
"MonitorMovie": "MonitorMovie", "MonitorMovie": "Monitor Movie",
"MonoNotNetCoreCheckMessage": "Please upgrade to the .NET Core version of Radarr", "MonoNotNetCoreCheckMessage": "Please upgrade to the .NET Core version of Radarr",
"MonoTlsCheckMessage": "Radarr Mono 4.x tls workaround still enabled, consider removing MONO_TLS_PROVIDER=legacy environment option", "MonoTlsCheckMessage": "Radarr Mono 4.x tls workaround still enabled, consider removing MONO_TLS_PROVIDER=legacy environment option",
"MonoVersion": "Mono Version", "MonoVersion": "Mono Version",
@ -324,17 +367,23 @@
"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",
"Movie": "Movie", "Movie": "Movie",
"MovieAlreadyExcluded": "Movie already Excluded",
"MovieAvailableButMissing": "Movie Available, but Missing", "MovieAvailableButMissing": "Movie Available, but Missing",
"MovieEditor": "Movie Editor", "MovieEditor": "Movie Editor",
"MovieExcludedFromAutomaticAdd": "Movie Excluded From Automatic Add",
"MovieFiles": "Movie Files", "MovieFiles": "Movie Files",
"MovieFolderFormat": "Movie Folder Format", "MovieFolderFormat": "Movie Folder Format",
"MovieID": "Movie ID", "MovieID": "Movie ID",
"MovieIndex": "Movie Index", "MovieIndex": "Movie Index",
"MovieInfoLanguageHelpTextWarning": "Browser Reload Required", "MovieInfoLanguageHelpTextWarning": "Browser Reload Required",
"MovieIsDownloading": "Movie is downloading", "MovieIsDownloading": "Movie is downloading",
"MovieIsDownloadingInterp": "Movie is downloading - {0}% {1}",
"MovieIsMonitored": "Movie is monitored",
"MovieIsOnImportExclusionList": "Movie is on Import Exclusion List", "MovieIsOnImportExclusionList": "Movie is on Import Exclusion List",
"MovieIsUnmonitored": "Movie is unmonitored",
"MovieNaming": "Movie Naming", "MovieNaming": "Movie Naming",
"Movies": "Movies", "Movies": "Movies",
"MoviesSelectedInterp": "{0} Movie(s) Selected",
"MovieTitle": "Movie Title", "MovieTitle": "Movie Title",
"MovieTitleHelpText": "The title of the movie to exclude (can be anything meaningful)", "MovieTitleHelpText": "The title of the movie to exclude (can be anything meaningful)",
"MovieYear": "Movie Year", "MovieYear": "Movie Year",
@ -343,11 +392,9 @@
"MustNotContain": "Must Not Contain", "MustNotContain": "Must Not Contain",
"Name": "Name", "Name": "Name",
"NamingSettings": "Naming Settings", "NamingSettings": "Naming Settings",
"NegateHelpText": "If checked, the custom format will not apply if this {0} condition matches.",
"NetCore": ".NET Core", "NetCore": ".NET Core",
"ImportListSyncIntervalHelpText": "How often Radarr syncs with your lists.",
"New": "New", "New": "New",
"ImportListStatusCheckAllClientMessage": "All lists are unavailable due to failures",
"ImportListStatusCheckSingleClientMessage": "Lists unavailable due to failures: {0}",
"NoChange": "No Change", "NoChange": "No Change",
"NoChanges": "No Changes", "NoChanges": "No Changes",
"NoLeaveIt": "No, Leave It", "NoLeaveIt": "No, Leave It",
@ -380,7 +427,9 @@
"PageSizeHelpText": "Number of items to show on each page", "PageSizeHelpText": "Number of items to show on each page",
"Password": "Password", "Password": "Password",
"Path": "Path", "Path": "Path",
"Paused": "Paused",
"Peers": "Peers", "Peers": "Peers",
"Pending": "Pending",
"PendingChangesDiscardChanges": "Discard changes and leave", "PendingChangesDiscardChanges": "Discard changes and leave",
"PendingChangesMessage": "You have unsaved changes, are you sure you want to leave this page?", "PendingChangesMessage": "You have unsaved changes, are you sure you want to leave this page?",
"PendingChangesStayReview": "Stay and review changes", "PendingChangesStayReview": "Stay and review changes",
@ -416,10 +465,12 @@
"QualityCutoffHasNotBeenMet": "Quality cutoff has not been met", "QualityCutoffHasNotBeenMet": "Quality cutoff has not been met",
"QualityDefinitions": "Quality Definitions", "QualityDefinitions": "Quality Definitions",
"QualityProfile": "Quality Profile", "QualityProfile": "Quality Profile",
"QualityProfileDeleteConfirm": "Are you sure you want to delete the quality profile {0}",
"QualityProfiles": "Quality Profiles", "QualityProfiles": "Quality Profiles",
"QualitySettings": "Quality Settings", "QualitySettings": "Quality Settings",
"QualitySettingsSummary": "Quality sizes and naming", "QualitySettingsSummary": "Quality sizes and naming",
"Queue": "Queue", "Queue": "Queue",
"Queued": "Queued",
"QuickImport": "Quick Import", "QuickImport": "Quick Import",
"Radarr": "Radarr", "Radarr": "Radarr",
"RadarrTags": "Radarr Tags", "RadarrTags": "Radarr Tags",
@ -447,6 +498,7 @@
"ReleaseRejected": "Release Rejected", "ReleaseRejected": "Release Rejected",
"ReleaseStatus": "Release Status", "ReleaseStatus": "Release Status",
"ReleaseTitle": "Release Title", "ReleaseTitle": "Release Title",
"ReleaseWillBeProcessedInterp": "Release will be processed {0}",
"Reload": "Reload", "Reload": "Reload",
"RemotePathMappings": "Remote Path Mappings", "RemotePathMappings": "Remote Path Mappings",
"Remove": "Remove", "Remove": "Remove",
@ -462,6 +514,7 @@
"RemoveHelpTextWarning": "Removing will remove the download and the file(s) from the download client.", "RemoveHelpTextWarning": "Removing will remove the download and the file(s) from the download client.",
"RemoveRootFolder": "Remove root folder", "RemoveRootFolder": "Remove root folder",
"RemoveSelected": "Remove Selected", "RemoveSelected": "Remove Selected",
"RemovingTag": "Removing tag",
"Renamed": "Renamed", "Renamed": "Renamed",
"RenameFiles": "Rename Files", "RenameFiles": "Rename Files",
"RenameMovies": "Rename Movies", "RenameMovies": "Rename Movies",
@ -469,7 +522,7 @@
"Reorder": "Reorder", "Reorder": "Reorder",
"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": "The release must contain at least one of these terms (case insensitive)", "RequiredHelpText": "This {0} condition must match for the custom format to apply. Otherwise a single {1} match is sufficient.",
"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",
@ -484,13 +537,15 @@
"Result": "Result", "Result": "Result",
"Retention": "Retention", "Retention": "Retention",
"RetentionHelpText": "Usenet only: Set to zero to set for unlimited retention", "RetentionHelpText": "Usenet only: Set to zero to set for unlimited retention",
"RetryingDownloadInterp": "Retrying download {0} at {1}",
"RootFolder": "Root Folder", "RootFolder": "Root Folder",
"RootFolderCheckMultipleMessage": "Multiple root folders are missing: {0}", "RootFolderCheckMultipleMessage": "Multiple root folders are missing: {0}",
"RootFolderCheckSingleMessage": "Missing root folder: {0}", "RootFolderCheckSingleMessage": "Missing root folder: {0}",
"RootFolders": "Root Folders", "RootFolders": "Root Folders",
"RSSIsNotSupportedWithThisIndexer": "RSS is not supported with this indexer",
"RSSSync": "RSS Sync", "RSSSync": "RSS Sync",
"RSSSyncInterval": "RSS Sync Interval", "RSSSyncInterval": "RSS Sync Interval",
"RssSyncIntervalHelpTextWarning": "This will apply to all indexers, please follow the rules set forth by them", "RSSSyncIntervalHelpTextWarning": "This will apply to all indexers, please follow the rules set forth by them",
"Runtime": "Runtime", "Runtime": "Runtime",
"Save": "Save", "Save": "Save",
"SaveChanges": "Save Changes", "SaveChanges": "Save Changes",
@ -502,7 +557,8 @@
"SearchForMissing": "Search for Missing", "SearchForMissing": "Search for Missing",
"SearchForMovie": "Search for movie", "SearchForMovie": "Search for movie",
"SearchMovie": "Search Movie", "SearchMovie": "Search Movie",
"SearchOnAdd": "Search On Add", "SearchOnAdd": "Search on Add",
"SearchOnAddHelpText": "Search for movies on this list when added to Radarr",
"SearchSelected": "Search Selected", "SearchSelected": "Search Selected",
"Security": "Security", "Security": "Security",
"Seeders": "Seeders", "Seeders": "Seeders",
@ -535,15 +591,19 @@
"ShouldMonitorHelpText": "If enabled, movies added by this list are added and monitored", "ShouldMonitorHelpText": "If enabled, movies added by this list are added and monitored",
"ShowAdvanced": "Show Advanced", "ShowAdvanced": "Show Advanced",
"ShowAsAllDayEvents": "Show as All-Day Events", "ShowAsAllDayEvents": "Show as All-Day Events",
"ShowCertification": "Show Certification",
"ShowCutoffUnmetIconHelpText": "Show icon for files when the cutoff hasn't been met", "ShowCutoffUnmetIconHelpText": "Show icon for files when the cutoff hasn't been met",
"ShowDateAdded": "Show Date Added", "ShowDateAdded": "Show Date Added",
"ShowGenres": "Show Genres",
"ShowMonitored": "Show Monitored", "ShowMonitored": "Show Monitored",
"ShowMonitoredHelpText": "Show monitored status under poster", "ShowMonitoredHelpText": "Show monitored status under poster",
"ShowMovieInformation": "Show Movie Information", "ShowMovieInformation": "Show Movie Information",
"ShowMovieInformationHelpText": "Show movie genres and certification", "ShowMovieInformationHelpText": "Show movie genres and certification",
"ShownClickToHide": "Shown, click to hide",
"ShowPath": "Show Path", "ShowPath": "Show Path",
"ShowQualityProfile": "Show Quality Profile", "ShowQualityProfile": "Show Quality Profile",
"ShowQualityProfileHelpText": "Show quality profile under poster", "ShowQualityProfileHelpText": "Show quality profile under poster",
"ShowRatings": "Show Ratings",
"ShowSearch": "Show Search", "ShowSearch": "Show Search",
"ShowSearchHelpText": "Show search button on hover", "ShowSearchHelpText": "Show search button on hover",
"ShowSizeOnDisk": "Show Size on Disk", "ShowSizeOnDisk": "Show Size on Disk",
@ -551,6 +611,7 @@
"ShowTitle": "Show Title", "ShowTitle": "Show Title",
"ShowTitleHelpText": "Show movie title under poster", "ShowTitleHelpText": "Show movie title under poster",
"ShowUnknownMovieItems": "Show Unknown Movie Items", "ShowUnknownMovieItems": "Show Unknown Movie Items",
"ShowYear": "Show Year",
"Shutdown": "Shutdown", "Shutdown": "Shutdown",
"Size": "Size", "Size": "Size",
"SizeOnDisk": "Size on Disk", "SizeOnDisk": "Size on Disk",
@ -563,21 +624,23 @@
"SourceRelativePath": "Source Relative Path", "SourceRelativePath": "Source Relative Path",
"SourceTitle": "Source Title", "SourceTitle": "Source Title",
"SSLCertPassword": "SSL Cert Password", "SSLCertPassword": "SSL Cert Password",
"SslCertPasswordHelpText": "Password for pfx file", "SSLCertPasswordHelpText": "Password for pfx file",
"SSLCertPath": "SSL Cert Path", "SSLCertPath": "SSL Cert Path",
"SslCertPathHelpText": "Path to pfx file", "SSLCertPathHelpText": "Path to pfx file",
"SSLPort": "SSL Port", "SSLPort": "SSL Port",
"StandardMovieFormat": "Standard Movie Format", "StandardMovieFormat": "Standard Movie Format",
"StartupDirectory": "Startup directory", "StartupDirectory": "Startup directory",
"Status": "Status", "Status": "Status",
"Studio": "Studio", "Studio": "Studio",
"Style": "Style", "Style": "Style",
"SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' subfolder will be created automatically",
"SuggestTranslationChange": "Suggest translation change", "SuggestTranslationChange": "Suggest translation change",
"System": "System", "System": "System",
"SystemTimeCheckMessage": "System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected", "SystemTimeCheckMessage": "System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected",
"Table": "Table", "Table": "Table",
"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",
"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",
@ -592,8 +655,8 @@
"Timeleft": "Timeleft", "Timeleft": "Timeleft",
"Title": "Title", "Title": "Title",
"Titles": "Titles", "Titles": "Titles",
"TMDBId": "TMDB Id", "TMDBId": "TMDb Id",
"TmdbIdHelpText": "The TMDB Id of the movie to exclude", "TmdbIdHelpText": "The TMDb Id of the movie to exclude",
"TorrentDelay": "Torrent Delay", "TorrentDelay": "Torrent Delay",
"TorrentDelayHelpText": "Delay in minutes to wait before grabbing a torrent", "TorrentDelayHelpText": "Delay in minutes to wait before grabbing a torrent",
"Torrents": "Torrents", "Torrents": "Torrents",
@ -633,6 +696,7 @@
"UpdateScriptPathHelpText": "Path to a custom script that takes an extracted update package and handle the remainder of the update process", "UpdateScriptPathHelpText": "Path to a custom script that takes an extracted update package and handle the remainder of the update process",
"UpdateSelected": "Update Selected", "UpdateSelected": "Update Selected",
"UpgradeAllowedHelpText": "If disabled qualities will not be upgraded", "UpgradeAllowedHelpText": "If disabled qualities will not be upgraded",
"UpgradeUntilThisQualityIsMetOrExceeded": "Upgrade until this quality is met or exceeded",
"Uptime": "Uptime", "Uptime": "Uptime",
"URLBase": "URL Base", "URLBase": "URL Base",
"UrlBaseHelpText": "For reverse proxy support, default is empty", "UrlBaseHelpText": "For reverse proxy support, default is empty",
@ -645,6 +709,8 @@
"Version": "Version", "Version": "Version",
"VideoCodec": "Video Codec", "VideoCodec": "Video Codec",
"View": "View", "View": "View",
"WaitingToImport": "Waiting to Import",
"WaitingToProcess": "Waiting to Process",
"Wanted": "Wanted", "Wanted": "Wanted",
"Warn": "Warn", "Warn": "Warn",
"Week": "Week", "Week": "Week",