Fixed: Missing Translates

This commit is contained in:
Bakerboy448 2023-04-29 16:02:00 -05:00 committed by Bogdan
parent f8d0d4a2a0
commit 89972b8b66
30 changed files with 183 additions and 133 deletions

View file

@ -109,7 +109,7 @@ function HistoryDetails(props) {
{
customFormatScore && customFormatScore !== '0' ?
<DescriptionListItem
title="Custom Format Score"
title={translate('CustomFormatScore')}
data={formatPreferredWordScore(customFormatScore)}
/> :
null
@ -226,7 +226,7 @@ function HistoryDetails(props) {
{
customFormatScore && customFormatScore !== '0' ?
<DescriptionListItem
title="Custom Format Score"
title={translate('CustomFormatScore')}
data={formatPreferredWordScore(customFormatScore)}
/> :
null
@ -272,7 +272,7 @@ function HistoryDetails(props) {
{
customFormatScore && customFormatScore !== '0' ?
<DescriptionListItem
title="Custom Format Score"
title={translate('CustomFormatScore')}
data={formatPreferredWordScore(customFormatScore)}
/> :
null

View file

@ -45,7 +45,7 @@ function QueueDetails(props) {
<Icon
name={icons.DOWNLOAD}
kind={kinds.WARNING}
title={'Downloaded - Unable to Import: check logs for details'}
title={translate('DownloadedUnableToImportCheckLogsForDetails')}
/>
);
}
@ -55,7 +55,7 @@ function QueueDetails(props) {
<Icon
name={icons.DOWNLOAD}
kind={kinds.PURPLE}
title={'Downloaded - Waiting to Import'}
title={translate('DownloadedWaitingToImport')}
/>
);
}
@ -65,7 +65,7 @@ function QueueDetails(props) {
<Icon
name={icons.DOWNLOAD}
kind={kinds.PURPLE}
title={'Downloaded - Importing'}
title={translate('DownloadedImporting')}
/>
);
}

View file

@ -103,7 +103,7 @@ class AlbumDetailsPageConnector extends Component {
if ((isFetching || !this.state.hasMounted) ||
(!isFetching && !isPopulated)) {
return (
<PageContent title='loading'>
<PageContent title={translate('Loading')}>
<PageContentBody>
<LoadingIndicator />
</PageContentBody>

View file

@ -77,7 +77,9 @@ function AppUpdatedModalContent(props) {
<div>
{
!update.changes &&
<div className={styles.maintenance}>Maintenance release</div>
<div className={styles.maintenance}>
{translate('MaintenanceRelease')}
</div>
}
{

View file

@ -3,6 +3,7 @@ import React from 'react';
import DescriptionList from 'Components/DescriptionList/DescriptionList';
import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem';
import formatBytes from 'Utilities/Number/formatBytes';
import translate from 'Utilities/String/translate';
import styles from './AlbumGroupInfo.css';
function AlbumGroupInfo(props) {
@ -18,28 +19,28 @@ function AlbumGroupInfo(props) {
<DescriptionListItem
titleClassName={styles.title}
descriptionClassName={styles.description}
title="Total"
title={translate('Total')}
data={totalAlbumCount}
/>
<DescriptionListItem
titleClassName={styles.title}
descriptionClassName={styles.description}
title="Monitored"
title={translate('Monitored')}
data={monitoredAlbumCount}
/>
<DescriptionListItem
titleClassName={styles.title}
descriptionClassName={styles.description}
title="Track Files"
title={translate('TrackFiles')}
data={trackFileCount}
/>
<DescriptionListItem
titleClassName={styles.title}
descriptionClassName={styles.description}
title="Size on Disk"
title={translate('SizeOnDisk')}
data={formatBytes(sizeOnDisk)}
/>
</DescriptionList>

View file

@ -74,7 +74,7 @@ class ArtistDetailsPageConnector extends Component {
if (isFetching && !isPopulated) {
return (
<PageContent title='loading'>
<PageContent title={translate('Loading')}>
<PageContentBody>
<LoadingIndicator />
</PageContentBody>

View file

@ -231,7 +231,7 @@ class ArtistDetailsSeason extends Component {
<span>{albumCount} / {monitoredAlbumCount}</span>
</Label>
}
title="Group Information"
title={translate('GroupInformation')}
body={
<div>
<AlbumGroupInfo

View file

@ -6,6 +6,7 @@ import ModalBody from 'Components/Modal/ModalBody';
import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import translate from 'Utilities/String/translate';
import styles from './ModalError.css';
function ModalError(props) {
@ -25,7 +26,7 @@ function ModalError(props) {
messageClassName={styles.message}
detailsClassName={styles.details}
{...otherProps}
message='There was an error loading this item'
message={translate('ThereWasAnErrorLoadingThisItem')}
/>
</ModalBody>

View file

@ -1,5 +1,6 @@
import React from 'react';
import ErrorBoundaryError from 'Components/Error/ErrorBoundaryError';
import translate from 'Utilities/String/translate';
import PageContentBody from './PageContentBody';
import styles from './PageContentError.css';
@ -9,7 +10,7 @@ function PageContentError(props) {
<PageContentBody>
<ErrorBoundaryError
{...props}
message='There was an error loading this page'
message={translate('ThereWasAnErrorLoadingThisPage')}
/>
</PageContentBody>
</div>

View file

@ -310,7 +310,7 @@ class InteractiveImportRow extends Component {
anchor={
<Icon name={icons.INTERACTIVE} />
}
title="Formats"
title={translate('Formats')}
body={
<div className={styles.customFormatTooltip}>
<AlbumFormats formats={customFormats} />

View file

@ -10,6 +10,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes, kinds, scrollDirections } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import styles from './SelectReleaseGroupModalContent.css';
class SelectReleaseGroupModalContent extends Component {
@ -64,7 +65,9 @@ class SelectReleaseGroupModalContent extends Component {
>
<Form>
<FormGroup>
<FormLabel>Release Group</FormLabel>
<FormLabel>
{translate('ReleaseGroup')}
</FormLabel>
<FormInputGroup
type={inputTypes.TEXT}

View file

@ -67,8 +67,7 @@ const columns = [
{
name: 'rejections',
label: React.createElement(Icon, {
name: icons.DANGER,
title: translate('rejections')
name: icons.DANGER
}),
isSortable: true,
fixedSortDirection: sortDirections.ASCENDING,

View file

@ -127,7 +127,7 @@ class AddNewItem extends Component {
!isFetching && !!error ?
<div className={styles.message}>
<div className={styles.helpText}>
Failed to load search results, please try again.
{translate('FailedLoadingSearchResults')}
</div>
<div>{getErrorMessage(error)}</div>
</div> : null
@ -166,7 +166,9 @@ class AddNewItem extends Component {
{
!isFetching && !error && !items.length && !!term &&
<div className={styles.message}>
<div className={styles.noResults}>Couldn't find any results for '{term}'</div>
<div className={styles.noResults}>
{translate('CouldntFindAnyResultsForTerm'[term])}
</div>
<div>
You can also search using the
<Link to="https://musicbrainz.org/search"> MusicBrainz ID </Link>
@ -178,7 +180,9 @@ class AddNewItem extends Component {
{
!term &&
<div className={styles.message}>
<div className={styles.helpText}>It's easy to add a new artist, just start typing the name of the artist you want to add.</div>
<div className={styles.helpText}>
{translate('ItsEasyToAddANewArtistJustStartTypingTheNameOfTheArtistYouWantToAdd')}
</div>
<div>
You can also search using the
<Link to="https://musicbrainz.org/search"> MusicBrainz ID </Link>

View file

@ -4,6 +4,7 @@ import { HTML5Backend } from 'react-dnd-html5-backend';
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
import SettingsToolbarConnector from 'Settings/SettingsToolbarConnector';
import translate from 'Utilities/String/translate';
import CustomFormatsConnector from './CustomFormats/CustomFormatsConnector';
class CustomFormatSettingsConnector extends Component {
@ -13,7 +14,7 @@ class CustomFormatSettingsConnector extends Component {
render() {
return (
<PageContent title="Custom Format Settings">
<PageContent title={translate('CustomFormatSettings')}>
<SettingsToolbarConnector
showSave={false}
/>

View file

@ -5,6 +5,7 @@ import Label from 'Components/Label';
import IconButton from 'Components/Link/IconButton';
import ConfirmModal from 'Components/Modal/ConfirmModal';
import { icons, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import EditCustomFormatModalConnector from './EditCustomFormatModalConnector';
import ExportCustomFormatModal from './ExportCustomFormatModal';
import styles from './CustomFormat.css';
@ -92,14 +93,14 @@ class CustomFormat extends Component {
<div className={styles.buttons}>
<IconButton
className={styles.cloneButton}
title="Clone Custom Format"
title={translate('CloneCustomFormat')}
name={icons.CLONE}
onPress={this.onCloneCustomFormatPress}
/>
<IconButton
className={styles.cloneButton}
title="Export Custom Format"
title={translate('ExportCustomFormat')}
name={icons.EXPORT}
onPress={this.onExportCustomFormatPress}
/>
@ -150,9 +151,9 @@ class CustomFormat extends Component {
<ConfirmModal
isOpen={this.state.isDeleteCustomFormatModalOpen}
kind={kinds.DANGER}
title="Delete Custom Format"
message={`Are you sure you want to delete the custom format '${name}'?`}
confirmLabel="Delete"
title={translate('DeleteCustomFormat')}
message={translate('DeleteCustomFormatMessageText', [name])}
confirmLabel={translate('Delete')}
isSpinning={isDeleting}
onConfirm={this.onConfirmDeleteCustomFormat}
onCancel={this.onDeleteCustomFormatModalClose}

View file

@ -5,6 +5,7 @@ import FieldSet from 'Components/FieldSet';
import Icon from 'Components/Icon';
import PageSectionContent from 'Components/Page/PageSectionContent';
import { icons } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import CustomFormat from './CustomFormat';
import EditCustomFormatModalConnector from './EditCustomFormatModalConnector';
import styles from './CustomFormats.css';
@ -58,9 +59,9 @@ class CustomFormats extends Component {
} = this.props;
return (
<FieldSet legend="Custom Formats">
<FieldSet legend={translate('CustomFormats')}>
<PageSectionContent
errorMessage="Unable to load custom formats"
errorMessage={translate('UnableToLoadCustomFormats')}
{...otherProps}c={true}
>
<div className={styles.customFormats}>

View file

@ -15,6 +15,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { icons, inputTypes, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import ImportCustomFormatModal from './ImportCustomFormatModal';
import AddSpecificationModal from './Specifications/AddSpecificationModal';
import EditSpecificationModalConnector from './Specifications/EditSpecificationModalConnector';
@ -141,14 +142,14 @@ class EditCustomFormatModalContent extends Component {
<FormInputGroup
type={inputTypes.CHECK}
name="includeCustomFormatWhenRenaming"
helpText={'Include in {Custom Formats} renaming format'}
helpText={translate('IncludeCustomFormatWhenRenamingHelpText')}
{...includeCustomFormatWhenRenaming}
onChange={onInputChange}
/>
</FormGroup>
</Form>
<FieldSet legend={'Conditions'}>
<FieldSet legend={translate('Conditions')}>
<div className={styles.customFormats}>
{
specifications.map((tag) => {

View file

@ -8,6 +8,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import styles from './ExportCustomFormatModalContent.css';
class ExportCustomFormatModalContent extends Component {
@ -59,7 +60,7 @@ class ExportCustomFormatModalContent extends Component {
<ClipboardButton
className={styles.button}
value={json}
title="Copy to clipboard"
title={translate('CopyToClipboard')}
kind={kinds.DEFAULT}
/>
<Button

View file

@ -14,6 +14,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import styles from './EditSpecificationModalContent.css';
function EditSpecificationModalContent(props) {
@ -98,7 +99,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>
@ -112,7 +113,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('CustomFormatRequiredHelpText', [implementationName, implementationName])}
onChange={onInputChange}
/>
</FormGroup>

View file

@ -5,6 +5,7 @@ import Label from 'Components/Label';
import IconButton from 'Components/Link/IconButton';
import ConfirmModal from 'Components/Modal/ConfirmModal';
import { icons, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import EditSpecificationModalConnector from './EditSpecificationModal';
import styles from './Specification.css';
@ -77,7 +78,7 @@ class Specification extends Component {
<IconButton
className={styles.cloneButton}
title="Clone"
title={translate('Clone')}
name={icons.CLONE}
onPress={this.onCloneSpecificationPress}
/>
@ -113,9 +114,9 @@ class Specification extends Component {
<ConfirmModal
isOpen={this.state.isDeleteSpecificationModalOpen}
kind={kinds.DANGER}
title="Delete Format"
message={`Are you sure you want to delete format tag ${name} ?`}
confirmLabel="Delete"
title={translate('DeleteFormat')}
message={translate('DeleteFormatMessageText', [name])}
confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteSpecification}
onCancel={this.onDeleteSpecificationModalClose}
/>

View file

@ -51,8 +51,10 @@ class ImportListExclusions extends Component {
{...otherProps}
>
<div className={styles.importListExclusionsHeader}>
<div className={styles.host}>Name</div>
<div className={styles.path}>Foreign Id</div>
<div className={styles.host}>{translate('Name')}</div>
<div className={styles.path}>
{translate('ForeignId')}
</div>
</div>
<div>

View file

@ -33,7 +33,7 @@ function ImportListMonitoringOptionsPopoverContent() {
<DescriptionListItem
title={translate('SpecificAlbum')}
data={translate('SecificMonitoringOptionHelpText')}
data={translate('SpecificMonitoringOptionHelpText')}
/>
<DescriptionListItem
@ -49,7 +49,7 @@ function EditImportListModalContent(props) {
const monitorOptions = [
{ key: 'none', value: translate('None') },
{ key: 'specificAlbum', value: translate('SpecificAlbum') },
{ key: 'entireArtist', value: translate('All Artist Albums') }
{ key: 'entireArtist', value: translate('AllArtistAlbums') }
];
const {

View file

@ -254,7 +254,7 @@ class MediaManagement extends Component {
]}
helpTextWarning={
settings.downloadPropersAndRepacks.value === 'doNotPrefer' ?
'Use custom formats for automatic upgrades to propers/repacks' :
translate('DownloadPropersAndRepacksHelpTextWarning') :
undefined
}
values={downloadPropersAndRepacksOptions}

View file

@ -218,7 +218,7 @@ class EditQualityProfileModalContent extends Component {
type={inputTypes.NUMBER}
name="minFormatScore"
{...minFormatScore}
helpText="Minimum custom format score allowed to download"
helpText={translate('MinFormatScoreHelpText')}
onChange={onInputChange}
/>
</FormGroup>
@ -235,7 +235,7 @@ class EditQualityProfileModalContent extends Component {
type={inputTypes.NUMBER}
name="cutoffFormatScore"
{...cutoffFormatScore}
helpText="Once this custom format score is reached Lidarr will no longer grab album releases"
helpText={translate('CutoffFormatScoreHelpText')}
onChange={onInputChange}
/>
</FormGroup>

View file

@ -72,7 +72,7 @@ class Quality extends Component {
<PageToolbarSeparator />
<PageToolbarButton
label="Reset Definitions"
label={translate('ResetDefinitions')}
iconName={icons.REFRESH}
isSpinning={isResettingQualityDefinitions}
onPress={this.onResetQualityDefinitionsPress}

View file

@ -9,6 +9,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import styles from './ResetQualityDefinitionsModalContent.css';
class ResetQualityDefinitionsModalContent extends Component {
@ -63,13 +64,15 @@ class ResetQualityDefinitionsModalContent extends Component {
</div>
<FormGroup>
<FormLabel>Reset Titles</FormLabel>
<FormLabel>
{translate('ResetTitles')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="resetDefinitionTitles"
value={resetDefinitionTitles}
helpText="Reset definition titles as well as values"
helpText={translate('ResetDefinitionTitlesHelpText')}
onChange={this.onResetDefinitionTitlesChange}
/>
</FormGroup>

View file

@ -167,7 +167,7 @@ function TagDetailsModalContent(props) {
{
indexers.length ?
<FieldSet legend="Indexers">
<FieldSet legend={translate('Indexers')}>
{
indexers.map((item) => {
return (

View file

@ -61,7 +61,7 @@ export const defaultState = {
},
{
name: 'rootFolderPath',
label: translate('Root Folder Path'),
label: translate('RootFolderPath'),
type: filterBuilderTypes.EXACT
},
{

View file

@ -20,17 +20,17 @@ const columns = [
},
{
name: 'lastExecution',
label: translate('Last Execution'),
label: translate('LastExecution'),
isVisible: true
},
{
name: 'lastDuration',
label: translate('Last Duration'),
label: translate('LastDuration'),
isVisible: true
},
{
name: 'nextExecution',
label: translate('Next Execution'),
label: translate('NextExecution'),
isVisible: true
},
{