1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-21 22:05:38 -04:00

Add Translations to Settings Pages

This commit is contained in:
Stevie Robinson
2023-07-22 21:14:33 +02:00
committed by Mark McDowall
parent 8008610d47
commit f2c31e92ce
102 changed files with 1697 additions and 802 deletions
@@ -13,6 +13,7 @@ import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes, kinds } from 'Helpers/Props';
import { numberSettingShape, stringSettingShape } from 'Helpers/Props/Shapes/settingShape';
import translate from 'Utilities/String/translate';
import styles from './EditImportListExclusionModalContent.css';
function EditImportListExclusionModalContent(props) {
@@ -38,7 +39,7 @@ function EditImportListExclusionModalContent(props) {
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
{id ? 'Edit Import List Exclusion' : 'Add Import List Exclusion'}
{id ? translate('EditImportListExclusion') : translate('AddImportListExclusion')}
</ModalHeader>
<ModalBody className={styles.body}>
@@ -49,7 +50,9 @@ function EditImportListExclusionModalContent(props) {
{
!isFetching && !!error &&
<div>Unable to add a new import list exclusion, please try again.</div>
<div>
{translate('AddImportListExclusionError')}
</div>
}
{
@@ -58,24 +61,24 @@ function EditImportListExclusionModalContent(props) {
{...otherProps}
>
<FormGroup>
<FormLabel>Title</FormLabel>
<FormLabel>{translate('Title')}</FormLabel>
<FormInputGroup
type={inputTypes.TEXT}
name="title"
helpText="The name of the series to exclude"
helpText={translate('SeriesTitleToExcludeHelpText')}
{...title}
onChange={onInputChange}
/>
</FormGroup>
<FormGroup>
<FormLabel>TVDB ID</FormLabel>
<FormLabel>{translate('TvdbId')}</FormLabel>
<FormInputGroup
type={inputTypes.TEXT}
name="tvdbId"
helpText="The TVDB ID of the series to exclude"
helpText={translate('TvdbIdExcludeHelpText')}
{...tvdbId}
onChange={onInputChange}
/>
@@ -92,14 +95,14 @@ function EditImportListExclusionModalContent(props) {
kind={kinds.DANGER}
onPress={onDeleteImportListExclusionPress}
>
Delete
{translate('Delete')}
</Button>
}
<Button
onPress={onModalClose}
>
Cancel
{translate('Cancel')}
</Button>
<SpinnerErrorButton
@@ -107,7 +110,7 @@ function EditImportListExclusionModalContent(props) {
error={saveError}
onPress={onSavePress}
>
Save
{translate('Save')}
</SpinnerErrorButton>
</ModalFooter>
</ModalContent>
@@ -5,6 +5,7 @@ import Icon from 'Components/Icon';
import Link from 'Components/Link/Link';
import ConfirmModal from 'Components/Modal/ConfirmModal';
import { icons, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import EditImportListExclusionModalConnector from './EditImportListExclusionModalConnector';
import styles from './ImportListExclusion.css';
@@ -85,9 +86,9 @@ class ImportListExclusion extends Component {
<ConfirmModal
isOpen={this.state.isDeleteImportListExclusionModalOpen}
kind={kinds.DANGER}
title="Delete Import List Exclusion"
message="Are you sure you want to delete this import list exclusion?"
confirmLabel="Delete"
title={translate('DeleteImportListExclusion')}
message={translate('DeleteImportListExclusionMessageText')}
confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteImportListExclusion}
onCancel={this.onDeleteImportListExclusionModalClose}
/>
@@ -5,6 +5,7 @@ import Icon from 'Components/Icon';
import Link from 'Components/Link/Link';
import PageSectionContent from 'Components/Page/PageSectionContent';
import { icons } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import EditImportListExclusionModalConnector from './EditImportListExclusionModalConnector';
import ImportListExclusion from './ImportListExclusion';
import styles from './ImportListExclusions.css';
@@ -44,14 +45,18 @@ class ImportListExclusions extends Component {
} = this.props;
return (
<FieldSet legend="Import List Exclusions">
<FieldSet legend={translate('ImportListExclusions')}>
<PageSectionContent
errorMessage="Unable to load Import List Exclusions"
errorMessage={translate('ImportListExclusionsLoadError')}
{...otherProps}
>
<div className={styles.importListExclusionsHeader}>
<div className={styles.title}>Title</div>
<div className={styles.tvdbId}>TVDB ID</div>
<div className={styles.title}>
{translate('Title')}
</div>
<div className={styles.tvdbId}>
{translate('TvdbId')}
</div>
</div>
<div>
@@ -66,7 +66,7 @@ class ImportListSettings extends Component {
} = this.state;
return (
<PageContent title="Import List Settings">
<PageContent title={translate('ImportListSettings')}>
<SettingsToolbarConnector
isSaving={isSaving}
hasPendingChanges={hasPendingChanges}
@@ -75,7 +75,7 @@ class ImportListSettings extends Component {
<PageToolbarSeparator />
<PageToolbarButton
label="Test All Lists"
label={translate('TestAllLists')}
iconName={icons.TEST}
isSpinning={isTestingAll}
onPress={dispatchTestAllImportLists}
@@ -5,6 +5,7 @@ import Link from 'Components/Link/Link';
import Menu from 'Components/Menu/Menu';
import MenuContent from 'Components/Menu/MenuContent';
import { sizes } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import AddImportListPresetMenuItem from './AddImportListPresetMenuItem';
import styles from './AddImportListItem.css';
@@ -57,7 +58,7 @@ class AddImportListItem extends Component {
size={sizes.SMALL}
onPress={this.onListSelect}
>
Custom
{translate('Custom')}
</Button>
<Menu className={styles.presetsMenu}>
@@ -65,7 +66,7 @@ class AddImportListItem extends Component {
className={styles.presetsMenuButton}
size={sizes.SMALL}
>
Presets
{translate('Presets')}
</Button>
<MenuContent>
@@ -90,7 +91,7 @@ class AddImportListItem extends Component {
to={infoLink}
size={sizes.SMALL}
>
More info
{translate('MoreInfo')}
</Button>
</div>
</div>
@@ -10,6 +10,7 @@ import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { kinds } from 'Helpers/Props';
import titleCase from 'Utilities/String/titleCase';
import translate from 'Utilities/String/translate';
import AddImportListItem from './AddImportListItem';
import styles from './AddImportListModalContent.css';
@@ -31,7 +32,7 @@ class AddImportListModalContent extends Component {
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
Add List
{translate('AddImportList')}
</ModalHeader>
<ModalBody>
@@ -43,7 +44,9 @@ class AddImportListModalContent extends Component {
{
!isSchemaFetching && !!schemaError ?
<div>Unable to add a new list, please try again.</div> :
<div>
{translate('AddListError')}
</div> :
null
}
@@ -52,13 +55,20 @@ class AddImportListModalContent extends Component {
<div>
<Alert kind={kinds.INFO}>
<div>Sonarr supports multiple lists for importing Series into the database.</div>
<div>For more information on the individual lists, click on the info buttons.</div>
<div>
{translate('SupportedLists')}
</div>
<div>
{translate('SupportedListsMoreInfo')}
</div>
</Alert>
{
Object.keys(listGroups).map((key) => {
return (
<FieldSet legend={`${titleCase(key)} List`} key={key}>
<FieldSet key={key} legend={translate('TypeOfList', {
typeOfList: titleCase(key)
})} // `${titleCase(key)} ${translate('List')}`}
>
<div className={styles.lists}>
{
listGroups[key].map((list) => {
@@ -85,7 +95,7 @@ class AddImportListModalContent extends Component {
<Button
onPress={onModalClose}
>
Close
{translate('Close')}
</Button>
</ModalFooter>
</ModalContent>
@@ -19,6 +19,7 @@ import ModalHeader from 'Components/Modal/ModalHeader';
import Popover from 'Components/Tooltip/Popover';
import { icons, inputTypes, kinds, tooltipPositions } from 'Helpers/Props';
import formatShortTimeSpan from 'Utilities/Date/formatShortTimeSpan';
import translate from 'Utilities/String/translate';
import styles from './EditImportListModalContent.css';
function EditImportListModalContent(props) {
@@ -57,7 +58,7 @@ function EditImportListModalContent(props) {
return (
<ModalContent onModalClose={onModalClose}>
<ModalHeader>
{id ? 'Edit List' : 'Add List'}
{id ? translate('EditImportList') : translate('AddImportList')}
</ModalHeader>
<ModalBody>
@@ -69,7 +70,9 @@ function EditImportListModalContent(props) {
{
!isFetching && !!error ?
<div>Unable to add a new list, please try again.</div> :
<div>
{translate('AddListError')}
</div> :
null
}
@@ -81,11 +84,13 @@ function EditImportListModalContent(props) {
kind={kinds.INFO}
className={styles.message}
>
{`List will refresh every ${formatShortTimeSpan(minRefreshInterval.value)}`}
{translate('ListWillRefreshEveryInterval', {
refreshInterval: formatShortTimeSpan(minRefreshInterval.value)
})}
</Alert>
<FormGroup>
<FormLabel>Name</FormLabel>
<FormLabel>{translate('Name')}</FormLabel>
<FormInputGroup
type={inputTypes.TEXT}
@@ -96,12 +101,12 @@ function EditImportListModalContent(props) {
</FormGroup>
<FormGroup>
<FormLabel>Enable Automatic Add</FormLabel>
<FormLabel>{translate('EnableAutomaticAdd')}</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="enableAutomaticAdd"
helpText={'Add series to Sonarr when syncs are performed via the UI or by Sonarr'}
helpText={translate('EnableAutomaticAddHelpText')}
{...enableAutomaticAdd}
onChange={onInputChange}
/>
@@ -109,7 +114,7 @@ function EditImportListModalContent(props) {
<FormGroup>
<FormLabel>
Monitor
{translate('Monitor')}
<Popover
anchor={
@@ -118,7 +123,7 @@ function EditImportListModalContent(props) {
name={icons.INFO}
/>
}
title="Monitoring Options"
title={translate('MonitoringOptions')}
body={<SeriesMonitoringOptionsPopoverContent />}
position={tooltipPositions.RIGHT}
/>
@@ -133,12 +138,12 @@ function EditImportListModalContent(props) {
</FormGroup>
<FormGroup>
<FormLabel>Root Folder</FormLabel>
<FormLabel>{translate('RootFolder')}</FormLabel>
<FormInputGroup
type={inputTypes.ROOT_FOLDER_SELECT}
name="rootFolderPath"
helpText={'Root Folder list items will be added to'}
helpText={translate('ListRootFolderHelpText')}
{...rootFolderPath}
includeMissingValue={true}
onChange={onInputChange}
@@ -146,12 +151,12 @@ function EditImportListModalContent(props) {
</FormGroup>
<FormGroup>
<FormLabel>Quality Profile</FormLabel>
<FormLabel>{translate('QualityProfile')}</FormLabel>
<FormInputGroup
type={inputTypes.QUALITY_PROFILE_SELECT}
name="qualityProfileId"
helpText={'Quality Profile list items will be added with'}
helpText={translate('ListQualityProfileHelpText')}
{...qualityProfileId}
onChange={onInputChange}
/>
@@ -159,7 +164,7 @@ function EditImportListModalContent(props) {
<FormGroup>
<FormLabel>
Series Type
{translate('SeriesType')}
<Popover
anchor={
@@ -168,7 +173,7 @@ function EditImportListModalContent(props) {
name={icons.INFO}
/>
}
title="Series Types"
title={translate('SeriesTypes')}
body={<SeriesTypePopoverContent />}
position={tooltipPositions.RIGHT}
/>
@@ -183,7 +188,7 @@ function EditImportListModalContent(props) {
</FormGroup>
<FormGroup>
<FormLabel>Season Folder</FormLabel>
<FormLabel>{translate('SeasonFolder')}</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
@@ -194,12 +199,12 @@ function EditImportListModalContent(props) {
</FormGroup>
<FormGroup>
<FormLabel>Sonarr Tags</FormLabel>
<FormLabel>{translate('SonarrTags')}</FormLabel>
<FormInputGroup
type={inputTypes.TAG}
name="tags"
helpText="Tags list items will be added with"
helpText={translate('ListTagsHelpText')}
{...tags}
onChange={onInputChange}
/>
@@ -238,7 +243,7 @@ function EditImportListModalContent(props) {
kind={kinds.DANGER}
onPress={onDeleteImportListPress}
>
Delete
{translate('Delete')}
</Button>
}
@@ -247,13 +252,13 @@ function EditImportListModalContent(props) {
error={saveError}
onPress={onTestPress}
>
Test
{translate('Test')}
</SpinnerErrorButton>
<Button
onPress={onModalClose}
>
Cancel
{translate('Cancel')}
</Button>
<SpinnerErrorButton
@@ -261,7 +266,7 @@ function EditImportListModalContent(props) {
error={saveError}
onPress={onSavePress}
>
Save
{translate('Save')}
</SpinnerErrorButton>
</ModalFooter>
</ModalContent>
@@ -5,6 +5,7 @@ import Label from 'Components/Label';
import ConfirmModal from 'Components/Modal/ConfirmModal';
import { kinds } from 'Helpers/Props';
import formatShortTimeSpan from 'Utilities/Date/formatShortTimeSpan';
import translate from 'Utilities/String/translate';
import EditImportListModalConnector from './EditImportListModalConnector';
import styles from './ImportList.css';
@@ -73,7 +74,7 @@ class ImportList extends Component {
{
enableAutomaticAdd &&
<Label kind={kinds.SUCCESS}>
Automatic Add
{translate('AutomaticAdd')}
</Label>
}
@@ -81,7 +82,7 @@ class ImportList extends Component {
<div className={styles.enabled}>
<Label kind={kinds.INFO} title='List Refresh Interval'>
{`Refresh: ${formatShortTimeSpan(minRefreshInterval)}`}
{`${translate('Refresh')}: ${formatShortTimeSpan(minRefreshInterval)}`}
</Label>
</div>
@@ -95,9 +96,9 @@ class ImportList extends Component {
<ConfirmModal
isOpen={this.state.isDeleteImportListModalOpen}
kind={kinds.DANGER}
title="Delete Import List"
message={`Are you sure you want to delete the list '${name}'?`}
confirmLabel="Delete"
title={translate('DeleteImportList')}
message={translate('DeleteImportListMessageText', { name })}
confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteImportList}
onCancel={this.onDeleteImportListModalClose}
/>
@@ -6,6 +6,7 @@ import Icon from 'Components/Icon';
import PageSectionContent from 'Components/Page/PageSectionContent';
import { icons } from 'Helpers/Props';
import sortByName from 'Utilities/Array/sortByName';
import translate from 'Utilities/String/translate';
import AddImportListModal from './AddImportListModal';
import EditImportListModalConnector from './EditImportListModalConnector';
import ImportList from './ImportList';
@@ -59,11 +60,9 @@ class ImportLists extends Component {
} = this.state;
return (
<FieldSet
legend="Import Lists"
>
<FieldSet legend={translate('ImportLists')} >
<PageSectionContent
errorMessage="Unable to load Lists"
errorMessage={translate('ImportListsLoadError')}
{...otherProps}
>
<div className={styles.lists}>
@@ -7,6 +7,7 @@ import TableRow from 'Components/Table/TableRow';
import TagListConnector from 'Components/TagListConnector';
import { createQualityProfileSelectorForHook } from 'Store/Selectors/createQualityProfileSelector';
import { SelectStateInputProps } from 'typings/props';
import translate from 'Utilities/String/translate';
import styles from './ManageImportListsModalRow.css';
interface ManageImportListsModalRowProps {
@@ -63,7 +64,7 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) {
</TableRowCell>
<TableRowCell className={styles.qualityProfileId}>
{qualityProfile?.name ?? 'None'}
{qualityProfile?.name ?? translate('None')}
</TableRowCell>
<TableRowCell className={styles.rootFolderPath}>
@@ -71,7 +72,7 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) {
</TableRowCell>
<TableRowCell className={styles.enableAutomaticAdd}>
{enableAutomaticAdd ? 'Yes' : 'No'}
{enableAutomaticAdd ? translate('Yes') : translate('No')}
</TableRowCell>
<TableRowCell className={styles.tags}>