Another translation update

pull/4950/head
nitsua 4 years ago committed by Qstick
parent 0d7bf98efb
commit 3a7b48825d

@ -24,7 +24,7 @@ function QueueDetails(props) {
return (
<Icon
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
name={icons.DOWNLOAD}
kind={kinds.DANGER}
title={`Import failed: ${errorMessage}`}
title={translate('ImportFailedInterp', [errorMessage])}
/>
);
}
@ -48,7 +48,7 @@ function QueueDetails(props) {
<Icon
name={icons.DOWNLOADING}
kind={kinds.DANGER}
title={`Download failed: ${errorMessage}`}
title={translate('DownloadFailedInterp', [errorMessage])}
/>
);
}
@ -77,7 +77,7 @@ function QueueDetails(props) {
return (
<Icon
name={icons.DOWNLOADING}
title={`Movie is downloading - ${progress.toFixed(1)}% ${title}`}
title={translate('MovieIsDownloadingInterp', [progress.toFixed(1), title])}
/>
);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -267,7 +267,7 @@ class InteractiveSearchRow extends Component {
isOpen={this.state.isConfirmGrabModalOpen}
kind={kinds.WARNING}
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')}
onConfirm={this.onGrabConfirm}
onCancel={this.onGrabCancel}

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

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

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

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

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

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

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

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

@ -93,7 +93,7 @@ function EditSpecificationModalContent(props) {
type={inputTypes.CHECK}
name="negate"
{...negate}
helpText={`If checked, the custom format will not apply if this ${implementationName} condition matches.`}
helpText={translate('NegateHelpText', [implementationName])}
onChange={onInputChange}
/>
</FormGroup>
@ -107,7 +107,7 @@ function EditSpecificationModalContent(props) {
type={inputTypes.CHECK}
name="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}
/>
</FormGroup>

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

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

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

@ -54,7 +54,7 @@ function UpdateSettings(props) {
<FormInputGroup
type={inputTypes.TEXT}
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"
{...branch}
onChange={onInputChange}

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -22,7 +22,18 @@ function 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);
return translations[formatedKey] || key;
}

@ -4,15 +4,16 @@
"Activity": "Activity",
"Added": "Added",
"AddExclusion": "Add Exclusion",
"AddImportExclusionHelpText": "Prevent movie from being added to Radarr by lists",
"AddingTag": "Adding tag",
"AddList": "Add List",
"AddListExclusion": "Add List Exclusion",
"AddMovies": "Add Movies",
"AddMoviesMonitored": "Add Movies Monitored",
"AddImportExclusionHelpText": "Prevent movie from being added to Radarr by lists",
"AddNew": "Add New",
"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",
"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",
"Age": "Age",
"Agenda": "Agenda",
@ -21,6 +22,7 @@
"AllMoviesHiddenDueToFilter": "All movies are hidden due to applied filter.",
"AllowHardcodedSubs": "Allow Hardcoded Subs",
"AllowHardcodedSubsHelpText": "Detected hardcoded subs will be automatically downloaded",
"AllowMovieChangeClickToChangeMovie": "Click to change movie",
"AlreadyInYourLibrary": "Already in your library",
"AlternativeTitle": "Alternative Title",
"AnalyseVideoFiles": "Analyse video files",
@ -52,15 +54,19 @@
"BackupNow": "Backup Now",
"BackupRetentionHelpText": "Automatic backups older than the retention period will be cleaned up automatically",
"Backups": "Backups",
"BeforeUpdate": "Before update",
"BindAddress": "Bind Address",
"BindAddressHelpText": "Valid IP4 address or '*' for all interfaces",
"Blacklist": "Blacklist",
"BlacklistHelpText": "Prevents Radarr from automatically grabbing this movie again",
"BlacklistRelease": "Blacklist Release",
"Branch": "Branch",
"BranchUpdate": "Branch to use to update Radarr",
"BranchUpdateMechanism": "Branch used by external update mechanism",
"BypassProxyForLocalAddresses": "Bypass Proxy for Local Addresses",
"Calendar": "Calendar",
"Cancel": "Cancel",
"CancelPendingTask": "Are you sure you want to cancel this pending task?",
"Cast": "Cast",
"CertificateValidation": "Certificate Validation",
"CertificateValidationHelpText": "Change how strict HTTPS certification validation is",
@ -69,11 +75,13 @@
"CertificationCountryHelpText": "Select Country for Movie Certifications",
"ChangeFileDate": "Change File Date",
"ChangeHasNotBeenSavedYet": "Change has not been saved yet",
"CheckDownloadClientForDetails": "check download client for more details",
"CheckForFinishedDownloadsInterval": "Check For Finished Downloads Interval",
"ChooseAnotherFolder": "Choose another Folder",
"CleanLibraryLevel": "Clean Library Level",
"Clear": "Clear",
"ClickToChangeLanguage": "Click to change language",
"ClickToChangeMovie": "Click to change movie",
"ClickToChangeQuality": "Click to change quality",
"ClientPriority": "Client Priority",
"CloneFormatTag": "Clone Format Tag",
@ -105,6 +113,7 @@
"CustomFormatScore": "Custom Format score",
"CustomFormatsSettings": "Custom Formats Settings",
"CustomFormatsSettingsSummary": "Custom Formats and Settings",
"Cutoff": "Cutoff",
"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",
"CutoffUnmet": "Cut-off Unmet",
@ -112,25 +121,34 @@
"Dates": "Dates",
"Day": "Day",
"DBMigration": "DB Migration",
"DelayingDownloadUntilInterp": "Delaying download until {0} at {1}",
"DelayProfile": "Delay Profile",
"DelayProfiles": "Delay Profiles",
"Delete": "Delete",
"DeleteBackup": "Delete Backup",
"DeleteBackupMessageText": "Are you sure you want to delete the backup '{0}'?",
"DeleteCustomFormat": "Delete Custom Format",
"Deleted": "Deleted",
"DeleteDelayProfile": "Delete Delay Profile",
"DeleteDownloadClient": "Delete Download Client",
"DeleteDownloadClientMessageText": "Are you sure you want to delete the download client '{0}'?",
"DeleteEmptyFolders": "Delete empty folders",
"DeleteEmptyFoldersHelpText": "Delete empty movie folders during disk scan and when movie files are deleted",
"DeleteFile": "Delete file",
"DeleteImportListExclusion": "Delete Import List Exclusion",
"DeleteIndexer": "Delete Indexer",
"DeleteIndexerMessageText": "Are you sure you want to delete the indexer '{0}'?",
"DeleteList": "Delete List",
"DeleteListMessageText": "Are you sure you want to delete the list '{0}'?",
"DeleteNotification": "Delete Notification",
"DeleteNotificationMessageText": "Are you sure you want to delete the notification '{0}'?",
"DeleteQualityProfile": "Delete Quality Profile",
"DeleteRestriction": "Delete Restriction",
"DeleteRestrictionHelpText": "Are you sure you want to delete this restriction?",
"DeleteSelectedMovieFiles": "Delete Selected Movie Files",
"DeleteSelectedMovieFilesMessage": "Are you sure you want to delete the selected movie files?",
"DeleteTag": "Delete Tag",
"DeleteTagMessageText": "Are you sure you want to delete the tag '{0}'?",
"DestinationPath": "Destination Path",
"DestinationRelativePath": "Destination Relative Path",
"DetailedProgressBar": "Detailed Progress Bar",
@ -150,9 +168,14 @@
"DownloadClientsSettingsSummary": "Download clients, download handling and remote path mappings",
"DownloadClientStatusCheckAllClientMessage": "All download clients are unavailable due to failures",
"DownloadClientStatusCheckSingleClientMessage": "Download clients unavailable due to failures: {0}",
"DownloadClientUnavailable": "Download client is unavailable",
"Downloaded": "Downloaded",
"DownloadFailed": "Download failed",
"DownloadFailedCheckDownloadClientForMoreDetails": "Download failed: check download client for more details",
"DownloadFailedInterp": "Download failed: {0}",
"Downloading": "Downloading",
"DownloadPropers": "Download Propers",
"DownloadWarning": "Download warning: {0}",
"DownloadWarningCheckDownloadClientForMoreDetails": "Download warning: check download client for more details",
"Edit": "Edit",
"Edition": "Edition",
@ -163,12 +186,16 @@
"EnableAutoHelpText": "If enabled, Movies will be automatically added to Radarr from this list",
"EnableAutomaticAdd": "Enable Automatic Add",
"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",
"EnableColorImpairedModeHelpText": "Altered style to allow color-impaired users to better distinguish color coded information",
"EnableCompletedDownloadHandlingHelpText": "Automatically import completed downloads from download client",
"EnabledHelpText": "Enable this list for use in Radarr",
"EnableHelpText": "Enable metadata file creation for this metadata type",
"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.",
"EnableRSS": "Enable RSS",
"EnableSSL": "Enable SSL",
@ -177,7 +204,9 @@
"Error": "Error",
"Events": "Events",
"EventType": "Event Type",
"ExcludeMovie": "Exclude Movie",
"ExistingMovies": "Existing Movie(s)",
"ExistingTag": "Existing tag",
"Exluded": "Exluded",
"Extension": "Extension",
"Failed": "Failed",
@ -203,16 +232,19 @@
"GeneralSettingsSummary": "Port, SSL, username/password, proxy, analytics and updates",
"Genres": "Genres",
"Global": "Global",
"GoToInterp": "Go to {0}",
"Grab": "Grab",
"Grabbed": "Grabbed",
"GrabID": "Grab ID",
"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",
"Group": "Group",
"HardlinkCopyFiles": "Hardlink/Copy Files",
"Health": "Health",
"HealthNoIssues": "No issues with your configuration",
"HelpText": "Interval in minutes. Set to zero to disable (this will stop all automatic release grabbing)",
"HiddenClickToShow": "Hidden, click to show",
"HideAdvanced": "Hide Advanced",
"History": "History",
"Host": "Host",
@ -224,7 +256,7 @@
"Ignored": "Ignored",
"IgnoredAddresses": "Ignored Addresses",
"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",
"Import": "Import",
"Imported": "Imported",
@ -232,9 +264,14 @@
"ImportExistingMovies": "Import Existing Movies",
"ImportExtraFiles": "Import Extra Files",
"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.",
"ImportHeader": "Import movies you already have",
"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",
"ImportMovies": "Import Movies",
"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",
"IncludeCustomFormatWhenRenamingHelpText": "Include in {Custom Formats} renaming format",
"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",
"Indexer": "Indexer",
"IndexerFlags": "Indexer Flags",
@ -264,8 +303,9 @@
"Language": "Language",
"LanguageHelpText": "Language for Releases",
"Languages": "Languages",
"LastDuration": "lastDuration",
"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",
"Links": "Links",
"ListExclusions": "List Exclusions",
@ -280,9 +320,12 @@
"LogFilesLocationMessage": "Log files are located in:",
"Logging": "Logging",
"LogLevel": "Log Level",
"LogLevelTraceHelpTextWarning": "Trace logging should only be enabled temporarily",
"Logs": "Logs",
"Manual": "Manual",
"ManualImport": "Manual Import",
"MarkAsFailed": "Mark as Failed",
"MarkAsFailedMessageText": "Are you sure you want to mark '{0}' as failed?",
"MassMovieSearch": "Mass Movie Search",
"MaximumLimits": "Maximum Limits",
"MaximumSize": "Maximum Size",
@ -312,7 +355,7 @@
"Monitored": "Monitored",
"MonitoredHelpText": "Download movie if available",
"MonitoredOnly": "Monitored Only",
"MonitorMovie": "MonitorMovie",
"MonitorMovie": "Monitor Movie",
"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",
"MonoVersion": "Mono Version",
@ -324,17 +367,23 @@
"MountCheckMessage": "Mount containing a movie path is mounted read-only: ",
"MoveFiles": "Move Files",
"Movie": "Movie",
"MovieAlreadyExcluded": "Movie already Excluded",
"MovieAvailableButMissing": "Movie Available, but Missing",
"MovieEditor": "Movie Editor",
"MovieExcludedFromAutomaticAdd": "Movie Excluded From Automatic Add",
"MovieFiles": "Movie Files",
"MovieFolderFormat": "Movie Folder Format",
"MovieID": "Movie ID",
"MovieIndex": "Movie Index",
"MovieInfoLanguageHelpTextWarning": "Browser Reload Required",
"MovieIsDownloading": "Movie is downloading",
"MovieIsDownloadingInterp": "Movie is downloading - {0}% {1}",
"MovieIsMonitored": "Movie is monitored",
"MovieIsOnImportExclusionList": "Movie is on Import Exclusion List",
"MovieIsUnmonitored": "Movie is unmonitored",
"MovieNaming": "Movie Naming",
"Movies": "Movies",
"MoviesSelectedInterp": "{0} Movie(s) Selected",
"MovieTitle": "Movie Title",
"MovieTitleHelpText": "The title of the movie to exclude (can be anything meaningful)",
"MovieYear": "Movie Year",
@ -343,11 +392,9 @@
"MustNotContain": "Must Not Contain",
"Name": "Name",
"NamingSettings": "Naming Settings",
"NegateHelpText": "If checked, the custom format will not apply if this {0} condition matches.",
"NetCore": ".NET Core",
"ImportListSyncIntervalHelpText": "How often Radarr syncs with your lists.",
"New": "New",
"ImportListStatusCheckAllClientMessage": "All lists are unavailable due to failures",
"ImportListStatusCheckSingleClientMessage": "Lists unavailable due to failures: {0}",
"NoChange": "No Change",
"NoChanges": "No Changes",
"NoLeaveIt": "No, Leave It",
@ -380,7 +427,9 @@
"PageSizeHelpText": "Number of items to show on each page",
"Password": "Password",
"Path": "Path",
"Paused": "Paused",
"Peers": "Peers",
"Pending": "Pending",
"PendingChangesDiscardChanges": "Discard changes and leave",
"PendingChangesMessage": "You have unsaved changes, are you sure you want to leave this page?",
"PendingChangesStayReview": "Stay and review changes",
@ -416,10 +465,12 @@
"QualityCutoffHasNotBeenMet": "Quality cutoff has not been met",
"QualityDefinitions": "Quality Definitions",
"QualityProfile": "Quality Profile",
"QualityProfileDeleteConfirm": "Are you sure you want to delete the quality profile {0}",
"QualityProfiles": "Quality Profiles",
"QualitySettings": "Quality Settings",
"QualitySettingsSummary": "Quality sizes and naming",
"Queue": "Queue",
"Queued": "Queued",
"QuickImport": "Quick Import",
"Radarr": "Radarr",
"RadarrTags": "Radarr Tags",
@ -447,6 +498,7 @@
"ReleaseRejected": "Release Rejected",
"ReleaseStatus": "Release Status",
"ReleaseTitle": "Release Title",
"ReleaseWillBeProcessedInterp": "Release will be processed {0}",
"Reload": "Reload",
"RemotePathMappings": "Remote Path Mappings",
"Remove": "Remove",
@ -462,6 +514,7 @@
"RemoveHelpTextWarning": "Removing will remove the download and the file(s) from the download client.",
"RemoveRootFolder": "Remove root folder",
"RemoveSelected": "Remove Selected",
"RemovingTag": "Removing tag",
"Renamed": "Renamed",
"RenameFiles": "Rename Files",
"RenameMovies": "Rename Movies",
@ -469,7 +522,7 @@
"Reorder": "Reorder",
"ReplaceIllegalCharacters": "Replace Illegal Characters",
"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",
"RescanAfterRefreshHelpTextWarning": "Radarr will not automatically detect changes to files when not set to 'Always'",
"RescanMovieFolderAfterRefresh": "Rescan Movie Folder after Refresh",
@ -484,13 +537,15 @@
"Result": "Result",
"Retention": "Retention",
"RetentionHelpText": "Usenet only: Set to zero to set for unlimited retention",
"RetryingDownloadInterp": "Retrying download {0} at {1}",
"RootFolder": "Root Folder",
"RootFolderCheckMultipleMessage": "Multiple root folders are missing: {0}",
"RootFolderCheckSingleMessage": "Missing root folder: {0}",
"RootFolders": "Root Folders",
"RSSIsNotSupportedWithThisIndexer": "RSS is not supported with this indexer",
"RSSSync": "RSS Sync",
"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",
"Save": "Save",
"SaveChanges": "Save Changes",
@ -502,7 +557,8 @@
"SearchForMissing": "Search for Missing",
"SearchForMovie": "Search for 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",
"Security": "Security",
"Seeders": "Seeders",
@ -535,15 +591,19 @@
"ShouldMonitorHelpText": "If enabled, movies added by this list are added and monitored",
"ShowAdvanced": "Show Advanced",
"ShowAsAllDayEvents": "Show as All-Day Events",
"ShowCertification": "Show Certification",
"ShowCutoffUnmetIconHelpText": "Show icon for files when the cutoff hasn't been met",
"ShowDateAdded": "Show Date Added",
"ShowGenres": "Show Genres",
"ShowMonitored": "Show Monitored",
"ShowMonitoredHelpText": "Show monitored status under poster",
"ShowMovieInformation": "Show Movie Information",
"ShowMovieInformationHelpText": "Show movie genres and certification",
"ShownClickToHide": "Shown, click to hide",
"ShowPath": "Show Path",
"ShowQualityProfile": "Show Quality Profile",
"ShowQualityProfileHelpText": "Show quality profile under poster",
"ShowRatings": "Show Ratings",
"ShowSearch": "Show Search",
"ShowSearchHelpText": "Show search button on hover",
"ShowSizeOnDisk": "Show Size on Disk",
@ -551,6 +611,7 @@
"ShowTitle": "Show Title",
"ShowTitleHelpText": "Show movie title under poster",
"ShowUnknownMovieItems": "Show Unknown Movie Items",
"ShowYear": "Show Year",
"Shutdown": "Shutdown",
"Size": "Size",
"SizeOnDisk": "Size on Disk",
@ -563,21 +624,23 @@
"SourceRelativePath": "Source Relative Path",
"SourceTitle": "Source Title",
"SSLCertPassword": "SSL Cert Password",
"SslCertPasswordHelpText": "Password for pfx file",
"SSLCertPasswordHelpText": "Password for pfx file",
"SSLCertPath": "SSL Cert Path",
"SslCertPathHelpText": "Path to pfx file",
"SSLCertPathHelpText": "Path to pfx file",
"SSLPort": "SSL Port",
"StandardMovieFormat": "Standard Movie Format",
"StartupDirectory": "Startup directory",
"Status": "Status",
"Studio": "Studio",
"Style": "Style",
"SubfolderWillBeCreatedAutomaticallyInterp": "'{0}' subfolder will be created automatically",
"SuggestTranslationChange": "Suggest translation change",
"System": "System",
"SystemTimeCheckMessage": "System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected",
"Table": "Table",
"TableOptions": "Table Options",
"TableOptionsColumnsMessage": "Choose which columns are visible and which order they appear in",
"TagCannotBeDeletedWhileInUse": "Cannot be deleted while in use",
"Tags": "Tags",
"TagsHelpText": "Applies to movies with at least one matching tag",
"TagsSettingsSummary": "See all tags and how they are used. Unused tags can be removed",
@ -592,8 +655,8 @@
"Timeleft": "Timeleft",
"Title": "Title",
"Titles": "Titles",
"TMDBId": "TMDB Id",
"TmdbIdHelpText": "The TMDB Id of the movie to exclude",
"TMDBId": "TMDb Id",
"TmdbIdHelpText": "The TMDb Id of the movie to exclude",
"TorrentDelay": "Torrent Delay",
"TorrentDelayHelpText": "Delay in minutes to wait before grabbing a torrent",
"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",
"UpdateSelected": "Update Selected",
"UpgradeAllowedHelpText": "If disabled qualities will not be upgraded",
"UpgradeUntilThisQualityIsMetOrExceeded": "Upgrade until this quality is met or exceeded",
"Uptime": "Uptime",
"URLBase": "URL Base",
"UrlBaseHelpText": "For reverse proxy support, default is empty",
@ -645,6 +709,8 @@
"Version": "Version",
"VideoCodec": "Video Codec",
"View": "View",
"WaitingToImport": "Waiting to Import",
"WaitingToProcess": "Waiting to Process",
"Wanted": "Wanted",
"Warn": "Warn",
"Week": "Week",

Loading…
Cancel
Save