Localization framework

This commit is contained in:
nitsua
2021-04-16 22:01:47 -04:00
committed by ta264
parent 144134446d
commit d87bf5ae63
196 changed files with 3074 additions and 924 deletions
+7 -6
View File
@@ -14,6 +14,7 @@ import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptions
import { align, icons, sortDirections } from 'Helpers/Props';
import getErrorMessage from 'Utilities/Object/getErrorMessage';
import hasDifferentItemsOrOrder from 'Utilities/Object/hasDifferentItemsOrOrder';
import translate from 'Utilities/String/translate';
import AuthorIndexFooterConnector from './AuthorIndexFooterConnector';
import AuthorIndexBannersConnector from './Banners/AuthorIndexBannersConnector';
import AuthorIndexBannerOptionsModal from './Banners/Options/AuthorIndexBannerOptionsModal';
@@ -213,7 +214,7 @@ class AuthorIndex extends Component {
<PageToolbar>
<PageToolbarSection>
<PageToolbarButton
label="Update all"
label={translate('UpdateAll')}
iconName={icons.REFRESH}
spinningName={icons.REFRESH}
isSpinning={isRefreshingAuthor}
@@ -221,7 +222,7 @@ class AuthorIndex extends Component {
/>
<PageToolbarButton
label="RSS Sync"
label={translate('RSSSync')}
iconName={icons.RSS}
isSpinning={isRssSyncExecuting}
isDisabled={hasNoAuthor}
@@ -242,7 +243,7 @@ class AuthorIndex extends Component {
optionsComponent={AuthorIndexTableOptionsConnector}
>
<PageToolbarButton
label="Options"
label={translate('Options')}
iconName={icons.TABLE}
/>
</TableOptionsModalWrapper> :
@@ -252,7 +253,7 @@ class AuthorIndex extends Component {
{
view === 'posters' ?
<PageToolbarButton
label="Options"
label={translate('Options')}
iconName={icons.POSTER}
isDisabled={hasNoAuthor}
onPress={this.onPosterOptionsPress}
@@ -263,7 +264,7 @@ class AuthorIndex extends Component {
{
view === 'banners' ?
<PageToolbarButton
label="Options"
label={translate('Options')}
iconName={icons.POSTER}
isDisabled={hasNoAuthor}
onPress={this.onBannerOptionsPress}
@@ -274,7 +275,7 @@ class AuthorIndex extends Component {
{
view === 'overview' ?
<PageToolbarButton
label="Options"
label={translate('Options')}
iconName={icons.OVERVIEW}
isDisabled={hasNoAuthor}
onPress={this.onOverviewOptionsPress}
+21 -12
View File
@@ -5,6 +5,7 @@ import { ColorImpairedConsumer } from 'App/ColorImpairedContext';
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 './AuthorIndexFooter.css';
class AuthorIndexFooter extends PureComponent {
@@ -60,7 +61,9 @@ class AuthorIndexFooter extends PureComponent {
enableColorImpairedMode && 'colorImpaired'
)}
/>
<div>Continuing (All books downloaded)</div>
<div>
{translate('ContinuingAllBooksDownloaded')}
</div>
</div>
<div className={styles.legendItem}>
@@ -70,7 +73,9 @@ class AuthorIndexFooter extends PureComponent {
enableColorImpairedMode && 'colorImpaired'
)}
/>
<div>Ended (All books downloaded)</div>
<div>
{translate('EndedAllBooksDownloaded')}
</div>
</div>
<div className={styles.legendItem}>
@@ -80,7 +85,9 @@ class AuthorIndexFooter extends PureComponent {
enableColorImpairedMode && 'colorImpaired'
)}
/>
<div>Missing Books (Author monitored)</div>
<div>
{translate('MissingBooksAuthorMonitored')}
</div>
</div>
<div className={styles.legendItem}>
@@ -90,55 +97,57 @@ class AuthorIndexFooter extends PureComponent {
enableColorImpairedMode && 'colorImpaired'
)}
/>
<div>Missing Books (Author not monitored)</div>
<div>
{translate('MissingBooksAuthorNotMonitored')}
</div>
</div>
</div>
<div className={styles.statistics}>
<DescriptionList>
<DescriptionListItem
title="Authors"
title={translate('Authors')}
data={count}
/>
<DescriptionListItem
title="Ended"
title={translate('Ended')}
data={ended}
/>
<DescriptionListItem
title="Continuing"
title={translate('Continuing')}
data={continuing}
/>
</DescriptionList>
<DescriptionList>
<DescriptionListItem
title="Monitored"
title={translate('Monitored')}
data={monitored}
/>
<DescriptionListItem
title="Unmonitored"
title={translate('Unmonitored')}
data={count - monitored}
/>
</DescriptionList>
<DescriptionList>
<DescriptionListItem
title="Books"
title={translate('Books')}
data={books}
/>
<DescriptionListItem
title="Files"
title={translate('Files')}
data={bookFiles}
/>
</DescriptionList>
<DescriptionList>
<DescriptionListItem
title="Total File Size"
title={translate('TotalFileSize')}
data={formatBytes(totalFileSize)}
/>
</DescriptionList>
@@ -10,6 +10,7 @@ import Link from 'Components/Link/Link';
import SpinnerIconButton from 'Components/Link/SpinnerIconButton';
import { icons } from 'Helpers/Props';
import getRelativeDate from 'Utilities/Date/getRelativeDate';
import translate from 'Utilities/String/translate';
import AuthorIndexBannerInfo from './AuthorIndexBannerInfo';
import styles from './AuthorIndexBanner.css';
@@ -107,7 +108,7 @@ class AuthorIndexBanner extends Component {
<SpinnerIconButton
className={styles.action}
name={icons.REFRESH}
title="Refresh Author"
title={translate('RefreshAuthor')}
isSpinning={isRefreshingAuthor}
onPress={onRefreshAuthorPress}
/>
@@ -117,7 +118,7 @@ class AuthorIndexBanner extends Component {
<SpinnerIconButton
className={styles.action}
name={icons.SEARCH}
title="Search for monitored books"
title={translate('SearchForMonitoredBooks')}
isSpinning={isSearchingAuthor}
onPress={onSearchPress}
/>
@@ -126,7 +127,7 @@ class AuthorIndexBanner extends Component {
<IconButton
className={styles.action}
name={icons.EDIT}
title="Edit Author"
title={translate('EditAuthor')}
onPress={this.onEditAuthorPress}
/>
</Label>
@@ -135,7 +136,7 @@ class AuthorIndexBanner extends Component {
status === 'ended' &&
<div
className={styles.ended}
title="Ended"
title={translate('Ended')}
/>
}
@@ -11,6 +11,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
const bannerSizeOptions = [
{ key: 'small', value: 'Small' },
@@ -114,7 +115,9 @@ class AuthorIndexBannerOptionsModalContent extends Component {
<ModalBody>
<Form>
<FormGroup>
<FormLabel> Size</FormLabel>
<FormLabel>
{translate('Size')}
</FormLabel>
<FormInputGroup
type={inputTypes.SELECT}
@@ -126,61 +129,71 @@ class AuthorIndexBannerOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Detailed Progress Bar</FormLabel>
<FormLabel>
{translate('DetailedProgressBar')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="detailedProgressBar"
value={detailedProgressBar}
helpText="Show text on progess bar"
helpText={translate('DetailedProgressBarHelpText')}
onChange={this.onChangeBannerOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Name</FormLabel>
<FormLabel>
{translate('ShowName')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showTitle"
value={showTitle}
helpText="Show author name under banner"
helpText={translate('ShowTitleHelpText')}
onChange={this.onChangeBannerOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Monitored</FormLabel>
<FormLabel>
{translate('ShowMonitored')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showMonitored"
value={showMonitored}
helpText="Show monitored status under banner"
helpText={translate('ShowMonitoredHelpText')}
onChange={this.onChangeBannerOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Quality Profile</FormLabel>
<FormLabel>
{translate('ShowQualityProfile')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showQualityProfile"
value={showQualityProfile}
helpText="Show quality profile under banner"
helpText={translate('ShowQualityProfileHelpText')}
onChange={this.onChangeBannerOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Search</FormLabel>
<FormLabel>
{translate('ShowSearch')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showSearchAction"
value={showSearchAction}
helpText="Show search button on hover"
helpText={translate('ShowSearchActionHelpText')}
onChange={this.onChangeBannerOption}
/>
</FormGroup>
@@ -12,6 +12,7 @@ import { icons } from 'Helpers/Props';
import dimensions from 'Styles/Variables/dimensions';
import fonts from 'Styles/Variables/fonts';
import stripHtml from 'Utilities/String/stripHtml';
import translate from 'Utilities/String/translate';
import AuthorIndexOverviewInfo from './AuthorIndexOverviewInfo';
import styles from './AuthorIndexOverview.css';
@@ -130,7 +131,7 @@ class AuthorIndexOverview extends Component {
status === 'ended' &&
<div
className={styles.ended}
title="Ended"
title={translate('Ended')}
/>
}
@@ -173,7 +174,7 @@ class AuthorIndexOverview extends Component {
<div className={styles.actions}>
<SpinnerIconButton
name={icons.REFRESH}
title="Refresh Author"
title={translate('RefreshAuthor')}
isSpinning={isRefreshingAuthor}
onPress={onRefreshAuthorPress}
/>
@@ -183,7 +184,7 @@ class AuthorIndexOverview extends Component {
<SpinnerIconButton
className={styles.action}
name={icons.SEARCH}
title="Search for monitored books"
title={translate('SearchForMonitoredBooks')}
isSpinning={isSearchingAuthor}
onPress={onSearchPress}
/>
@@ -191,7 +192,7 @@ class AuthorIndexOverview extends Component {
<IconButton
name={icons.EDIT}
title="Edit Author"
title={translate('EditAuthor')}
onPress={this.onEditAuthorPress}
/>
</div>
@@ -11,6 +11,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
const posterSizeOptions = [
{ key: 'small', value: 'Small' },
@@ -142,7 +143,9 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
<ModalBody>
<Form>
<FormGroup>
<FormLabel>Poster Size</FormLabel>
<FormLabel>
{translate('PosterSize')}
</FormLabel>
<FormInputGroup
type={inputTypes.SELECT}
@@ -154,19 +157,23 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Detailed Progress Bar</FormLabel>
<FormLabel>
{translate('DetailedProgressBar')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="detailedProgressBar"
value={detailedProgressBar}
helpText="Show text on progess bar"
helpText={translate('DetailedProgressBarHelpText')}
onChange={this.onChangeOverviewOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Monitored</FormLabel>
<FormLabel>
{translate('ShowMonitored')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
@@ -178,7 +185,9 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
<FormGroup>
<FormLabel>Show Quality Profile</FormLabel>
<FormLabel>
{translate('ShowQualityProfile')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
@@ -189,7 +198,9 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Show Last Book</FormLabel>
<FormLabel>
{translate('ShowLastBook')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
@@ -200,7 +211,9 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Show Date Added</FormLabel>
<FormLabel>
{translate('ShowDateAdded')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
@@ -211,7 +224,9 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Show Book Count</FormLabel>
<FormLabel>
{translate('ShowBookCount')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
@@ -222,7 +237,9 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Show Path</FormLabel>
<FormLabel>
{translate('ShowPath')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
@@ -233,7 +250,9 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Show Size on Disk</FormLabel>
<FormLabel>
{translate('ShowSizeOnDisk')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
@@ -244,13 +263,15 @@ class AuthorIndexOverviewOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Show Search</FormLabel>
<FormLabel>
{translate('ShowSearch')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showSearchAction"
value={showSearchAction}
helpText="Show search button"
helpText={translate('ShowSearchActionHelpText')}
onChange={this.onChangeOverviewOption}
/>
</FormGroup>
@@ -10,6 +10,7 @@ import Link from 'Components/Link/Link';
import SpinnerIconButton from 'Components/Link/SpinnerIconButton';
import { icons } from 'Helpers/Props';
import getRelativeDate from 'Utilities/Date/getRelativeDate';
import translate from 'Utilities/String/translate';
import AuthorIndexPosterInfo from './AuthorIndexPosterInfo';
import styles from './AuthorIndexPoster.css';
@@ -122,7 +123,7 @@ class AuthorIndexPoster extends Component {
<SpinnerIconButton
className={styles.action}
name={icons.REFRESH}
title="Refresh Author"
title={translate('RefreshAuthor')}
isSpinning={isRefreshingAuthor}
onPress={onRefreshAuthorPress}
/>
@@ -132,7 +133,7 @@ class AuthorIndexPoster extends Component {
<SpinnerIconButton
className={styles.action}
name={icons.SEARCH}
title="Search for monitored books"
title={translate('SearchForMonitoredBooks')}
isSpinning={isSearchingAuthor}
onPress={onSearchPress}
/>
@@ -141,7 +142,7 @@ class AuthorIndexPoster extends Component {
<IconButton
className={styles.action}
name={icons.EDIT}
title="Edit Author"
title={translate('EditAuthor')}
onPress={this.onEditAuthorPress}
/>
</Label>
@@ -150,7 +151,7 @@ class AuthorIndexPoster extends Component {
status === 'ended' &&
<div
className={styles.ended}
title="Ended"
title={translate('Ended')}
/>
}
@@ -11,6 +11,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
const posterSizeOptions = [
{ key: 'small', value: 'Small' },
@@ -114,7 +115,9 @@ class AuthorIndexPosterOptionsModalContent extends Component {
<ModalBody>
<Form>
<FormGroup>
<FormLabel>Poster Size</FormLabel>
<FormLabel>
{translate('PosterSize')}
</FormLabel>
<FormInputGroup
type={inputTypes.SELECT}
@@ -126,61 +129,71 @@ class AuthorIndexPosterOptionsModalContent extends Component {
</FormGroup>
<FormGroup>
<FormLabel>Detailed Progress Bar</FormLabel>
<FormLabel>
{translate('DetailedProgressBar')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="detailedProgressBar"
value={detailedProgressBar}
helpText="Show text on progess bar"
helpText={translate('DetailedProgressBarHelpText')}
onChange={this.onChangePosterOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Name</FormLabel>
<FormLabel>
{translate('ShowName')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showTitle"
value={showTitle}
helpText="Show author name under poster"
helpText={translate('ShowTitleHelpText')}
onChange={this.onChangePosterOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Monitored</FormLabel>
<FormLabel>
{translate('ShowMonitored')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showMonitored"
value={showMonitored}
helpText="Show monitored status under poster"
helpText={translate('ShowMonitoredHelpText')}
onChange={this.onChangePosterOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Quality Profile</FormLabel>
<FormLabel>
{translate('ShowQualityProfile')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showQualityProfile"
value={showQualityProfile}
helpText="Show quality profile under poster"
helpText={translate('ShowQualityProfileHelpText')}
onChange={this.onChangePosterOption}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Search</FormLabel>
<FormLabel>
{translate('ShowSearch')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showSearchAction"
value={showSearchAction}
helpText="Show search button on hover"
helpText={translate('ShowSearchActionHelpText')}
onChange={this.onChangePosterOption}
/>
</FormGroup>
@@ -3,6 +3,7 @@ import React from 'react';
import ProgressBar from 'Components/ProgressBar';
import { sizes } from 'Helpers/Props';
import getProgressBarKind from 'Utilities/Author/getProgressBarKind';
import translate from 'Utilities/String/translate';
import styles from './AuthorIndexProgressBar.css';
function AuthorIndexProgressBar(props) {
@@ -28,7 +29,7 @@ function AuthorIndexProgressBar(props) {
size={detailedProgressBar ? sizes.MEDIUM : sizes.SMALL}
showText={detailedProgressBar}
text={text}
title={`${bookFileCount} / ${bookCount} (Total: ${totalBookCount})`}
title={translate('BookFileCountBookCountTotalTotalBookCountInterp', [bookFileCount, bookCount, totalBookCount])}
width={posterWidth}
/>
);
@@ -6,6 +6,7 @@ import IconButton from 'Components/Link/IconButton';
import SpinnerIconButton from 'Components/Link/SpinnerIconButton';
import VirtualTableRowCell from 'Components/Table/Cells/VirtualTableRowCell';
import { icons } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
class AuthorIndexActionsCell extends Component {
@@ -65,14 +66,14 @@ class AuthorIndexActionsCell extends Component {
>
<SpinnerIconButton
name={icons.REFRESH}
title="Refresh Author"
title={translate('RefreshAuthor')}
isSpinning={isRefreshingAuthor}
onPress={onRefreshAuthorPress}
/>
<IconButton
name={icons.EDIT}
title="Edit Author"
title={translate('EditAuthor')}
onPress={this.onEditAuthorPress}
/>
@@ -17,6 +17,7 @@ import TagListConnector from 'Components/TagListConnector';
import { icons } from 'Helpers/Props';
import getProgressBarKind from 'Utilities/Author/getProgressBarKind';
import formatBytes from 'Utilities/Number/formatBytes';
import translate from 'Utilities/String/translate';
import AuthorStatusCell from './AuthorStatusCell';
import hasGrowableColumns from './hasGrowableColumns';
import styles from './AuthorIndexRow.css';
@@ -278,7 +279,7 @@ class AuthorIndexRow extends Component {
kind={getProgressBarKind(status, monitored, progress)}
showText={true}
text={`${bookFileCount} / ${bookCount}`}
title={`${bookFileCount} / ${bookCount} (Total: ${totalBookCount})`}
title={translate('BookFileCountBookCountTotalTotalBookCountInterp', [bookFileCount, bookCount, totalBookCount])}
width={125}
/>
</VirtualTableRowCell>
@@ -356,7 +357,7 @@ class AuthorIndexRow extends Component {
>
<SpinnerIconButton
name={icons.REFRESH}
title="Refresh Author"
title={translate('RefreshAuthor')}
isSpinning={isRefreshingAuthor}
onPress={onRefreshAuthorPress}
/>
@@ -366,7 +367,7 @@ class AuthorIndexRow extends Component {
<SpinnerIconButton
className={styles.action}
name={icons.SEARCH}
title="Search for monitored books"
title={translate('SearchForMonitoredBooks')}
isSpinning={isSearchingAuthor}
onPress={onSearchPress}
/>
@@ -374,7 +375,7 @@ class AuthorIndexRow extends Component {
<IconButton
name={icons.EDIT}
title="Edit Author"
title={translate('EditAuthor')}
onPress={this.onEditAuthorPress}
/>
</VirtualTableRowCell>
@@ -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 AuthorIndexTableOptions extends Component {
@@ -64,25 +65,29 @@ class AuthorIndexTableOptions extends Component {
return (
<Fragment>
<FormGroup>
<FormLabel>Show Banners</FormLabel>
<FormLabel>
{translate('ShowBanners')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showBanners"
value={showBanners}
helpText="Show banners instead of names"
helpText={translate('ShowBannersHelpText')}
onChange={this.onTableOptionChange}
/>
</FormGroup>
<FormGroup>
<FormLabel>Show Search</FormLabel>
<FormLabel>
{translate('ShowSearch')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="showSearchAction"
value={showSearchAction}
helpText="Show search button on hover"
helpText={translate('ShowSearchActionHelpText')}
onChange={this.onTableOptionChange}
/>
</FormGroup>
@@ -3,6 +3,7 @@ import React from 'react';
import Icon from 'Components/Icon';
import VirtualTableRowCell from 'Components/Table/Cells/TableRowCell';
import { icons } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import styles from './AuthorStatusCell.css';
function AuthorStatusCell(props) {
@@ -22,13 +23,13 @@ function AuthorStatusCell(props) {
<Icon
className={styles.statusIcon}
name={monitored ? icons.MONITORED : icons.UNMONITORED}
title={monitored ? 'Author is monitored' : 'Author is unmonitored'}
title={monitored ? translate('MonitoredAuthorIsMonitored') : translate('MonitoredAuthorIsUnmonitored')}
/>
<Icon
className={styles.statusIcon}
name={status === 'ended' ? icons.AUTHOR_ENDED : icons.AUTHOR_CONTINUING}
title={status === 'ended' ? 'Deceased' : 'Continuing'}
title={status === 'ended' ? translate('StatusEndedDeceased') : translate('StatusEndedContinuing')}
/>
</Component>
);