New: Translation support for UI Sidebar, Search Input, Base Menus

pull/4618/head
Qstick 4 years ago
parent bfc0361784
commit 074b49fa8c

@ -12,6 +12,7 @@ import PageToolbar from 'Components/Page/Toolbar/PageToolbar';
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection'; import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
import BlacklistRowConnector from './BlacklistRowConnector'; import BlacklistRowConnector from './BlacklistRowConnector';
import translate from 'Utilities/String/translate';
class Blacklist extends Component { class Blacklist extends Component {
@ -36,7 +37,7 @@ class Blacklist extends Component {
<PageToolbar> <PageToolbar>
<PageToolbarSection> <PageToolbarSection>
<PageToolbarButton <PageToolbarButton
label="Clear" label={translate('Clear')}
iconName={icons.CLEAR} iconName={icons.CLEAR}
isSpinning={isClearingBlacklistExecuting} isSpinning={isClearingBlacklistExecuting}
onPress={onClearBlacklistPress} onPress={onClearBlacklistPress}
@ -49,7 +50,7 @@ class Blacklist extends Component {
columns={columns} columns={columns}
> >
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.TABLE} iconName={icons.TABLE}
/> />
</TableOptionsModalWrapper> </TableOptionsModalWrapper>

@ -13,6 +13,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
import FilterMenu from 'Components/Menu/FilterMenu'; import FilterMenu from 'Components/Menu/FilterMenu';
import HistoryRowConnector from './HistoryRowConnector'; import HistoryRowConnector from './HistoryRowConnector';
import translate from 'Utilities/String/translate';
class History extends Component { class History extends Component {
@ -46,7 +47,7 @@ class History extends Component {
<PageToolbar> <PageToolbar>
<PageToolbarSection> <PageToolbarSection>
<PageToolbarButton <PageToolbarButton
label="Refresh" label={translate('Refresh')}
iconName={icons.REFRESH} iconName={icons.REFRESH}
isSpinning={isFetching} isSpinning={isFetching}
onPress={onFirstPagePress} onPress={onFirstPagePress}
@ -59,7 +60,7 @@ class History extends Component {
columns={columns} columns={columns}
> >
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.TABLE} iconName={icons.TABLE}
/> />
</TableOptionsModalWrapper> </TableOptionsModalWrapper>

@ -22,6 +22,7 @@ import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptions
import RemoveQueueItemsModal from './RemoveQueueItemsModal'; import RemoveQueueItemsModal from './RemoveQueueItemsModal';
import QueueOptionsConnector from './QueueOptionsConnector'; import QueueOptionsConnector from './QueueOptionsConnector';
import QueueRowConnector from './QueueRowConnector'; import QueueRowConnector from './QueueRowConnector';
import translate from 'Utilities/String/translate';
class Queue extends Component { class Queue extends Component {
@ -152,7 +153,7 @@ class Queue extends Component {
<PageToolbar> <PageToolbar>
<PageToolbarSection> <PageToolbarSection>
<PageToolbarButton <PageToolbarButton
label="Refresh" label={translate('Refresh')}
iconName={icons.REFRESH} iconName={icons.REFRESH}
isSpinning={isRefreshing} isSpinning={isRefreshing}
onPress={onRefreshPress} onPress={onRefreshPress}
@ -186,7 +187,7 @@ class Queue extends Component {
optionsComponent={QueueOptionsConnector} optionsComponent={QueueOptionsConnector}
> >
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.TABLE} iconName={icons.TABLE}
/> />
</TableOptionsModalWrapper> </TableOptionsModalWrapper>

@ -10,6 +10,7 @@ import TextInput from 'Components/Form/TextInput';
import PageContent from 'Components/Page/PageContent'; import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody'; import PageContentBody from 'Components/Page/PageContentBody';
import AddNewMovieSearchResultConnector from './AddNewMovieSearchResultConnector'; import AddNewMovieSearchResultConnector from './AddNewMovieSearchResultConnector';
import translate from 'Utilities/String/translate';
import styles from './AddNewMovie.css'; import styles from './AddNewMovie.css';
class AddNewMovie extends Component { class AddNewMovie extends Component {
@ -166,9 +167,9 @@ class AddNewMovie extends Component {
null : null :
<div className={styles.message}> <div className={styles.message}>
<div className={styles.helpText}> <div className={styles.helpText}>
It's easy to add a new movie, just start typing the name the movie you want to add. {translate('AddNewMessage')}
</div> </div>
<div>You can also search using TMDB ID of a movie. eg. tmdb:71663</div> <div>{translate('AddNewTmdbIdMessage')}</div>
</div> </div>
} }

@ -11,6 +11,7 @@ import PageContentBody from 'Components/Page/PageContentBody';
import Table from 'Components/Table/Table'; import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody'; import TableBody from 'Components/Table/TableBody';
import ImportMovieRootFolderRowConnector from './ImportMovieRootFolderRowConnector'; import ImportMovieRootFolderRowConnector from './ImportMovieRootFolderRowConnector';
import translate from 'Utilities/String/translate';
import styles from './ImportMovieSelectFolder.css'; import styles from './ImportMovieSelectFolder.css';
const rootFolderColumns = [ const rootFolderColumns = [
@ -92,11 +93,11 @@ class ImportMovieSelectFolder extends Component {
!error && isPopulated && !error && isPopulated &&
<div> <div>
<div className={styles.header}> <div className={styles.header}>
Import movies you already have {translate('ImportHeader')}
</div> </div>
<div className={styles.tips}> <div className={styles.tips}>
Some tips to ensure the import goes smoothly: {translate('ImportTipsMessage')}
<ul> <ul>
<li className={styles.tip}> <li className={styles.tip}>
Make sure that your files include the quality in their filenames. eg. <span className={styles.code}>movie.2008.bluray.mkv</span> Make sure that your files include the quality in their filenames. eg. <span className={styles.code}>movie.2008.bluray.mkv</span>
@ -141,7 +142,7 @@ class ImportMovieSelectFolder extends Component {
className={styles.importButtonIcon} className={styles.importButtonIcon}
name={icons.DRIVE} name={icons.DRIVE}
/> />
Choose another folder {translate('ChooseAnotherFolder')}
</Button> </Button>
</div> : </div> :

@ -16,6 +16,7 @@ import CalendarLinkModal from './iCal/CalendarLinkModal';
import CalendarOptionsModal from './Options/CalendarOptionsModal'; import CalendarOptionsModal from './Options/CalendarOptionsModal';
import LegendConnector from './Legend/LegendConnector'; import LegendConnector from './Legend/LegendConnector';
import CalendarConnector from './CalendarConnector'; import CalendarConnector from './CalendarConnector';
import translate from 'Utilities/String/translate';
import styles from './CalendarPage.css'; import styles from './CalendarPage.css';
const MINIMUM_DAY_WIDTH = 120; const MINIMUM_DAY_WIDTH = 120;
@ -109,7 +110,7 @@ class CalendarPage extends Component {
<PageToolbarSeparator /> <PageToolbarSeparator />
<PageToolbarButton <PageToolbarButton
label="RSS Sync" label={translate('RSSSync')}
iconName={icons.RSS} iconName={icons.RSS}
isSpinning={isRssSyncExecuting} isSpinning={isRssSyncExecuting}
onPress={onRssSyncPress} onPress={onRssSyncPress}
@ -126,7 +127,7 @@ class CalendarPage extends Component {
<PageToolbarSection alignContent={align.RIGHT}> <PageToolbarSection alignContent={align.RIGHT}>
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.POSTER} iconName={icons.POSTER}
onPress={this.onOptionsPress} onPress={this.onOptionsPress}
/> />

@ -11,6 +11,7 @@ import MenuContent from 'Components/Menu/MenuContent';
import ViewMenuItem from 'Components/Menu/ViewMenuItem'; import ViewMenuItem from 'Components/Menu/ViewMenuItem';
import * as calendarViews from 'Calendar/calendarViews'; import * as calendarViews from 'Calendar/calendarViews';
import CalendarHeaderViewButton from './CalendarHeaderViewButton'; import CalendarHeaderViewButton from './CalendarHeaderViewButton';
import translate from 'Utilities/String/translate';
import styles from './CalendarHeader.css'; import styles from './CalendarHeader.css';
function getTitle(time, start, end, view, longDateFormat) { function getTitle(time, start, end, view, longDateFormat) {
@ -192,7 +193,7 @@ class CalendarHeader extends Component {
selectedView={view} selectedView={view}
onPress={this.onViewChange} onPress={this.onViewChange}
> >
Day {translate('Day')}
</ViewMenuItem> </ViewMenuItem>
<ViewMenuItem <ViewMenuItem
@ -200,7 +201,7 @@ class CalendarHeader extends Component {
selectedView={view} selectedView={view}
onPress={this.onViewChange} onPress={this.onViewChange}
> >
Agenda {translate('Agenda')}
</ViewMenuItem> </ViewMenuItem>
</MenuContent> </MenuContent>
</Menu> : </Menu> :

@ -6,6 +6,7 @@ import ModalHeader from 'Components/Modal/ModalHeader';
import ModalBody from 'Components/Modal/ModalBody'; import ModalBody from 'Components/Modal/ModalBody';
import ModalFooter from 'Components/Modal/ModalFooter'; import ModalFooter from 'Components/Modal/ModalFooter';
import CustomFilter from './CustomFilter'; import CustomFilter from './CustomFilter';
import translate from 'Utilities/String/translate';
import styles from './CustomFiltersModalContent.css'; import styles from './CustomFiltersModalContent.css';
function CustomFiltersModalContent(props) { function CustomFiltersModalContent(props) {
@ -24,7 +25,7 @@ function CustomFiltersModalContent(props) {
return ( return (
<ModalContent onModalClose={onModalClose}> <ModalContent onModalClose={onModalClose}>
<ModalHeader> <ModalHeader>
Custom Filters {translate('CustomFilters')}
</ModalHeader> </ModalHeader>
<ModalBody> <ModalBody>

@ -21,6 +21,7 @@ import TagSelectInputConnector from './TagSelectInputConnector';
import TextTagInputConnector from './TextTagInputConnector'; import TextTagInputConnector from './TextTagInputConnector';
import TextInput from './TextInput'; import TextInput from './TextInput';
import FormInputHelpText from './FormInputHelpText'; import FormInputHelpText from './FormInputHelpText';
import translate from 'Utilities/String/translate';
import styles from './FormInputGroup.css'; import styles from './FormInputGroup.css';
function getComponent(type) { function getComponent(type) {
@ -195,7 +196,7 @@ function FormInputGroup(props) {
<Link <Link
to={helpLink} to={helpLink}
> >
More Info {translate('MoreInfo')}
</Link> </Link>
} }

@ -4,6 +4,7 @@ import { icons } from 'Helpers/Props';
import FilterMenuContent from './FilterMenuContent'; import FilterMenuContent from './FilterMenuContent';
import Menu from './Menu'; import Menu from './Menu';
import ToolbarMenuButton from './ToolbarMenuButton'; import ToolbarMenuButton from './ToolbarMenuButton';
import translate from 'Utilities/String/translate';
import styles from './FilterMenu.css'; import styles from './FilterMenu.css';
class FilterMenu extends Component { class FilterMenu extends Component {
@ -57,7 +58,7 @@ class FilterMenu extends Component {
> >
<ButtonComponent <ButtonComponent
iconName={icons.FILTER} iconName={icons.FILTER}
text="Filter" text={translate('Filter')}
isDisabled={isDisabled} isDisabled={isDisabled}
indicator={selectedFilterKey !== 'all'} indicator={selectedFilterKey !== 'all'}
/> />

@ -4,6 +4,7 @@ import MenuContent from './MenuContent';
import FilterMenuItem from './FilterMenuItem'; import FilterMenuItem from './FilterMenuItem';
import MenuItem from './MenuItem'; import MenuItem from './MenuItem';
import MenuItemSeparator from './MenuItemSeparator'; import MenuItemSeparator from './MenuItemSeparator';
import translate from 'Utilities/String/translate';
class FilterMenuContent extends Component { class FilterMenuContent extends Component {
@ -61,7 +62,7 @@ class FilterMenuContent extends Component {
{ {
showCustomFilters && showCustomFilters &&
<MenuItem onPress={onCustomFiltersPress}> <MenuItem onPress={onCustomFiltersPress}>
Custom Filters {translate('CustomFilters')}
</MenuItem> </MenuItem>
} }
</MenuContent> </MenuContent>

@ -3,6 +3,7 @@ import React from 'react';
import { icons } from 'Helpers/Props'; import { icons } from 'Helpers/Props';
import Menu from 'Components/Menu/Menu'; import Menu from 'Components/Menu/Menu';
import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton'; import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton';
import translate from 'Utilities/String/translate';
function SortMenu(props) { function SortMenu(props) {
const { const {
@ -19,7 +20,7 @@ function SortMenu(props) {
> >
<ToolbarMenuButton <ToolbarMenuButton
iconName={icons.SORT} iconName={icons.SORT}
text="Sort" text={translate('Sort')}
isDisabled={isDisabled} isDisabled={isDisabled}
/> />
{children} {children}

@ -3,6 +3,7 @@ import React from 'react';
import { icons } from 'Helpers/Props'; import { icons } from 'Helpers/Props';
import Menu from 'Components/Menu/Menu'; import Menu from 'Components/Menu/Menu';
import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton'; import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton';
import translate from 'Utilities/String/translate';
function ViewMenu(props) { function ViewMenu(props) {
const { const {
@ -17,7 +18,7 @@ function ViewMenu(props) {
> >
<ToolbarMenuButton <ToolbarMenuButton
iconName={icons.VIEW} iconName={icons.VIEW}
text="View" text={translate('View')}
isDisabled={isDisabled} isDisabled={isDisabled}
/> />
{children} {children}

@ -7,6 +7,7 @@ import Icon from 'Components/Icon';
import keyboardShortcuts, { shortcuts } from 'Components/keyboardShortcuts'; import keyboardShortcuts, { shortcuts } from 'Components/keyboardShortcuts';
import MovieSearchResult from './MovieSearchResult'; import MovieSearchResult from './MovieSearchResult';
import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import translate from 'Utilities/String/translate';
import FuseWorker from './fuse.worker'; import FuseWorker from './fuse.worker';
import styles from './MovieSearchInput.css'; import styles from './MovieSearchInput.css';
@ -227,7 +228,7 @@ class MovieSearchInput extends Component {
className: styles.input, className: styles.input,
name: 'movieSearch', name: 'movieSearch',
value, value,
placeholder: 'Search', placeholder: translate('Search'),
autoComplete: 'off', autoComplete: 'off',
spellCheck: false, spellCheck: false,
onChange: this.onChange, onChange: this.onChange,

@ -43,9 +43,28 @@
flex-grow: 1; flex-grow: 1;
} }
.translate {
composes: link from '~Components/Link/Link.css';
display: flex;
align-items: center;
justify-content: center;
width: 35px;
color: #fff;
text-align: center;
line-height: 60px;
&:hover {
color: $toobarButtonHoverColor;
}
}
.donate { .donate {
composes: link from '~Components/Link/Link.css'; composes: link from '~Components/Link/Link.css';
display: flex;
align-items: center;
justify-content: center;
width: 30px; width: 30px;
color: $themeRed; color: $themeRed;
text-align: center; text-align: center;
@ -64,8 +83,11 @@
.sidebarToggleContainer { .sidebarToggleContainer {
display: flex; display: flex;
} }
}
.donate { @media only screen and (max-width: $breakpointExtraSmall) {
.donate,
.translate {
display: none; display: none;
} }
} }

@ -77,6 +77,13 @@ class PageHeader extends Component {
to="https://radarr.video/donate.html" to="https://radarr.video/donate.html"
size={14} size={14}
/> />
<IconButton
className={styles.translate}
title="Suggest translation change"
name={icons.TRANSLATE}
to="https://translate.servarr.com/projects/radarr/radarr/"
size={24}
/>
<PageHeaderActionsMenuConnector <PageHeaderActionsMenuConnector
onKeyboardShortcutsPress={this.onOpenKeyboardShortcutsModal} onKeyboardShortcutsPress={this.onOpenKeyboardShortcutsModal}
/> />

@ -8,6 +8,7 @@ import locationShape from 'Helpers/Props/Shapes/locationShape';
import dimensions from 'Styles/Variables/dimensions'; import dimensions from 'Styles/Variables/dimensions';
import OverlayScroller from 'Components/Scroller/OverlayScroller'; import OverlayScroller from 'Components/Scroller/OverlayScroller';
import Scroller from 'Components/Scroller/Scroller'; import Scroller from 'Components/Scroller/Scroller';
import translate from 'Utilities/String/translate';
import QueueStatusConnector from 'Activity/Queue/Status/QueueStatusConnector'; import QueueStatusConnector from 'Activity/Queue/Status/QueueStatusConnector';
import HealthStatusConnector from 'System/Status/Health/HealthStatusConnector'; import HealthStatusConnector from 'System/Status/Health/HealthStatusConnector';
import MessagesConnector from './Messages/MessagesConnector'; import MessagesConnector from './Messages/MessagesConnector';
@ -20,20 +21,20 @@ const SIDEBAR_WIDTH = parseInt(dimensions.sidebarWidth);
const links = [ const links = [
{ {
iconName: icons.MOVIE_CONTINUING, iconName: icons.MOVIE_CONTINUING,
title: 'Movies', title: translate('Movies'),
to: '/', to: '/',
alias: '/movies', alias: '/movies',
children: [ children: [
{ {
title: 'Add New', title: translate('AddNew'),
to: '/add/new' to: '/add/new'
}, },
{ {
title: 'Import', title: translate('Import'),
to: '/add/import' to: '/add/import'
}, },
{ {
title: 'Discover', title: translate('Discover'),
to: '/add/discover' to: '/add/discover'
} }
] ]
@ -41,26 +42,26 @@ const links = [
{ {
iconName: icons.CALENDAR, iconName: icons.CALENDAR,
title: 'Calendar', title: translate('Calendar'),
to: '/calendar' to: '/calendar'
}, },
{ {
iconName: icons.ACTIVITY, iconName: icons.ACTIVITY,
title: 'Activity', title: translate('Activity'),
to: '/activity/queue', to: '/activity/queue',
children: [ children: [
{ {
title: 'Queue', title: translate('Queue'),
to: '/activity/queue', to: '/activity/queue',
statusComponent: QueueStatusConnector statusComponent: QueueStatusConnector
}, },
{ {
title: 'History', title: translate('History'),
to: '/activity/history' to: '/activity/history'
}, },
{ {
title: 'Blacklist', title: translate('Blacklist'),
to: '/activity/blacklist' to: '/activity/blacklist'
} }
] ]
@ -68,55 +69,55 @@ const links = [
{ {
iconName: icons.SETTINGS, iconName: icons.SETTINGS,
title: 'Settings', title: translate('Settings'),
to: '/settings', to: '/settings',
children: [ children: [
{ {
title: 'Media Management', title: translate('MediaManagement'),
to: '/settings/mediamanagement' to: '/settings/mediamanagement'
}, },
{ {
title: 'Profiles', title: translate('Profiles'),
to: '/settings/profiles' to: '/settings/profiles'
}, },
{ {
title: 'Quality', title: translate('Quality'),
to: '/settings/quality' to: '/settings/quality'
}, },
{ {
title: 'Custom Formats', title: translate('CustomFormats'),
to: '/settings/customformats' to: '/settings/customformats'
}, },
{ {
title: 'Indexers', title: translate('Indexers'),
to: '/settings/indexers' to: '/settings/indexers'
}, },
{ {
title: 'Download Clients', title: translate('DownloadClients'),
to: '/settings/downloadclients' to: '/settings/downloadclients'
}, },
{ {
title: 'Lists', title: translate('Lists'),
to: '/settings/netimports' to: '/settings/netimports'
}, },
{ {
title: 'Connect', title: translate('Connect'),
to: '/settings/connect' to: '/settings/connect'
}, },
{ {
title: 'Metadata', title: translate('Metadata'),
to: '/settings/metadata' to: '/settings/metadata'
}, },
{ {
title: 'Tags', title: translate('Tags'),
to: '/settings/tags' to: '/settings/tags'
}, },
{ {
title: 'General', title: translate('General'),
to: '/settings/general' to: '/settings/general'
}, },
{ {
title: 'UI', title: translate('UI'),
to: '/settings/ui' to: '/settings/ui'
} }
] ]
@ -124,32 +125,32 @@ const links = [
{ {
iconName: icons.SYSTEM, iconName: icons.SYSTEM,
title: 'System', title: translate('System'),
to: '/system/status', to: '/system/status',
children: [ children: [
{ {
title: 'Status', title: translate('Status'),
to: '/system/status', to: '/system/status',
statusComponent: HealthStatusConnector statusComponent: HealthStatusConnector
}, },
{ {
title: 'Tasks', title: translate('Tasks'),
to: '/system/tasks' to: '/system/tasks'
}, },
{ {
title: 'Backup', title: translate('Backup'),
to: '/system/backup' to: '/system/backup'
}, },
{ {
title: 'Updates', title: translate('Updates'),
to: '/system/updates' to: '/system/updates'
}, },
{ {
title: 'Events', title: translate('Events'),
to: '/system/events' to: '/system/events'
}, },
{ {
title: 'Log Files', title: translate('LogFiles'),
to: '/system/logs/files' to: '/system/logs/files'
} }
] ]

@ -25,6 +25,7 @@ import AddListMovieSortMenu from './Menus/AddListMovieSortMenu';
import AddListMovieViewMenu from './Menus/AddListMovieViewMenu'; import AddListMovieViewMenu from './Menus/AddListMovieViewMenu';
import NoDiscoverMovie from './NoDiscoverMovie'; import NoDiscoverMovie from './NoDiscoverMovie';
import DiscoverMovieFooterConnector from './DiscoverMovieFooterConnector'; import DiscoverMovieFooterConnector from './DiscoverMovieFooterConnector';
import translate from 'Utilities/String/translate';
import styles from 'Movie/Index/MovieIndex.css'; import styles from 'Movie/Index/MovieIndex.css';
function getViewComponent(view) { function getViewComponent(view) {
@ -290,7 +291,7 @@ class DiscoverMovie extends Component {
columns={columns} columns={columns}
> >
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.TABLE} iconName={icons.TABLE}
/> />
</TableOptionsModalWrapper> : </TableOptionsModalWrapper> :
@ -300,7 +301,7 @@ class DiscoverMovie extends Component {
{ {
view === 'posters' ? view === 'posters' ?
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.POSTER} iconName={icons.POSTER}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onPosterOptionsPress} onPress={this.onPosterOptionsPress}
@ -311,7 +312,7 @@ class DiscoverMovie extends Component {
{ {
view === 'overview' ? view === 'overview' ?
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.OVERVIEW} iconName={icons.OVERVIEW}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onOverviewOptionsPress} onPress={this.onOverviewOptionsPress}

@ -10,6 +10,7 @@ import SpinnerButton from 'Components/Link/SpinnerButton';
import PageContentFooter from 'Components/Page/PageContentFooter'; import PageContentFooter from 'Components/Page/PageContentFooter';
import ExcludeMovieModal from './Exclusion/ExcludeMovieModal'; import ExcludeMovieModal from './Exclusion/ExcludeMovieModal';
import DiscoverMovieFooterLabel from './DiscoverMovieFooterLabel'; import DiscoverMovieFooterLabel from './DiscoverMovieFooterLabel';
import translate from 'Utilities/String/translate';
import styles from './DiscoverMovieFooter.css'; import styles from './DiscoverMovieFooter.css';
class DiscoverMovieFooter extends Component { class DiscoverMovieFooter extends Component {
@ -208,7 +209,7 @@ class DiscoverMovieFooter extends Component {
isDisabled={!selectedCount || isAdding} isDisabled={!selectedCount || isAdding}
onPress={this.onAddMoviesPress} onPress={this.onAddMoviesPress}
> >
Add Movies {translate('AddMovies')}
</SpinnerButton> </SpinnerButton>
</div> </div>
@ -219,7 +220,7 @@ class DiscoverMovieFooter extends Component {
isDisabled={!selectedCount || isExcluding} isDisabled={!selectedCount || isExcluding}
onPress={this.props.onExcludeMoviesPress} onPress={this.props.onExcludeMoviesPress}
> >
Add Exclusion {translate('AddExclusion')}
</SpinnerButton> </SpinnerButton>
</div> </div>
</div> </div>

@ -66,6 +66,7 @@ import {
faHistory as fasHistory, faHistory as fasHistory,
faHome as fasHome, faHome as fasHome,
faInfoCircle as fasInfoCircle, faInfoCircle as fasInfoCircle,
faLanguage as fasLanguage,
faLaptop as fasLaptop, faLaptop as fasLaptop,
faLevelUpAlt as fasLevelUpAlt, faLevelUpAlt as fasLevelUpAlt,
faMedkit as fasMedkit, faMedkit as fasMedkit,
@ -207,6 +208,7 @@ export const TABLE = fasTable;
export const TAGS = fasTags; export const TAGS = fasTags;
export const TBA = fasQuestionCircle; export const TBA = fasQuestionCircle;
export const TEST = fasVial; export const TEST = fasVial;
export const TRANSLATE = fasLanguage;
export const UNGROUP = farObjectUngroup; export const UNGROUP = farObjectUngroup;
export const UNKNOWN = fasQuestion; export const UNKNOWN = fasQuestion;
export const UNMONITORED = farBookmark; export const UNMONITORED = farBookmark;

@ -11,6 +11,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalHeader from 'Components/Modal/ModalHeader'; import ModalHeader from 'Components/Modal/ModalHeader';
import ModalBody from 'Components/Modal/ModalBody'; import ModalBody from 'Components/Modal/ModalBody';
import ModalFooter from 'Components/Modal/ModalFooter'; import ModalFooter from 'Components/Modal/ModalFooter';
import translate from 'Utilities/String/translate';
import styles from './DeleteMovieModalContent.css'; import styles from './DeleteMovieModalContent.css';
class DeleteMovieModalContent extends Component { class DeleteMovieModalContent extends Component {
@ -140,7 +141,7 @@ class DeleteMovieModalContent extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={this.onDeleteMovieConfirmed} onPress={this.onDeleteMovieConfirmed}
> >
Delete {translate('Delete')}
</Button> </Button>
</ModalFooter> </ModalFooter>
</ModalContent> </ModalContent>

@ -42,6 +42,7 @@ import InteractiveSearchTable from 'InteractiveSearch/InteractiveSearchTable';
import InteractiveSearchFilterMenuConnector from 'InteractiveSearch/InteractiveSearchFilterMenuConnector'; import InteractiveSearchFilterMenuConnector from 'InteractiveSearch/InteractiveSearchFilterMenuConnector';
import MovieTagsConnector from './MovieTagsConnector'; import MovieTagsConnector from './MovieTagsConnector';
import MovieReleaseDatesConnector from './MovieReleaseDatesConnector'; import MovieReleaseDatesConnector from './MovieReleaseDatesConnector';
import translate from 'Utilities/String/translate';
import styles from './MovieDetails.css'; import styles from './MovieDetails.css';
const defaultFontSize = parseInt(fonts.defaultFontSize); const defaultFontSize = parseInt(fonts.defaultFontSize);
@ -326,7 +327,7 @@ class MovieDetails extends Component {
/> />
<PageToolbarButton <PageToolbarButton
label="Delete" label={translate('Delete')}
iconName={icons.DELETE} iconName={icons.DELETE}
onPress={this.onDeleteMoviePress} onPress={this.onDeleteMoviePress}
/> />
@ -604,42 +605,42 @@ class MovieDetails extends Component {
className={styles.tab} className={styles.tab}
selectedClassName={styles.selectedTab} selectedClassName={styles.selectedTab}
> >
History {translate('History')}
</Tab> </Tab>
<Tab <Tab
className={styles.tab} className={styles.tab}
selectedClassName={styles.selectedTab} selectedClassName={styles.selectedTab}
> >
Search {translate('Search')}
</Tab> </Tab>
<Tab <Tab
className={styles.tab} className={styles.tab}
selectedClassName={styles.selectedTab} selectedClassName={styles.selectedTab}
> >
Files {translate('Files')}
</Tab> </Tab>
<Tab <Tab
className={styles.tab} className={styles.tab}
selectedClassName={styles.selectedTab} selectedClassName={styles.selectedTab}
> >
Titles {translate('Titles')}
</Tab> </Tab>
<Tab <Tab
className={styles.tab} className={styles.tab}
selectedClassName={styles.selectedTab} selectedClassName={styles.selectedTab}
> >
Cast {translate('Cast')}
</Tab> </Tab>
<Tab <Tab
className={styles.tab} className={styles.tab}
selectedClassName={styles.selectedTab} selectedClassName={styles.selectedTab}
> >
Crew {translate('Crew')}
</Tab> </Tab>
{ {

@ -12,6 +12,7 @@ import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import MoveMovieModal from 'Movie/MoveMovie/MoveMovieModal'; import MoveMovieModal from 'Movie/MoveMovie/MoveMovieModal';
import translate from 'Utilities/String/translate';
import styles from './EditMovieModalContent.css'; import styles from './EditMovieModalContent.css';
class EditMovieModalContent extends Component { class EditMovieModalContent extends Component {
@ -149,7 +150,7 @@ class EditMovieModalContent extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteMoviePress} onPress={onDeleteMoviePress}
> >
Delete {translate('Delete')}
</Button> </Button>
<Button <Button

@ -9,6 +9,7 @@ import ModalContent from 'Components/Modal/ModalContent';
import ModalHeader from 'Components/Modal/ModalHeader'; import ModalHeader from 'Components/Modal/ModalHeader';
import ModalBody from 'Components/Modal/ModalBody'; import ModalBody from 'Components/Modal/ModalBody';
import ModalFooter from 'Components/Modal/ModalFooter'; import ModalFooter from 'Components/Modal/ModalFooter';
import translate from 'Utilities/String/translate';
import styles from './DeleteMovieModalContent.css'; import styles from './DeleteMovieModalContent.css';
class DeleteMovieModalContent extends Component { class DeleteMovieModalContent extends Component {
@ -127,7 +128,7 @@ class DeleteMovieModalContent extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={this.onDeleteMovieConfirmed} onPress={this.onDeleteMovieConfirmed}
> >
Delete {translate('Delete')}
</Button> </Button>
</ModalFooter> </ModalFooter>
</ModalContent> </ModalContent>

@ -11,6 +11,7 @@ import MoveMovieModal from 'Movie/MoveMovie/MoveMovieModal';
import TagsModal from './Tags/TagsModal'; import TagsModal from './Tags/TagsModal';
import DeleteMovieModal from './Delete/DeleteMovieModal'; import DeleteMovieModal from './Delete/DeleteMovieModal';
import MovieEditorFooterLabel from './MovieEditorFooterLabel'; import MovieEditorFooterLabel from './MovieEditorFooterLabel';
import translate from 'Utilities/String/translate';
import styles from './MovieEditorFooter.css'; import styles from './MovieEditorFooter.css';
const NO_CHANGE = 'noChange'; const NO_CHANGE = 'noChange';
@ -257,7 +258,7 @@ class MovieEditorFooter extends Component {
isDisabled={!selectedCount || isDeleting} isDisabled={!selectedCount || isDeleting}
onPress={this.onDeleteSelectedPress} onPress={this.onDeleteSelectedPress}
> >
Delete {translate('Delete')}
</SpinnerButton> </SpinnerButton>
</div> </div>
</div> </div>

@ -6,6 +6,7 @@ import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import Table from 'Components/Table/Table'; import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody'; import TableBody from 'Components/Table/TableBody';
import MovieHistoryRowConnector from './MovieHistoryRowConnector'; import MovieHistoryRowConnector from './MovieHistoryRowConnector';
import translate from 'Utilities/String/translate';
import styles from './MovieHistoryTableContent.css'; import styles from './MovieHistoryTableContent.css';
const columns = [ const columns = [
@ -30,13 +31,13 @@ const columns = [
}, },
{ {
name: 'customFormats', name: 'customFormats',
label: 'Custom Formats', label: translate('CustomFormats'),
isSortable: false, isSortable: false,
isVisible: true isVisible: true
}, },
{ {
name: 'date', name: 'date',
label: 'Date', label: translate('Date'),
isVisible: true isVisible: true
}, },
{ {

@ -31,6 +31,7 @@ import MovieIndexFooterConnector from './MovieIndexFooterConnector';
import MovieEditorFooter from 'Movie/Editor/MovieEditorFooter.js'; import MovieEditorFooter from 'Movie/Editor/MovieEditorFooter.js';
import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal'; import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal';
import OrganizeMovieModal from 'Movie/Editor/Organize/OrganizeMovieModal'; import OrganizeMovieModal from 'Movie/Editor/Organize/OrganizeMovieModal';
import translate from 'Utilities/String/translate';
import styles from './MovieIndex.css'; import styles from './MovieIndex.css';
function getViewComponent(view) { function getViewComponent(view) {
@ -351,15 +352,15 @@ class MovieIndex extends Component {
const isLoaded = !!(!error && isPopulated && items.length && scroller); const isLoaded = !!(!error && isPopulated && items.length && scroller);
const hasNoMovie = !totalItems; const hasNoMovie = !totalItems;
const searchIndexLabel = selectedFilterKey === 'all' ? 'Search All' : 'Search Filtered'; const searchIndexLabel = selectedFilterKey === 'all' ? translate('SearchAll') : 'Search Filtered';
const searchEditorLabel = selectedMovieIds.length > 0 ? 'Search Selected' : 'Search All'; const searchEditorLabel = selectedMovieIds.length > 0 ? 'Search Selected' : translate('SearchAll');
return ( return (
<PageContent> <PageContent>
<PageToolbar> <PageToolbar>
<PageToolbarSection> <PageToolbarSection>
<PageToolbarButton <PageToolbarButton
label={isMovieEditorActive && selectedMovieIds.length > 0 ? 'Update Selected' : 'Update All'} label={isMovieEditorActive && selectedMovieIds.length > 0 ? 'Update Selected' : translate('UpdateAll')}
iconName={icons.REFRESH} iconName={icons.REFRESH}
spinningName={icons.REFRESH} spinningName={icons.REFRESH}
isSpinning={isRefreshingMovie} isSpinning={isRefreshingMovie}
@ -368,7 +369,7 @@ class MovieIndex extends Component {
/> />
<PageToolbarButton <PageToolbarButton
label="RSS Sync" label={translate('RssSync')}
iconName={icons.RSS} iconName={icons.RSS}
isSpinning={isRssSyncExecuting} isSpinning={isRssSyncExecuting}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
@ -385,7 +386,7 @@ class MovieIndex extends Component {
/> />
<PageToolbarButton <PageToolbarButton
label="Manual Import" label={translate('ManualImport')}
iconName={icons.INTERACTIVE} iconName={icons.INTERACTIVE}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onInteractiveImportPress} onPress={this.onInteractiveImportPress}
@ -396,13 +397,13 @@ class MovieIndex extends Component {
{ {
isMovieEditorActive ? isMovieEditorActive ?
<PageToolbarButton <PageToolbarButton
label="Movie Index" label={translate('MovieIndex')}
iconName={icons.MOVIE_CONTINUING} iconName={icons.MOVIE_CONTINUING}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onMovieEditorTogglePress} onPress={this.onMovieEditorTogglePress}
/> : /> :
<PageToolbarButton <PageToolbarButton
label="Movie Editor" label={translate('MovieEditor')}
iconName={icons.EDIT} iconName={icons.EDIT}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onMovieEditorTogglePress} onPress={this.onMovieEditorTogglePress}
@ -412,7 +413,7 @@ class MovieIndex extends Component {
{ {
isMovieEditorActive ? isMovieEditorActive ?
<PageToolbarButton <PageToolbarButton
label={allSelected ? 'Unselect All' : 'Select All'} label={allSelected ? translate('UnselectAll') : translate('SelectAll')}
iconName={icons.CHECK_SQUARE} iconName={icons.CHECK_SQUARE}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onSelectAllPress} onPress={this.onSelectAllPress}
@ -434,7 +435,7 @@ class MovieIndex extends Component {
optionsComponent={MovieIndexTableOptionsConnector} optionsComponent={MovieIndexTableOptionsConnector}
> >
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.TABLE} iconName={icons.TABLE}
/> />
</TableOptionsModalWrapper> : </TableOptionsModalWrapper> :
@ -444,7 +445,7 @@ class MovieIndex extends Component {
{ {
view === 'posters' ? view === 'posters' ?
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.POSTER} iconName={icons.POSTER}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onPosterOptionsPress} onPress={this.onPosterOptionsPress}
@ -455,7 +456,7 @@ class MovieIndex extends Component {
{ {
view === 'overview' ? view === 'overview' ?
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.OVERVIEW} iconName={icons.OVERVIEW}
isDisabled={hasNoMovie} isDisabled={hasNoMovie}
onPress={this.onOverviewOptionsPress} onPress={this.onOverviewOptionsPress}

@ -15,8 +15,9 @@ import SelectLanguageModal from 'MovieFile/Language/SelectLanguageModal';
import * as mediaInfoTypes from 'MovieFile/mediaInfoTypes'; import * as mediaInfoTypes from 'MovieFile/mediaInfoTypes';
import MediaInfoConnector from 'MovieFile/MediaInfoConnector'; import MediaInfoConnector from 'MovieFile/MediaInfoConnector';
import MovieFileRowCellPlaceholder from './MovieFileRowCellPlaceholder'; import MovieFileRowCellPlaceholder from './MovieFileRowCellPlaceholder';
import styles from './MovieFileEditorRow.css';
import FileDetailsModal from '../FileDetailsModal'; import FileDetailsModal from '../FileDetailsModal';
import translate from 'Utilities/String/translate';
import styles from './MovieFileEditorRow.css';
class MovieFileEditorRow extends Component { class MovieFileEditorRow extends Component {
@ -203,7 +204,7 @@ class MovieFileEditorRow extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Selected Movie Files" title="Delete Selected Movie Files"
message={'Are you sure you want to delete the selected movie files?'} message={'Are you sure you want to delete the selected movie files?'}
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDelete} onConfirm={this.onConfirmDelete}
onCancel={this.onConfirmDeleteModalClose} onCancel={this.onConfirmDeleteModalClose}
/> />

@ -4,6 +4,7 @@ import classNames from 'classnames';
import { icons } from 'Helpers/Props'; import { icons } from 'Helpers/Props';
import Icon from 'Components/Icon'; import Icon from 'Components/Icon';
import Link from 'Components/Link/Link'; import Link from 'Components/Link/Link';
import translate from 'Utilities/String/translate';
import styles from './AdvancedSettingsButton.css'; import styles from './AdvancedSettingsButton.css';
function AdvancedSettingsButton(props) { function AdvancedSettingsButton(props) {
@ -44,7 +45,7 @@ function AdvancedSettingsButton(props) {
<div className={styles.labelContainer}> <div className={styles.labelContainer}>
<div className={styles.label}> <div className={styles.label}>
{advancedSettings ? 'Hide Advanced' : 'Show Advanced'} {advancedSettings ? translate('HideAdvanced') : translate('ShowAdvanced')}
</div> </div>
</div> </div>
</Link> </Link>

@ -6,6 +6,7 @@ import Label from 'Components/Label';
import IconButton from 'Components/Link/IconButton'; import IconButton from 'Components/Link/IconButton';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditCustomFormatModalConnector from './EditCustomFormatModalConnector'; import EditCustomFormatModalConnector from './EditCustomFormatModalConnector';
import translate from 'Utilities/String/translate';
import styles from './CustomFormat.css'; import styles from './CustomFormat.css';
class CustomFormat extends Component { class CustomFormat extends Component {
@ -132,7 +133,7 @@ class CustomFormat extends Component {
</div> </div>
</div> </div>
} }
confirmLabel="Delete" confirmLabel={translate('Delete')}
isSpinning={isDeleting} isSpinning={isDeleting}
onConfirm={this.onConfirmDeleteCustomFormat} onConfirm={this.onConfirmDeleteCustomFormat}
onCancel={this.onDeleteCustomFormatModalClose} onCancel={this.onDeleteCustomFormatModalClose}

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

@ -18,6 +18,7 @@ import FormInputGroup from 'Components/Form/FormInputGroup';
import Specification from './Specifications/Specification'; import Specification from './Specifications/Specification';
import AddSpecificationModal from './Specifications/AddSpecificationModal'; import AddSpecificationModal from './Specifications/AddSpecificationModal';
import EditSpecificationModalConnector from './Specifications/EditSpecificationModalConnector'; import EditSpecificationModalConnector from './Specifications/EditSpecificationModalConnector';
import translate from 'Utilities/String/translate';
import styles from './EditCustomFormatModalContent.css'; import styles from './EditCustomFormatModalContent.css';
class EditCustomFormatModalContent extends Component { class EditCustomFormatModalContent extends Component {
@ -185,7 +186,7 @@ class EditCustomFormatModalContent extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteCustomFormatPress} onPress={onDeleteCustomFormatPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -14,6 +14,7 @@ import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup'; import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup';
import translate from 'Utilities/String/translate';
import styles from './EditSpecificationModalContent.css'; import styles from './EditSpecificationModalContent.css';
function EditSpecificationModalContent(props) { function EditSpecificationModalContent(props) {
@ -120,7 +121,7 @@ function EditSpecificationModalContent(props) {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteSpecificationPress} onPress={onDeleteSpecificationPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -6,6 +6,7 @@ import Label from 'Components/Label';
import IconButton from 'Components/Link/IconButton'; import IconButton from 'Components/Link/IconButton';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditSpecificationModalConnector from './EditSpecificationModal'; import EditSpecificationModalConnector from './EditSpecificationModal';
import translate from 'Utilities/String/translate';
import styles from './Specification.css'; import styles from './Specification.css';
class Specification extends Component { class Specification extends Component {
@ -121,7 +122,7 @@ class Specification extends Component {
</div> </div>
</div> </div>
} }
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteSpecification} onConfirm={this.onConfirmDeleteSpecification}
onCancel={this.onDeleteSpecificationModalClose} onCancel={this.onDeleteSpecificationModalClose}
/> />

@ -5,6 +5,7 @@ import Card from 'Components/Card';
import Label from 'Components/Label'; import Label from 'Components/Label';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditDownloadClientModalConnector from './EditDownloadClientModalConnector'; import EditDownloadClientModalConnector from './EditDownloadClientModalConnector';
import translate from 'Utilities/String/translate';
import styles from './DownloadClient.css'; import styles from './DownloadClient.css';
class DownloadClient extends Component { class DownloadClient extends Component {
@ -105,7 +106,7 @@ class DownloadClient extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Download Client" title="Delete Download Client"
message={`Are you sure you want to delete the download client '${name}'?`} message={`Are you sure you want to delete the download client '${name}'?`}
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteDownloadClient} onConfirm={this.onConfirmDeleteDownloadClient}
onCancel={this.onDeleteDownloadClientModalClose} onCancel={this.onDeleteDownloadClientModalClose}
/> />

@ -8,6 +8,7 @@ import PageSectionContent from 'Components/Page/PageSectionContent';
import DownloadClient from './DownloadClient'; import DownloadClient from './DownloadClient';
import AddDownloadClientModal from './AddDownloadClientModal'; import AddDownloadClientModal from './AddDownloadClientModal';
import EditDownloadClientModalConnector from './EditDownloadClientModalConnector'; import EditDownloadClientModalConnector from './EditDownloadClientModalConnector';
import translate from 'Utilities/String/translate';
import styles from './DownloadClients.css'; import styles from './DownloadClients.css';
class DownloadClients extends Component { class DownloadClients extends Component {
@ -58,7 +59,7 @@ class DownloadClients extends Component {
} = this.state; } = this.state;
return ( return (
<FieldSet legend="Download Clients"> <FieldSet legend={translate('DownloadClients')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load download clients" errorMessage="Unable to load download clients"
{...otherProps} {...otherProps}

@ -14,6 +14,7 @@ import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup'; import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup';
import translate from 'Utilities/String/translate';
import styles from './EditDownloadClientModalContent.css'; import styles from './EditDownloadClientModalContent.css';
class EditDownloadClientModalContent extends Component { class EditDownloadClientModalContent extends Component {
@ -144,7 +145,7 @@ class EditDownloadClientModalContent extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteDownloadClientPress} onPress={onDeleteDownloadClientPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -7,6 +7,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
function DownloadClientOptions(props) { function DownloadClientOptions(props) {
const { const {
@ -33,7 +34,7 @@ function DownloadClientOptions(props) {
{ {
hasSettings && !isFetching && !error && hasSettings && !isFetching && !error &&
<div> <div>
<FieldSet legend="Completed Download Handling"> <FieldSet legend={translate('CompletedDownloadHandling')}>
<Form> <Form>
<FormGroup size={sizes.MEDIUM}> <FormGroup size={sizes.MEDIUM}>
<FormLabel>Enable</FormLabel> <FormLabel>Enable</FormLabel>
@ -85,7 +86,7 @@ function DownloadClientOptions(props) {
</FieldSet> </FieldSet>
<FieldSet <FieldSet
legend="Failed Download Handling" legend={translate('FailedDownloadHandling')}
> >
<Form> <Form>
<FormGroup size={sizes.MEDIUM}> <FormGroup size={sizes.MEDIUM}>

@ -13,6 +13,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
import styles from './EditRemotePathMappingModalContent.css'; import styles from './EditRemotePathMappingModalContent.css';
function EditRemotePathMappingModalContent(props) { function EditRemotePathMappingModalContent(props) {
@ -105,7 +106,7 @@ function EditRemotePathMappingModalContent(props) {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteRemotePathMappingPress} onPress={onDeleteRemotePathMappingPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -6,6 +6,7 @@ import Icon from 'Components/Icon';
import Link from 'Components/Link/Link'; import Link from 'Components/Link/Link';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditRemotePathMappingModalConnector from './EditRemotePathMappingModalConnector'; import EditRemotePathMappingModalConnector from './EditRemotePathMappingModalConnector';
import translate from 'Utilities/String/translate';
import styles from './RemotePathMapping.css'; import styles from './RemotePathMapping.css';
class RemotePathMapping extends Component { class RemotePathMapping extends Component {
@ -89,7 +90,7 @@ class RemotePathMapping extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Delay Profile" title="Delete Delay Profile"
message="Are you sure you want to delete this remote path mapping?" message="Are you sure you want to delete this remote path mapping?"
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteRemotePathMapping} onConfirm={this.onConfirmDeleteRemotePathMapping}
onCancel={this.onDeleteRemotePathMappingModalClose} onCancel={this.onDeleteRemotePathMappingModalClose}
/> />

@ -7,6 +7,7 @@ import Link from 'Components/Link/Link';
import PageSectionContent from 'Components/Page/PageSectionContent'; import PageSectionContent from 'Components/Page/PageSectionContent';
import RemotePathMapping from './RemotePathMapping'; import RemotePathMapping from './RemotePathMapping';
import EditRemotePathMappingModalConnector from './EditRemotePathMappingModalConnector'; import EditRemotePathMappingModalConnector from './EditRemotePathMappingModalConnector';
import translate from 'Utilities/String/translate';
import styles from './RemotePathMappings.css'; import styles from './RemotePathMappings.css';
class RemotePathMappings extends Component { class RemotePathMappings extends Component {
@ -44,7 +45,7 @@ class RemotePathMappings extends Component {
} = this.props; } = this.props;
return ( return (
<FieldSet legend="Remote Path Mappings"> <FieldSet legend={translate('RemotePathMappings')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Remote Path Mappings" errorMessage="Unable to load Remote Path Mappings"
{...otherProps} {...otherProps}

@ -5,6 +5,7 @@ import FieldSet from 'Components/FieldSet';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
function AnalyticSettings(props) { function AnalyticSettings(props) {
const { const {
@ -17,7 +18,7 @@ function AnalyticSettings(props) {
} = settings; } = settings;
return ( return (
<FieldSet legend="Analytics"> <FieldSet legend={translate('Analytics')}>
<FormGroup size={sizes.MEDIUM}> <FormGroup size={sizes.MEDIUM}>
<FormLabel>Send Anonymous Usage Data</FormLabel> <FormLabel>Send Anonymous Usage Data</FormLabel>

@ -5,6 +5,7 @@ import FieldSet from 'Components/FieldSet';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
function HostSettings(props) { function HostSettings(props) {
const { const {
@ -27,7 +28,7 @@ function HostSettings(props) {
} = settings; } = settings;
return ( return (
<FieldSet legend="Host"> <FieldSet legend={translate('Host')}>
<FormGroup <FormGroup
advancedSettings={advancedSettings} advancedSettings={advancedSettings}
isAdvanced={true} isAdvanced={true}

@ -5,6 +5,7 @@ import FieldSet from 'Components/FieldSet';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
const logLevelOptions = [ const logLevelOptions = [
{ key: 'info', value: 'Info' }, { key: 'info', value: 'Info' },
@ -23,7 +24,7 @@ function LoggingSettings(props) {
} = settings; } = settings;
return ( return (
<FieldSet legend="Logging"> <FieldSet legend={translate('Logging')}>
<FormGroup> <FormGroup>
<FormLabel>Log Level</FormLabel> <FormLabel>Log Level</FormLabel>

@ -5,6 +5,7 @@ import FieldSet from 'Components/FieldSet';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
function ProxySettings(props) { function ProxySettings(props) {
const { const {
@ -30,7 +31,7 @@ function ProxySettings(props) {
]; ];
return ( return (
<FieldSet legend="Proxy"> <FieldSet legend={translate('Proxy')}>
<FormGroup size={sizes.MEDIUM}> <FormGroup size={sizes.MEDIUM}>
<FormLabel>Use Proxy</FormLabel> <FormLabel>Use Proxy</FormLabel>

@ -9,6 +9,7 @@ import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import FormInputButton from 'Components/Form/FormInputButton'; import FormInputButton from 'Components/Form/FormInputButton';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import translate from 'Utilities/String/translate';
const authenticationMethodOptions = [ const authenticationMethodOptions = [
{ key: 'none', value: 'None' }, { key: 'none', value: 'None' },
@ -76,7 +77,7 @@ class SecuritySettings extends Component {
const authenticationEnabled = authenticationMethod && authenticationMethod.value !== 'none'; const authenticationEnabled = authenticationMethod && authenticationMethod.value !== 'none';
return ( return (
<FieldSet legend="Security"> <FieldSet legend={translate('Security')}>
<FormGroup> <FormGroup>
<FormLabel>Authentication</FormLabel> <FormLabel>Authentication</FormLabel>

@ -6,6 +6,7 @@ import FieldSet from 'Components/FieldSet';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
function UpdateSettings(props) { function UpdateSettings(props) {
const { const {
@ -43,7 +44,7 @@ function UpdateSettings(props) {
updateOptions.push({ key: 'script', value: 'Script' }); updateOptions.push({ key: 'script', value: 'Script' });
return ( return (
<FieldSet legend="Updates"> <FieldSet legend={translate('Updates')}>
<FormGroup <FormGroup
advancedSettings={advancedSettings} advancedSettings={advancedSettings}
isAdvanced={true} isAdvanced={true}

@ -13,6 +13,7 @@ import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup'; import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup';
import translate from 'Utilities/String/translate';
import styles from './EditIndexerModalContent.css'; import styles from './EditIndexerModalContent.css';
function EditIndexerModalContent(props) { function EditIndexerModalContent(props) {
@ -143,7 +144,7 @@ function EditIndexerModalContent(props) {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteIndexerPress} onPress={onDeleteIndexerPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -6,6 +6,7 @@ import Label from 'Components/Label';
import IconButton from 'Components/Link/IconButton'; import IconButton from 'Components/Link/IconButton';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditIndexerModalConnector from './EditIndexerModalConnector'; import EditIndexerModalConnector from './EditIndexerModalConnector';
import translate from 'Utilities/String/translate';
import styles from './Indexer.css'; import styles from './Indexer.css';
class Indexer extends Component { class Indexer extends Component {
@ -136,7 +137,7 @@ class Indexer extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Indexer" title="Delete Indexer"
message={`Are you sure you want to delete the indexer '${name}'?`} message={`Are you sure you want to delete the indexer '${name}'?`}
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteIndexer} onConfirm={this.onConfirmDeleteIndexer}
onCancel={this.onDeleteIndexerModalClose} onCancel={this.onDeleteIndexerModalClose}
/> />

@ -8,6 +8,7 @@ import PageSectionContent from 'Components/Page/PageSectionContent';
import Indexer from './Indexer'; import Indexer from './Indexer';
import AddIndexerModal from './AddIndexerModal'; import AddIndexerModal from './AddIndexerModal';
import EditIndexerModalConnector from './EditIndexerModalConnector'; import EditIndexerModalConnector from './EditIndexerModalConnector';
import translate from 'Utilities/String/translate';
import styles from './Indexers.css'; import styles from './Indexers.css';
class Indexers extends Component { class Indexers extends Component {
@ -64,7 +65,7 @@ class Indexers extends Component {
} = this.state; } = this.state;
return ( return (
<FieldSet legend="Indexers"> <FieldSet legend={translate('Indexers')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Indexers" errorMessage="Unable to load Indexers"
{...otherProps} {...otherProps}

@ -7,6 +7,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
function IndexerOptions(props) { function IndexerOptions(props) {
const { const {
@ -19,7 +20,7 @@ function IndexerOptions(props) {
} = props; } = props;
return ( return (
<FieldSet legend="Options"> <FieldSet legend={translate('Options')}>
{ {
isFetching && isFetching &&
<LoadingIndicator /> <LoadingIndicator />

@ -11,6 +11,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
import styles from './EditRestrictionModalContent.css'; import styles from './EditRestrictionModalContent.css';
function EditRestrictionModalContent(props) { function EditRestrictionModalContent(props) {
@ -91,7 +92,7 @@ function EditRestrictionModalContent(props) {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteRestrictionPress} onPress={onDeleteRestrictionPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -7,6 +7,7 @@ import Label from 'Components/Label';
import TagList from 'Components/TagList'; import TagList from 'Components/TagList';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditRestrictionModalConnector from './EditRestrictionModalConnector'; import EditRestrictionModalConnector from './EditRestrictionModalConnector';
import translate from 'Utilities/String/translate';
import styles from './Restriction.css'; import styles from './Restriction.css';
class Restriction extends Component { class Restriction extends Component {
@ -122,7 +123,7 @@ class Restriction extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Restriction" title="Delete Restriction"
message={'Are you sure you want to delete this restriction?'} message={'Are you sure you want to delete this restriction?'}
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteRestriction} onConfirm={this.onConfirmDeleteRestriction}
onCancel={this.onDeleteRestrictionModalClose} onCancel={this.onDeleteRestrictionModalClose}
/> />

@ -7,6 +7,7 @@ import Icon from 'Components/Icon';
import PageSectionContent from 'Components/Page/PageSectionContent'; import PageSectionContent from 'Components/Page/PageSectionContent';
import Restriction from './Restriction'; import Restriction from './Restriction';
import EditRestrictionModalConnector from './EditRestrictionModalConnector'; import EditRestrictionModalConnector from './EditRestrictionModalConnector';
import translate from 'Utilities/String/translate';
import styles from './Restrictions.css'; import styles from './Restrictions.css';
class Restrictions extends Component { class Restrictions extends Component {
@ -45,7 +46,7 @@ class Restrictions extends Component {
} = this.props; } = this.props;
return ( return (
<FieldSet legend="Restrictions"> <FieldSet legend={translate('Restrictions')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Restrictions" errorMessage="Unable to load Restrictions"
{...otherProps} {...otherProps}

@ -13,6 +13,7 @@ import FormInputGroup from 'Components/Form/FormInputGroup';
import RootFoldersConnector from 'RootFolder/RootFoldersConnector'; import RootFoldersConnector from 'RootFolder/RootFoldersConnector';
import NamingConnector from './Naming/NamingConnector'; import NamingConnector from './Naming/NamingConnector';
import AddRootFolderConnector from './RootFolder/AddRootFolderConnector'; import AddRootFolderConnector from './RootFolder/AddRootFolderConnector';
import translate from 'Utilities/String/translate';
const rescanAfterRefreshOptions = [ const rescanAfterRefreshOptions = [
{ key: 'always', value: 'Always' }, { key: 'always', value: 'Always' },
@ -208,7 +209,7 @@ class MediaManagement extends Component {
} }
<FieldSet <FieldSet
legend="File Management" legend={translate('FileManagement')}
> >
<FormGroup size={sizes.MEDIUM}> <FormGroup size={sizes.MEDIUM}>
<FormLabel>Ignore Deleted Movies</FormLabel> <FormLabel>Ignore Deleted Movies</FormLabel>
@ -364,7 +365,7 @@ class MediaManagement extends Component {
</Form> </Form>
} }
<FieldSet legend="Root Folders"> <FieldSet legend={translate('RootFolders')}>
<RootFoldersConnector /> <RootFoldersConnector />
<AddRootFolderConnector /> <AddRootFolderConnector />
</FieldSet> </FieldSet>

@ -9,6 +9,7 @@ import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import NamingModal from './NamingModal'; import NamingModal from './NamingModal';
import translate from 'Utilities/String/translate';
import styles from './Naming.css'; import styles from './Naming.css';
const colonReplacementOptions = [ const colonReplacementOptions = [
@ -101,7 +102,7 @@ class Naming extends Component {
} }
return ( return (
<FieldSet legend="Movie Naming"> <FieldSet legend={translate('MovieNaming')}>
{ {
isFetching && isFetching &&
<LoadingIndicator /> <LoadingIndicator />

@ -11,6 +11,7 @@ import ModalHeader from 'Components/Modal/ModalHeader';
import ModalBody from 'Components/Modal/ModalBody'; import ModalBody from 'Components/Modal/ModalBody';
import ModalFooter from 'Components/Modal/ModalFooter'; import ModalFooter from 'Components/Modal/ModalFooter';
import NamingOption from './NamingOption'; import NamingOption from './NamingOption';
import translate from 'Utilities/String/translate';
import styles from './NamingModal.css'; import styles from './NamingModal.css';
class NamingModal extends Component { class NamingModal extends Component {
@ -354,7 +355,7 @@ class NamingModal extends Component {
</div> </div>
</FieldSet> </FieldSet>
<FieldSet legend="Custom Formats"> <FieldSet legend={translate('CustomFormats')}>
<div className={styles.groups}> <div className={styles.groups}>
{ {
customFormatTokens.map(({ token, example }) => { customFormatTokens.map(({ token, example }) => {

@ -3,6 +3,7 @@ import React from 'react';
import FieldSet from 'Components/FieldSet'; import FieldSet from 'Components/FieldSet';
import PageSectionContent from 'Components/Page/PageSectionContent'; import PageSectionContent from 'Components/Page/PageSectionContent';
import Metadata from './Metadata'; import Metadata from './Metadata';
import translate from 'Utilities/String/translate';
import styles from './Metadatas.css'; import styles from './Metadatas.css';
function Metadatas(props) { function Metadatas(props) {
@ -12,7 +13,7 @@ function Metadatas(props) {
} = props; } = props;
return ( return (
<FieldSet legend="Metadata"> <FieldSet legend={translate('Metadata')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Metadata" errorMessage="Unable to load Metadata"
{...otherProps} {...otherProps}

@ -7,6 +7,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
export const certificationCountryOptions = [ export const certificationCountryOptions = [
{ key: 'us', value: 'United States' }, { key: 'us', value: 'United States' },
@ -23,7 +24,7 @@ function MetadataOptions(props) {
} = props; } = props;
return ( return (
<FieldSet legend="Options"> <FieldSet legend={translate('Options')}>
{ {
isFetching && isFetching &&
<LoadingIndicator /> <LoadingIndicator />

@ -13,6 +13,7 @@ import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup'; import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup';
import translate from 'Utilities/String/translate';
import styles from './EditNetImportModalContent.css'; import styles from './EditNetImportModalContent.css';
function EditNetImportModalContent(props) { function EditNetImportModalContent(props) {
@ -186,7 +187,7 @@ function EditNetImportModalContent(props) {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteNetImportPress} onPress={onDeleteNetImportPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -5,6 +5,7 @@ import Card from 'Components/Card';
import Label from 'Components/Label'; import Label from 'Components/Label';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditNetImportModalConnector from './EditNetImportModalConnector'; import EditNetImportModalConnector from './EditNetImportModalConnector';
import translate from 'Utilities/String/translate';
import styles from './NetImport.css'; import styles from './NetImport.css';
class NetImport extends Component { class NetImport extends Component {
@ -107,7 +108,7 @@ class NetImport extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete List" title="Delete List"
message={`Are you sure you want to delete the list '${name}'?`} message={`Are you sure you want to delete the list '${name}'?`}
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteNetImport} onConfirm={this.onConfirmDeleteNetImport}
onCancel={this.onDeleteNetImportModalClose} onCancel={this.onDeleteNetImportModalClose}
/> />

@ -8,6 +8,7 @@ import PageSectionContent from 'Components/Page/PageSectionContent';
import NetImport from './NetImport'; import NetImport from './NetImport';
import AddNetImportModal from './AddNetImportModal'; import AddNetImportModal from './AddNetImportModal';
import EditNetImportModalConnector from './EditNetImportModalConnector'; import EditNetImportModalConnector from './EditNetImportModalConnector';
import translate from 'Utilities/String/translate';
import styles from './NetImports.css'; import styles from './NetImports.css';
class NetImports extends Component { class NetImports extends Component {
@ -58,7 +59,7 @@ class NetImports extends Component {
} = this.state; } = this.state;
return ( return (
<FieldSet legend="Lists"> <FieldSet legend={translate('Lists')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Lists" errorMessage="Unable to load Lists"
{...otherProps} {...otherProps}

@ -12,6 +12,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
import styles from './EditNetImportExclusionModalContent.css'; import styles from './EditNetImportExclusionModalContent.css';
function EditNetImportExclusionModalContent(props) { function EditNetImportExclusionModalContent(props) {
@ -105,7 +106,7 @@ function EditNetImportExclusionModalContent(props) {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteNetImportExclusionPress} onPress={onDeleteNetImportExclusionPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -6,6 +6,7 @@ import Icon from 'Components/Icon';
import Link from 'Components/Link/Link'; import Link from 'Components/Link/Link';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditNetImportExclusionModalConnector from './EditNetImportExclusionModalConnector'; import EditNetImportExclusionModalConnector from './EditNetImportExclusionModalConnector';
import translate from 'Utilities/String/translate';
import styles from './NetImportExclusion.css'; import styles from './NetImportExclusion.css';
class NetImportExclusion extends Component { class NetImportExclusion extends Component {
@ -89,7 +90,7 @@ class NetImportExclusion extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Import List Exclusion" title="Delete Import List Exclusion"
message="Are you sure you want to delete this import list exclusion?" message="Are you sure you want to delete this import list exclusion?"
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteNetImportExclusion} onConfirm={this.onConfirmDeleteNetImportExclusion}
onCancel={this.onDeleteNetImportExclusionModalClose} onCancel={this.onDeleteNetImportExclusionModalClose}
/> />

@ -7,6 +7,7 @@ import Link from 'Components/Link/Link';
import PageSectionContent from 'Components/Page/PageSectionContent'; import PageSectionContent from 'Components/Page/PageSectionContent';
import NetImportExclusion from './NetImportExclusion'; import NetImportExclusion from './NetImportExclusion';
import EditNetImportExclusionModalConnector from './EditNetImportExclusionModalConnector'; import EditNetImportExclusionModalConnector from './EditNetImportExclusionModalConnector';
import translate from 'Utilities/String/translate';
import styles from './NetImportExclusions.css'; import styles from './NetImportExclusions.css';
class NetImportExclusions extends Component { class NetImportExclusions extends Component {
@ -44,7 +45,7 @@ class NetImportExclusions extends Component {
} = this.props; } = this.props;
return ( return (
<FieldSet legend="List Exclusions"> <FieldSet legend={translate('ListExclusions')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load List Exclusions" errorMessage="Unable to load List Exclusions"
{...otherProps} {...otherProps}

@ -7,6 +7,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
function NetImportOptions(props) { function NetImportOptions(props) {
const { const {
@ -26,7 +27,7 @@ function NetImportOptions(props) {
]; ];
return ( return (
<FieldSet legend="Options"> <FieldSet legend={translate('Options')}>
{ {
isFetching && isFetching &&
<LoadingIndicator /> <LoadingIndicator />

@ -14,6 +14,7 @@ import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup'; import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup';
import translate from 'Utilities/String/translate';
import styles from './EditNotificationModalContent.css'; import styles from './EditNotificationModalContent.css';
function EditNotificationModalContent(props) { function EditNotificationModalContent(props) {
@ -218,7 +219,7 @@ function EditNotificationModalContent(props) {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteNotificationPress} onPress={onDeleteNotificationPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -5,6 +5,7 @@ import Card from 'Components/Card';
import Label from 'Components/Label'; import Label from 'Components/Label';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditNotificationModalConnector from './EditNotificationModalConnector'; import EditNotificationModalConnector from './EditNotificationModalConnector';
import translate from 'Utilities/String/translate';
import styles from './Notification.css'; import styles from './Notification.css';
class Notification extends Component { class Notification extends Component {
@ -133,7 +134,7 @@ class Notification extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Notification" title="Delete Notification"
message={`Are you sure you want to delete the notification '${name}'?`} message={`Are you sure you want to delete the notification '${name}'?`}
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteNotification} onConfirm={this.onConfirmDeleteNotification}
onCancel={this.onDeleteNotificationModalClose} onCancel={this.onDeleteNotificationModalClose}
/> />

@ -8,6 +8,7 @@ import PageSectionContent from 'Components/Page/PageSectionContent';
import Notification from './Notification'; import Notification from './Notification';
import AddNotificationModal from './AddNotificationModal'; import AddNotificationModal from './AddNotificationModal';
import EditNotificationModalConnector from './EditNotificationModalConnector'; import EditNotificationModalConnector from './EditNotificationModalConnector';
import translate from 'Utilities/String/translate';
import styles from './Notifications.css'; import styles from './Notifications.css';
class Notifications extends Component { class Notifications extends Component {
@ -58,7 +59,7 @@ class Notifications extends Component {
} = this.state; } = this.state;
return ( return (
<FieldSet legend="Connections"> <FieldSet legend={translate('Connections')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Notifications" errorMessage="Unable to load Notifications"
{...otherProps} {...otherProps}

@ -8,6 +8,7 @@ import Link from 'Components/Link/Link';
import TagList from 'Components/TagList'; import TagList from 'Components/TagList';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import EditDelayProfileModalConnector from './EditDelayProfileModalConnector'; import EditDelayProfileModalConnector from './EditDelayProfileModalConnector';
import translate from 'Utilities/String/translate';
import styles from './DelayProfile.css'; import styles from './DelayProfile.css';
function getDelay(enabled, delay) { function getDelay(enabled, delay) {
@ -141,7 +142,7 @@ class DelayProfile extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Delay Profile" title="Delete Delay Profile"
message="Are you sure you want to delete this delay profile?" message="Are you sure you want to delete this delay profile?"
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteDelayProfile} onConfirm={this.onConfirmDeleteDelayProfile}
onCancel={this.onDeleteDelayProfileModalClose} onCancel={this.onDeleteDelayProfileModalClose}
/> />

@ -10,6 +10,7 @@ import DelayProfileDragSource from './DelayProfileDragSource';
import DelayProfileDragPreview from './DelayProfileDragPreview'; import DelayProfileDragPreview from './DelayProfileDragPreview';
import DelayProfile from './DelayProfile'; import DelayProfile from './DelayProfile';
import EditDelayProfileModalConnector from './EditDelayProfileModalConnector'; import EditDelayProfileModalConnector from './EditDelayProfileModalConnector';
import translate from 'Utilities/String/translate';
import styles from './DelayProfiles.css'; import styles from './DelayProfiles.css';
class DelayProfiles extends Component { class DelayProfiles extends Component {
@ -66,7 +67,7 @@ class DelayProfiles extends Component {
return ( return (
<Measure onMeasure={this.onMeasure}> <Measure onMeasure={this.onMeasure}>
<FieldSet legend="Delay Profiles"> <FieldSet legend={translate('DelayProfiles')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Delay Profiles" errorMessage="Unable to load Delay Profiles"
{...otherProps} {...otherProps}

@ -14,6 +14,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
import styles from './EditDelayProfileModalContent.css'; import styles from './EditDelayProfileModalContent.css';
function EditDelayProfileModalContent(props) { function EditDelayProfileModalContent(props) {
@ -136,7 +137,7 @@ function EditDelayProfileModalContent(props) {
kind={kinds.DANGER} kind={kinds.DANGER}
onPress={onDeleteDelayProfilePress} onPress={onDeleteDelayProfilePress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -16,6 +16,7 @@ import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import QualityProfileItems from './QualityProfileItems'; import QualityProfileItems from './QualityProfileItems';
import QualityProfileFormatItems from './QualityProfileFormatItems'; import QualityProfileFormatItems from './QualityProfileFormatItems';
import translate from 'Utilities/String/translate';
import styles from './EditQualityProfileModalContent.css'; import styles from './EditQualityProfileModalContent.css';
const MODAL_BODY_PADDING = parseInt(dimensions.modalBodyPadding); const MODAL_BODY_PADDING = parseInt(dimensions.modalBodyPadding);
@ -297,7 +298,7 @@ class EditQualityProfileModalContent extends Component {
isDisabled={isInUse} isDisabled={isInUse}
onPress={onDeleteQualityProfilePress} onPress={onDeleteQualityProfilePress}
> >
Delete {translate('Delete')}
</Button> </Button>
</div> : </div> :
null null

@ -7,6 +7,7 @@ import IconButton from 'Components/Link/IconButton';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import Tooltip from 'Components/Tooltip/Tooltip'; import Tooltip from 'Components/Tooltip/Tooltip';
import EditQualityProfileModalConnector from './EditQualityProfileModalConnector'; import EditQualityProfileModalConnector from './EditQualityProfileModalConnector';
import translate from 'Utilities/String/translate';
import styles from './QualityProfile.css'; import styles from './QualityProfile.css';
class QualityProfile extends Component { class QualityProfile extends Component {
@ -162,7 +163,7 @@ class QualityProfile extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Quality Profile" title="Delete Quality Profile"
message={`Are you sure you want to delete the quality profile '${name}'?`} message={`Are you sure you want to delete the quality profile '${name}'?`}
confirmLabel="Delete" confirmLabel={translate('Delete')}
isSpinning={isDeleting} isSpinning={isDeleting}
onConfirm={this.onConfirmDeleteQualityProfile} onConfirm={this.onConfirmDeleteQualityProfile}
onCancel={this.onDeleteQualityProfileModalClose} onCancel={this.onDeleteQualityProfileModalClose}

@ -7,6 +7,7 @@ import FormLabel from 'Components/Form/FormLabel';
import FormInputHelpText from 'Components/Form/FormInputHelpText'; import FormInputHelpText from 'Components/Form/FormInputHelpText';
import Link from 'Components/Link/Link'; import Link from 'Components/Link/Link';
import QualityProfileFormatItem from './QualityProfileFormatItem'; import QualityProfileFormatItem from './QualityProfileFormatItem';
import translate from 'Utilities/String/translate';
import styles from './QualityProfileFormatItems.css'; import styles from './QualityProfileFormatItems.css';
function calcOrder(profileFormatItems) { function calcOrder(profileFormatItems) {
@ -76,7 +77,7 @@ class QualityProfileFormatItems extends Component {
return ( return (
<FormGroup size={sizes.EXTRA_SMALL}> <FormGroup size={sizes.EXTRA_SMALL}>
<FormLabel size={sizes.SMALL}> <FormLabel size={sizes.SMALL}>
Custom Formats {translate('CustomFormats')}
</FormLabel> </FormLabel>
<div> <div>

@ -7,6 +7,7 @@ import Icon from 'Components/Icon';
import PageSectionContent from 'Components/Page/PageSectionContent'; import PageSectionContent from 'Components/Page/PageSectionContent';
import QualityProfile from './QualityProfile'; import QualityProfile from './QualityProfile';
import EditQualityProfileModalConnector from './EditQualityProfileModalConnector'; import EditQualityProfileModalConnector from './EditQualityProfileModalConnector';
import translate from 'Utilities/String/translate';
import styles from './QualityProfiles.css'; import styles from './QualityProfiles.css';
class QualityProfiles extends Component { class QualityProfiles extends Component {
@ -51,7 +52,7 @@ class QualityProfiles extends Component {
} = this.props; } = this.props;
return ( return (
<FieldSet legend="Quality Profiles"> <FieldSet legend={translate('QualityProfiles')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Quality Profiles" errorMessage="Unable to load Quality Profiles"
{...otherProps}c={true} {...otherProps}c={true}

@ -3,6 +3,7 @@ import React, { Component } from 'react';
import FieldSet from 'Components/FieldSet'; import FieldSet from 'Components/FieldSet';
import PageSectionContent from 'Components/Page/PageSectionContent'; import PageSectionContent from 'Components/Page/PageSectionContent';
import QualityDefinitionConnector from './QualityDefinitionConnector'; import QualityDefinitionConnector from './QualityDefinitionConnector';
import translate from 'Utilities/String/translate';
import styles from './QualityDefinitions.css'; import styles from './QualityDefinitions.css';
class QualityDefinitions extends Component { class QualityDefinitions extends Component {
@ -18,7 +19,7 @@ class QualityDefinitions extends Component {
} = this.props; } = this.props;
return ( return (
<FieldSet legend="Quality Definitions"> <FieldSet legend={translate('QualityDefinitions')}>
<PageSectionContent <PageSectionContent
errorMessage="Unable to load Quality Definitions" errorMessage="Unable to load Quality Definitions"
{...otherProps} {...otherProps}

@ -3,6 +3,7 @@ import Link from 'Components/Link/Link';
import PageContent from 'Components/Page/PageContent'; import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody'; import PageContentBody from 'Components/Page/PageContentBody';
import SettingsToolbarConnector from './SettingsToolbarConnector'; import SettingsToolbarConnector from './SettingsToolbarConnector';
import translate from 'Utilities/String/translate';
import styles from './Settings.css'; import styles from './Settings.css';
function Settings() { function Settings() {
@ -50,7 +51,7 @@ function Settings() {
className={styles.link} className={styles.link}
to="/settings/customformats" to="/settings/customformats"
> >
Custom Formats {translate('CustomFormats')}
</Link> </Link>
<div className={styles.summary}> <div className={styles.summary}>
@ -94,7 +95,7 @@ function Settings() {
className={styles.link} className={styles.link}
to="/settings/connect" to="/settings/connect"
> >
Connect {translate('Connect')}
</Link> </Link>
<div className={styles.summary}> <div className={styles.summary}>

@ -10,6 +10,7 @@ import ModalHeader from 'Components/Modal/ModalHeader';
import ModalBody from 'Components/Modal/ModalBody'; import ModalBody from 'Components/Modal/ModalBody';
import ModalFooter from 'Components/Modal/ModalFooter'; import ModalFooter from 'Components/Modal/ModalFooter';
import TagDetailsDelayProfile from './TagDetailsDelayProfile'; import TagDetailsDelayProfile from './TagDetailsDelayProfile';
import translate from 'Utilities/String/translate';
import styles from './TagDetailsModalContent.css'; import styles from './TagDetailsModalContent.css';
function TagDetailsModalContent(props) { function TagDetailsModalContent(props) {
@ -83,7 +84,7 @@ function TagDetailsModalContent(props) {
{ {
!!notifications.length && !!notifications.length &&
<FieldSet legend="Connections"> <FieldSet legend={translate('Connections')}>
{ {
notifications.map((item) => { notifications.map((item) => {
return ( return (
@ -144,7 +145,7 @@ function TagDetailsModalContent(props) {
{ {
!!netImports.length && !!netImports.length &&
<FieldSet legend="Lists"> <FieldSet legend={translate('Lists')}>
{ {
netImports.map((item) => { netImports.map((item) => {
return ( return (
@ -167,7 +168,7 @@ function TagDetailsModalContent(props) {
isDisabled={isTagUsed} isDisabled={isTagUsed}
onPress={onDeleteTagPress} onPress={onDeleteTagPress}
> >
Delete {translate('Delete')}
</Button> </Button>
} }

@ -4,6 +4,7 @@ import { kinds } from 'Helpers/Props';
import Card from 'Components/Card'; import Card from 'Components/Card';
import ConfirmModal from 'Components/Modal/ConfirmModal'; import ConfirmModal from 'Components/Modal/ConfirmModal';
import TagDetailsModal from './Details/TagDetailsModal'; import TagDetailsModal from './Details/TagDetailsModal';
import translate from 'Utilities/String/translate';
import styles from './Tag.css'; import styles from './Tag.css';
class Tag extends Component { class Tag extends Component {
@ -147,7 +148,7 @@ class Tag extends Component {
kind={kinds.DANGER} kind={kinds.DANGER}
title="Delete Tag" title="Delete Tag"
message={`Are you sure you want to delete the tag '${label}'?`} message={`Are you sure you want to delete the tag '${label}'?`}
confirmLabel="Delete" confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteTag} onConfirm={this.onConfirmDeleteTag}
onCancel={this.onDeleteTagModalClose} onCancel={this.onDeleteTagModalClose}
/> />

@ -10,6 +10,7 @@ import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup'; import FormGroup from 'Components/Form/FormGroup';
import FormLabel from 'Components/Form/FormLabel'; import FormLabel from 'Components/Form/FormLabel';
import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputGroup from 'Components/Form/FormInputGroup';
import translate from 'Utilities/String/translate';
export const firstDayOfWeekOptions = [ export const firstDayOfWeekOptions = [
{ key: 0, value: 'Sunday' }, { key: 0, value: 'Sunday' },
@ -83,7 +84,7 @@ class UISettings extends Component {
id="uiSettings" id="uiSettings"
{...otherProps} {...otherProps}
> >
<FieldSet legend="Calendar"> <FieldSet legend={translate('Calendar')}>
<FormGroup> <FormGroup>
<FormLabel>First Day of Week</FormLabel> <FormLabel>First Day of Week</FormLabel>
@ -111,7 +112,7 @@ class UISettings extends Component {
</FieldSet> </FieldSet>
<FieldSet <FieldSet
legend="Dates" legend={translate('Dates')}
> >
<FormGroup> <FormGroup>
<FormLabel>Short Date Format</FormLabel> <FormLabel>Short Date Format</FormLabel>
@ -162,7 +163,7 @@ class UISettings extends Component {
</FieldSet> </FieldSet>
<FieldSet <FieldSet
legend="Style" legend={translate('Style')}
> >
<FormGroup> <FormGroup>
<FormLabel>Enable Color-Impaired Mode</FormLabel> <FormLabel>Enable Color-Impaired Mode</FormLabel>
@ -177,15 +178,16 @@ class UISettings extends Component {
</FieldSet> </FieldSet>
<FieldSet <FieldSet
legend="Language" legend={translate('Language')}
> >
<FormGroup> <FormGroup>
<FormLabel>Movie Info Language</FormLabel> <FormLabel>UI Language</FormLabel>
<FormInputGroup <FormInputGroup
type={inputTypes.SELECT} type={inputTypes.SELECT}
name="movieInfoLanguage" name="movieInfoLanguage"
values={languages} values={languages}
helpText="Language that Radarr will use to display Movie Title in UI" helpText="Language that Radarr will use for UI"
helpTextWarning="Browser Reload Required"
onChange={onInputChange} onChange={onInputChange}
{...settings.movieInfoLanguage} {...settings.movieInfoLanguage}
/> />

@ -7,6 +7,7 @@ import createSetTableOptionReducer from './Creators/Reducers/createSetTableOptio
import createHandleActions from './Creators/createHandleActions'; import createHandleActions from './Creators/createHandleActions';
import createRemoveItemHandler from './Creators/createRemoveItemHandler'; import createRemoveItemHandler from './Creators/createRemoveItemHandler';
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers'; import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
import translate from 'Utilities/String/translate';
// //
// Variables // Variables
@ -58,7 +59,7 @@ export const defaultState = {
}, },
{ {
name: 'date', name: 'date',
label: 'Date', label: translate('Date'),
isSortable: true, isSortable: true,
isVisible: true isVisible: true
}, },

@ -11,6 +11,7 @@ import createClearReducer from './Creators/Reducers/createClearReducer';
import createHandleActions from './Creators/createHandleActions'; import createHandleActions from './Creators/createHandleActions';
import { set, update } from './baseActions'; import { set, update } from './baseActions';
import { executeCommandHelper } from './commandActions'; import { executeCommandHelper } from './commandActions';
import translate from 'Utilities/String/translate';
// //
// Variables // Variables
@ -49,7 +50,7 @@ export const defaultState = {
filters: [ filters: [
{ {
key: 'all', key: 'all',
label: 'All', label: translate('All'),
filters: [ filters: [
{ {
key: 'monitored', key: 'monitored',

@ -16,6 +16,7 @@ import createSetTableOptionReducer from './Creators/Reducers/createSetTableOptio
import createSetClientSideCollectionSortReducer from './Creators/Reducers/createSetClientSideCollectionSortReducer'; import createSetClientSideCollectionSortReducer from './Creators/Reducers/createSetClientSideCollectionSortReducer';
import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer'; import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer';
import createClearReducer from './Creators/Reducers/createClearReducer'; import createClearReducer from './Creators/Reducers/createClearReducer';
import translate from 'Utilities/String/translate';
// //
// Variables // Variables
@ -162,7 +163,7 @@ export const defaultState = {
filters: [ filters: [
{ {
key: 'all', key: 'all',
label: 'All', label: translate('All'),
filters: [] filters: []
}, },
{ {

@ -8,6 +8,7 @@ import createSetTableOptionReducer from './Creators/Reducers/createSetTableOptio
import createHandleActions from './Creators/createHandleActions'; import createHandleActions from './Creators/createHandleActions';
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers'; import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
import { updateItem } from './baseActions'; import { updateItem } from './baseActions';
import translate from 'Utilities/String/translate';
// //
// Variables // Variables
@ -59,7 +60,7 @@ export const defaultState = {
}, },
{ {
name: 'date', name: 'date',
label: 'Date', label: translate('Date'),
isSortable: true, isSortable: true,
isVisible: true isVisible: true
}, },
@ -91,7 +92,7 @@ export const defaultState = {
filters: [ filters: [
{ {
key: 'all', key: 'all',
label: 'All', label: translate('All'),
filters: [] filters: []
}, },
{ {

@ -12,6 +12,7 @@ import createSaveProviderHandler from './Creators/createSaveProviderHandler';
import createRemoveItemHandler from './Creators/createRemoveItemHandler'; import createRemoveItemHandler from './Creators/createRemoveItemHandler';
import createHandleActions from './Creators/createHandleActions'; import createHandleActions from './Creators/createHandleActions';
import { updateItem } from './baseActions'; import { updateItem } from './baseActions';
import translate from 'Utilities/String/translate';
// //
// Variables // Variables
@ -21,7 +22,7 @@ export const section = 'movies';
export const filters = [ export const filters = [
{ {
key: 'all', key: 'all',
label: 'All', label: translate('All'),
filters: [] filters: []
}, },
{ {

@ -6,6 +6,7 @@ import createSetClientSideCollectionSortReducer from './Creators/Reducers/create
import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer'; import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer';
import createFetchHandler from './Creators/createFetchHandler'; import createFetchHandler from './Creators/createFetchHandler';
import createHandleActions from './Creators/createHandleActions'; import createHandleActions from './Creators/createHandleActions';
import translate from 'Utilities/String/translate';
// //
// Variables // Variables
@ -61,7 +62,7 @@ export const defaultState = {
filters: [ filters: [
{ {
key: 'all', key: 'all',
label: 'All', label: translate('All'),
filters: [] filters: []
} }
], ],

@ -11,6 +11,7 @@ import createRemoveItemHandler from './Creators/createRemoveItemHandler';
import createHandleActions from './Creators/createHandleActions'; import createHandleActions from './Creators/createHandleActions';
import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers'; import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers';
import { set } from './baseActions'; import { set } from './baseActions';
import translate from 'Utilities/String/translate';
// //
// Variables // Variables
@ -119,7 +120,7 @@ export const defaultState = {
filters: [ filters: [
{ {
key: 'all', key: 'all',
label: 'All', label: translate('All'),
filters: [] filters: []
}, },
{ {

@ -11,6 +11,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
import BackupRow from './BackupRow'; import BackupRow from './BackupRow';
import RestoreBackupModalConnector from './RestoreBackupModalConnector'; import RestoreBackupModalConnector from './RestoreBackupModalConnector';
import translate from 'Utilities/String/translate';
const columns = [ const columns = [
{ {
@ -79,14 +80,14 @@ class Backups extends Component {
<PageToolbar> <PageToolbar>
<PageToolbarSection> <PageToolbarSection>
<PageToolbarButton <PageToolbarButton
label="Backup Now" label={translate('BackupNow')}
iconName={icons.BACKUP} iconName={icons.BACKUP}
isSpinning={backupExecuting} isSpinning={backupExecuting}
onPress={onBackupPress} onPress={onBackupPress}
/> />
<PageToolbarButton <PageToolbarButton
label="Restore Backup" label={translate('RestoreBackup')}
iconName={icons.RESTORE} iconName={icons.RESTORE}
onPress={this.onRestorePress} onPress={this.onRestorePress}
/> />

@ -13,6 +13,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
import FilterMenu from 'Components/Menu/FilterMenu'; import FilterMenu from 'Components/Menu/FilterMenu';
import LogsTableRow from './LogsTableRow'; import LogsTableRow from './LogsTableRow';
import translate from 'Utilities/String/translate';
function LogsTable(props) { function LogsTable(props) {
const { const {
@ -36,7 +37,7 @@ function LogsTable(props) {
<PageToolbar> <PageToolbar>
<PageToolbarSection> <PageToolbarSection>
<PageToolbarButton <PageToolbarButton
label="Refresh" label={translate('Refresh')}
iconName={icons.REFRESH} iconName={icons.REFRESH}
spinningName={icons.REFRESH} spinningName={icons.REFRESH}
isSpinning={isFetching} isSpinning={isFetching}
@ -44,7 +45,7 @@ function LogsTable(props) {
/> />
<PageToolbarButton <PageToolbarButton
label="Clear" label={translate('Clear')}
iconName={icons.CLEAR} iconName={icons.CLEAR}
isSpinning={clearLogExecuting} isSpinning={clearLogExecuting}
onPress={onClearLogsPress} onPress={onClearLogsPress}
@ -58,7 +59,7 @@ function LogsTable(props) {
canModifyColumns={false} canModifyColumns={false}
> >
<PageToolbarButton <PageToolbarButton
label="Options" label={translate('Options')}
iconName={icons.TABLE} iconName={icons.TABLE}
/> />
</TableOptionsModalWrapper> </TableOptionsModalWrapper>

@ -14,6 +14,7 @@ import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
import TableBody from 'Components/Table/TableBody'; import TableBody from 'Components/Table/TableBody';
import LogsNavMenu from '../LogsNavMenu'; import LogsNavMenu from '../LogsNavMenu';
import LogFilesTableRow from './LogFilesTableRow'; import LogFilesTableRow from './LogFilesTableRow';
import translate from 'Utilities/String/translate';
const columns = [ const columns = [
{ {
@ -58,7 +59,7 @@ class LogFiles extends Component {
<PageToolbarSeparator /> <PageToolbarSeparator />
<PageToolbarButton <PageToolbarButton
label="Refresh" label={translate('Refresh')}
iconName={icons.REFRESH} iconName={icons.REFRESH}
spinningName={icons.REFRESH} spinningName={icons.REFRESH}
isSpinning={isFetching} isSpinning={isFetching}
@ -66,7 +67,7 @@ class LogFiles extends Component {
/> />
<PageToolbarButton <PageToolbarButton
label="Clear" label={translate('Clear')}
iconName={icons.CLEAR} iconName={icons.CLEAR}
isSpinning={deleteFilesExecuting} isSpinning={deleteFilesExecuting}
onPress={onDeleteFilesPress} onPress={onDeleteFilesPress}

@ -6,6 +6,7 @@ import InlineMarkdown from 'Components/Markdown/InlineMarkdown';
import DescriptionList from 'Components/DescriptionList/DescriptionList'; import DescriptionList from 'Components/DescriptionList/DescriptionList';
import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem'; import DescriptionListItem from 'Components/DescriptionList/DescriptionListItem';
import StartTime from './StartTime'; import StartTime from './StartTime';
import translate from 'Utilities/String/translate';
import styles from './About.css'; import styles from './About.css';
class About extends Component { class About extends Component {
@ -32,7 +33,7 @@ class About extends Component {
} = this.props; } = this.props;
return ( return (
<FieldSet legend="About"> <FieldSet legend={translate('About')}>
<DescriptionList className={styles.descriptionList}> <DescriptionList className={styles.descriptionList}>
<DescriptionListItem <DescriptionListItem
title="Version" title="Version"

@ -9,6 +9,7 @@ import TableBody from 'Components/Table/TableBody';
import TableRow from 'Components/Table/TableRow'; import TableRow from 'Components/Table/TableRow';
import TableRowCell from 'Components/Table/Cells/TableRowCell'; import TableRowCell from 'Components/Table/Cells/TableRowCell';
import ProgressBar from 'Components/ProgressBar'; import ProgressBar from 'Components/ProgressBar';
import translate from 'Utilities/String/translate';
import styles from './DiskSpace.css'; import styles from './DiskSpace.css';
const columns = [ const columns = [
@ -45,7 +46,7 @@ class DiskSpace extends Component {
} = this.props; } = this.props;
return ( return (
<FieldSet legend="Disk Space"> <FieldSet legend={translate('DiskSpace')}>
{ {
isFetching && isFetching &&
<LoadingIndicator /> <LoadingIndicator />

@ -11,6 +11,7 @@ import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody'; import TableBody from 'Components/Table/TableBody';
import TableRow from 'Components/Table/TableRow'; import TableRow from 'Components/Table/TableRow';
import TableRowCell from 'Components/Table/Cells/TableRowCell'; import TableRowCell from 'Components/Table/Cells/TableRowCell';
import translate from 'Utilities/String/translate';
import styles from './Health.css'; import styles from './Health.css';
function getInternalLink(source) { function getInternalLink(source) {
@ -119,7 +120,7 @@ class Health extends Component {
<FieldSet <FieldSet
legend={ legend={
<div className={styles.legend}> <div className={styles.legend}>
Health {translate('Health')}
{ {
isFetching && isPopulated && isFetching && isPopulated &&

@ -4,6 +4,7 @@ import FieldSet from 'Components/FieldSet';
import DescriptionList from 'Components/DescriptionList/DescriptionList'; import DescriptionList from 'Components/DescriptionList/DescriptionList';
import DescriptionListItemTitle from 'Components/DescriptionList/DescriptionListItemTitle'; import DescriptionListItemTitle from 'Components/DescriptionList/DescriptionListItemTitle';
import DescriptionListItemDescription from 'Components/DescriptionList/DescriptionListItemDescription'; import DescriptionListItemDescription from 'Components/DescriptionList/DescriptionListItemDescription';
import translate from 'Utilities/String/translate';
class MoreInfo extends Component { class MoreInfo extends Component {
@ -12,7 +13,7 @@ class MoreInfo extends Component {
render() { render() {
return ( return (
<FieldSet legend="More Info"> <FieldSet legend={translate('MoreInfo')}>
<DescriptionList> <DescriptionList>
<DescriptionListItemTitle>Home page</DescriptionListItemTitle> <DescriptionListItemTitle>Home page</DescriptionListItemTitle>
<DescriptionListItemDescription> <DescriptionListItemDescription>

@ -5,6 +5,7 @@ import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import Table from 'Components/Table/Table'; import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody'; import TableBody from 'Components/Table/TableBody';
import QueuedTaskRowConnector from './QueuedTaskRowConnector'; import QueuedTaskRowConnector from './QueuedTaskRowConnector';
import translate from 'Utilities/String/translate';
const columns = [ const columns = [
{ {
@ -51,7 +52,7 @@ function QueuedTasks(props) {
} = props; } = props;
return ( return (
<FieldSet legend="Queue"> <FieldSet legend={translate('Queue')}>
{ {
isFetching && !isPopulated && isFetching && !isPopulated &&
<LoadingIndicator /> <LoadingIndicator />

@ -5,6 +5,7 @@ import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import Table from 'Components/Table/Table'; import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody'; import TableBody from 'Components/Table/TableBody';
import ScheduledTaskRowConnector from './ScheduledTaskRowConnector'; import ScheduledTaskRowConnector from './ScheduledTaskRowConnector';
import translate from 'Utilities/String/translate';
const columns = [ const columns = [
{ {
@ -46,7 +47,7 @@ function ScheduledTasks(props) {
} = props; } = props;
return ( return (
<FieldSet legend="Scheduled"> <FieldSet legend={translate('Scheduled')}>
{ {
isFetching && !isPopulated && isFetching && !isPopulated &&
<LoadingIndicator /> <LoadingIndicator />

Loading…
Cancel
Save