diff --git a/frontend/src/Activity/Blacklist/Blacklist.js b/frontend/src/Activity/Blacklist/Blacklist.js index 2d0a1e9f4..a9a0dae46 100644 --- a/frontend/src/Activity/Blacklist/Blacklist.js +++ b/frontend/src/Activity/Blacklist/Blacklist.js @@ -12,6 +12,7 @@ import PageToolbar from 'Components/Page/Toolbar/PageToolbar'; import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import BlacklistRowConnector from './BlacklistRowConnector'; +import translate from 'Utilities/String/translate'; class Blacklist extends Component { @@ -36,7 +37,7 @@ class Blacklist extends Component { diff --git a/frontend/src/Activity/History/History.js b/frontend/src/Activity/History/History.js index 47d87fb2e..78b742520 100644 --- a/frontend/src/Activity/History/History.js +++ b/frontend/src/Activity/History/History.js @@ -13,6 +13,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import FilterMenu from 'Components/Menu/FilterMenu'; import HistoryRowConnector from './HistoryRowConnector'; +import translate from 'Utilities/String/translate'; class History extends Component { @@ -46,7 +47,7 @@ class History extends Component { diff --git a/frontend/src/Activity/Queue/Queue.js b/frontend/src/Activity/Queue/Queue.js index d25f51ed6..c4003c90e 100644 --- a/frontend/src/Activity/Queue/Queue.js +++ b/frontend/src/Activity/Queue/Queue.js @@ -22,6 +22,7 @@ import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptions import RemoveQueueItemsModal from './RemoveQueueItemsModal'; import QueueOptionsConnector from './QueueOptionsConnector'; import QueueRowConnector from './QueueRowConnector'; +import translate from 'Utilities/String/translate'; class Queue extends Component { @@ -152,7 +153,7 @@ class Queue extends Component { diff --git a/frontend/src/AddMovie/AddNewMovie/AddNewMovie.js b/frontend/src/AddMovie/AddNewMovie/AddNewMovie.js index 9ced2e869..d32312622 100644 --- a/frontend/src/AddMovie/AddNewMovie/AddNewMovie.js +++ b/frontend/src/AddMovie/AddNewMovie/AddNewMovie.js @@ -10,6 +10,7 @@ import TextInput from 'Components/Form/TextInput'; import PageContent from 'Components/Page/PageContent'; import PageContentBody from 'Components/Page/PageContentBody'; import AddNewMovieSearchResultConnector from './AddNewMovieSearchResultConnector'; +import translate from 'Utilities/String/translate'; import styles from './AddNewMovie.css'; class AddNewMovie extends Component { @@ -166,9 +167,9 @@ class AddNewMovie extends Component { null :
- It's easy to add a new movie, just start typing the name the movie you want to add. + {translate('AddNewMessage')}
-
You can also search using TMDB ID of a movie. eg. tmdb:71663
+
{translate('AddNewTmdbIdMessage')}
} diff --git a/frontend/src/AddMovie/ImportMovie/SelectFolder/ImportMovieSelectFolder.js b/frontend/src/AddMovie/ImportMovie/SelectFolder/ImportMovieSelectFolder.js index f7abd3baa..208b7c757 100644 --- a/frontend/src/AddMovie/ImportMovie/SelectFolder/ImportMovieSelectFolder.js +++ b/frontend/src/AddMovie/ImportMovie/SelectFolder/ImportMovieSelectFolder.js @@ -11,6 +11,7 @@ import PageContentBody from 'Components/Page/PageContentBody'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import ImportMovieRootFolderRowConnector from './ImportMovieRootFolderRowConnector'; +import translate from 'Utilities/String/translate'; import styles from './ImportMovieSelectFolder.css'; const rootFolderColumns = [ @@ -92,11 +93,11 @@ class ImportMovieSelectFolder extends Component { !error && isPopulated &&
- Import movies you already have + {translate('ImportHeader')}
- Some tips to ensure the import goes smoothly: + {translate('ImportTipsMessage')}
  • Make sure that your files include the quality in their filenames. eg. movie.2008.bluray.mkv @@ -141,7 +142,7 @@ class ImportMovieSelectFolder extends Component { className={styles.importButtonIcon} name={icons.DRIVE} /> - Choose another folder + {translate('ChooseAnotherFolder')}
: diff --git a/frontend/src/Calendar/CalendarPage.js b/frontend/src/Calendar/CalendarPage.js index bb655fd5b..4345576eb 100644 --- a/frontend/src/Calendar/CalendarPage.js +++ b/frontend/src/Calendar/CalendarPage.js @@ -16,6 +16,7 @@ import CalendarLinkModal from './iCal/CalendarLinkModal'; import CalendarOptionsModal from './Options/CalendarOptionsModal'; import LegendConnector from './Legend/LegendConnector'; import CalendarConnector from './CalendarConnector'; +import translate from 'Utilities/String/translate'; import styles from './CalendarPage.css'; const MINIMUM_DAY_WIDTH = 120; @@ -109,7 +110,7 @@ class CalendarPage extends Component { diff --git a/frontend/src/Calendar/Header/CalendarHeader.js b/frontend/src/Calendar/Header/CalendarHeader.js index 9e65df87b..cb6a8a892 100644 --- a/frontend/src/Calendar/Header/CalendarHeader.js +++ b/frontend/src/Calendar/Header/CalendarHeader.js @@ -11,6 +11,7 @@ import MenuContent from 'Components/Menu/MenuContent'; import ViewMenuItem from 'Components/Menu/ViewMenuItem'; import * as calendarViews from 'Calendar/calendarViews'; import CalendarHeaderViewButton from './CalendarHeaderViewButton'; +import translate from 'Utilities/String/translate'; import styles from './CalendarHeader.css'; function getTitle(time, start, end, view, longDateFormat) { @@ -192,7 +193,7 @@ class CalendarHeader extends Component { selectedView={view} onPress={this.onViewChange} > - Day + {translate('Day')} - Agenda + {translate('Agenda')} : diff --git a/frontend/src/Components/Filter/CustomFilters/CustomFiltersModalContent.js b/frontend/src/Components/Filter/CustomFilters/CustomFiltersModalContent.js index 9f8645dda..ab7c41edd 100644 --- a/frontend/src/Components/Filter/CustomFilters/CustomFiltersModalContent.js +++ b/frontend/src/Components/Filter/CustomFilters/CustomFiltersModalContent.js @@ -6,6 +6,7 @@ import ModalHeader from 'Components/Modal/ModalHeader'; import ModalBody from 'Components/Modal/ModalBody'; import ModalFooter from 'Components/Modal/ModalFooter'; import CustomFilter from './CustomFilter'; +import translate from 'Utilities/String/translate'; import styles from './CustomFiltersModalContent.css'; function CustomFiltersModalContent(props) { @@ -24,7 +25,7 @@ function CustomFiltersModalContent(props) { return ( - Custom Filters + {translate('CustomFilters')} diff --git a/frontend/src/Components/Form/FormInputGroup.js b/frontend/src/Components/Form/FormInputGroup.js index a9220b1ee..4c8f8190d 100644 --- a/frontend/src/Components/Form/FormInputGroup.js +++ b/frontend/src/Components/Form/FormInputGroup.js @@ -21,6 +21,7 @@ import TagSelectInputConnector from './TagSelectInputConnector'; import TextTagInputConnector from './TextTagInputConnector'; import TextInput from './TextInput'; import FormInputHelpText from './FormInputHelpText'; +import translate from 'Utilities/String/translate'; import styles from './FormInputGroup.css'; function getComponent(type) { @@ -195,7 +196,7 @@ function FormInputGroup(props) { - More Info + {translate('MoreInfo')} } diff --git a/frontend/src/Components/Menu/FilterMenu.js b/frontend/src/Components/Menu/FilterMenu.js index d71375a16..550d48468 100644 --- a/frontend/src/Components/Menu/FilterMenu.js +++ b/frontend/src/Components/Menu/FilterMenu.js @@ -4,6 +4,7 @@ import { icons } from 'Helpers/Props'; import FilterMenuContent from './FilterMenuContent'; import Menu from './Menu'; import ToolbarMenuButton from './ToolbarMenuButton'; +import translate from 'Utilities/String/translate'; import styles from './FilterMenu.css'; class FilterMenu extends Component { @@ -57,7 +58,7 @@ class FilterMenu extends Component { > diff --git a/frontend/src/Components/Menu/FilterMenuContent.js b/frontend/src/Components/Menu/FilterMenuContent.js index ce098ee62..71107c5e4 100644 --- a/frontend/src/Components/Menu/FilterMenuContent.js +++ b/frontend/src/Components/Menu/FilterMenuContent.js @@ -4,6 +4,7 @@ import MenuContent from './MenuContent'; import FilterMenuItem from './FilterMenuItem'; import MenuItem from './MenuItem'; import MenuItemSeparator from './MenuItemSeparator'; +import translate from 'Utilities/String/translate'; class FilterMenuContent extends Component { @@ -61,7 +62,7 @@ class FilterMenuContent extends Component { { showCustomFilters && - Custom Filters + {translate('CustomFilters')} } diff --git a/frontend/src/Components/Menu/SortMenu.js b/frontend/src/Components/Menu/SortMenu.js index a9a6a184e..d40b796fd 100644 --- a/frontend/src/Components/Menu/SortMenu.js +++ b/frontend/src/Components/Menu/SortMenu.js @@ -3,6 +3,7 @@ import React from 'react'; import { icons } from 'Helpers/Props'; import Menu from 'Components/Menu/Menu'; import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton'; +import translate from 'Utilities/String/translate'; function SortMenu(props) { const { @@ -19,7 +20,7 @@ function SortMenu(props) { > {children} diff --git a/frontend/src/Components/Menu/ViewMenu.js b/frontend/src/Components/Menu/ViewMenu.js index 60c77e003..608d88061 100644 --- a/frontend/src/Components/Menu/ViewMenu.js +++ b/frontend/src/Components/Menu/ViewMenu.js @@ -3,6 +3,7 @@ import React from 'react'; import { icons } from 'Helpers/Props'; import Menu from 'Components/Menu/Menu'; import ToolbarMenuButton from 'Components/Menu/ToolbarMenuButton'; +import translate from 'Utilities/String/translate'; function ViewMenu(props) { const { @@ -17,7 +18,7 @@ function ViewMenu(props) { > {children} diff --git a/frontend/src/Components/Page/Header/MovieSearchInput.js b/frontend/src/Components/Page/Header/MovieSearchInput.js index 4b06a9f63..2a9f91f43 100644 --- a/frontend/src/Components/Page/Header/MovieSearchInput.js +++ b/frontend/src/Components/Page/Header/MovieSearchInput.js @@ -7,6 +7,7 @@ import Icon from 'Components/Icon'; import keyboardShortcuts, { shortcuts } from 'Components/keyboardShortcuts'; import MovieSearchResult from './MovieSearchResult'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; +import translate from 'Utilities/String/translate'; import FuseWorker from './fuse.worker'; import styles from './MovieSearchInput.css'; @@ -227,7 +228,7 @@ class MovieSearchInput extends Component { className: styles.input, name: 'movieSearch', value, - placeholder: 'Search', + placeholder: translate('Search'), autoComplete: 'off', spellCheck: false, onChange: this.onChange, diff --git a/frontend/src/Components/Page/Header/PageHeader.css b/frontend/src/Components/Page/Header/PageHeader.css index 9ea23d6a7..e5cf50c0f 100644 --- a/frontend/src/Components/Page/Header/PageHeader.css +++ b/frontend/src/Components/Page/Header/PageHeader.css @@ -43,9 +43,28 @@ 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 { composes: link from '~Components/Link/Link.css'; + display: flex; + align-items: center; + justify-content: center; width: 30px; color: $themeRed; text-align: center; @@ -64,8 +83,11 @@ .sidebarToggleContainer { display: flex; } +} - .donate { +@media only screen and (max-width: $breakpointExtraSmall) { + .donate, + .translate { display: none; } } diff --git a/frontend/src/Components/Page/Header/PageHeader.js b/frontend/src/Components/Page/Header/PageHeader.js index 1847d937f..0d72578ef 100644 --- a/frontend/src/Components/Page/Header/PageHeader.js +++ b/frontend/src/Components/Page/Header/PageHeader.js @@ -77,6 +77,13 @@ class PageHeader extends Component { to="https://radarr.video/donate.html" size={14} /> + diff --git a/frontend/src/Components/Page/Sidebar/PageSidebar.js b/frontend/src/Components/Page/Sidebar/PageSidebar.js index cc3078a3f..558a8ee90 100644 --- a/frontend/src/Components/Page/Sidebar/PageSidebar.js +++ b/frontend/src/Components/Page/Sidebar/PageSidebar.js @@ -8,6 +8,7 @@ import locationShape from 'Helpers/Props/Shapes/locationShape'; import dimensions from 'Styles/Variables/dimensions'; import OverlayScroller from 'Components/Scroller/OverlayScroller'; import Scroller from 'Components/Scroller/Scroller'; +import translate from 'Utilities/String/translate'; import QueueStatusConnector from 'Activity/Queue/Status/QueueStatusConnector'; import HealthStatusConnector from 'System/Status/Health/HealthStatusConnector'; import MessagesConnector from './Messages/MessagesConnector'; @@ -20,20 +21,20 @@ const SIDEBAR_WIDTH = parseInt(dimensions.sidebarWidth); const links = [ { iconName: icons.MOVIE_CONTINUING, - title: 'Movies', + title: translate('Movies'), to: '/', alias: '/movies', children: [ { - title: 'Add New', + title: translate('AddNew'), to: '/add/new' }, { - title: 'Import', + title: translate('Import'), to: '/add/import' }, { - title: 'Discover', + title: translate('Discover'), to: '/add/discover' } ] @@ -41,26 +42,26 @@ const links = [ { iconName: icons.CALENDAR, - title: 'Calendar', + title: translate('Calendar'), to: '/calendar' }, { iconName: icons.ACTIVITY, - title: 'Activity', + title: translate('Activity'), to: '/activity/queue', children: [ { - title: 'Queue', + title: translate('Queue'), to: '/activity/queue', statusComponent: QueueStatusConnector }, { - title: 'History', + title: translate('History'), to: '/activity/history' }, { - title: 'Blacklist', + title: translate('Blacklist'), to: '/activity/blacklist' } ] @@ -68,55 +69,55 @@ const links = [ { iconName: icons.SETTINGS, - title: 'Settings', + title: translate('Settings'), to: '/settings', children: [ { - title: 'Media Management', + title: translate('MediaManagement'), to: '/settings/mediamanagement' }, { - title: 'Profiles', + title: translate('Profiles'), to: '/settings/profiles' }, { - title: 'Quality', + title: translate('Quality'), to: '/settings/quality' }, { - title: 'Custom Formats', + title: translate('CustomFormats'), to: '/settings/customformats' }, { - title: 'Indexers', + title: translate('Indexers'), to: '/settings/indexers' }, { - title: 'Download Clients', + title: translate('DownloadClients'), to: '/settings/downloadclients' }, { - title: 'Lists', + title: translate('Lists'), to: '/settings/netimports' }, { - title: 'Connect', + title: translate('Connect'), to: '/settings/connect' }, { - title: 'Metadata', + title: translate('Metadata'), to: '/settings/metadata' }, { - title: 'Tags', + title: translate('Tags'), to: '/settings/tags' }, { - title: 'General', + title: translate('General'), to: '/settings/general' }, { - title: 'UI', + title: translate('UI'), to: '/settings/ui' } ] @@ -124,32 +125,32 @@ const links = [ { iconName: icons.SYSTEM, - title: 'System', + title: translate('System'), to: '/system/status', children: [ { - title: 'Status', + title: translate('Status'), to: '/system/status', statusComponent: HealthStatusConnector }, { - title: 'Tasks', + title: translate('Tasks'), to: '/system/tasks' }, { - title: 'Backup', + title: translate('Backup'), to: '/system/backup' }, { - title: 'Updates', + title: translate('Updates'), to: '/system/updates' }, { - title: 'Events', + title: translate('Events'), to: '/system/events' }, { - title: 'Log Files', + title: translate('LogFiles'), to: '/system/logs/files' } ] diff --git a/frontend/src/DiscoverMovie/DiscoverMovie.js b/frontend/src/DiscoverMovie/DiscoverMovie.js index 656a4ebcf..c50acf78b 100644 --- a/frontend/src/DiscoverMovie/DiscoverMovie.js +++ b/frontend/src/DiscoverMovie/DiscoverMovie.js @@ -25,6 +25,7 @@ import AddListMovieSortMenu from './Menus/AddListMovieSortMenu'; import AddListMovieViewMenu from './Menus/AddListMovieViewMenu'; import NoDiscoverMovie from './NoDiscoverMovie'; import DiscoverMovieFooterConnector from './DiscoverMovieFooterConnector'; +import translate from 'Utilities/String/translate'; import styles from 'Movie/Index/MovieIndex.css'; function getViewComponent(view) { @@ -290,7 +291,7 @@ class DiscoverMovie extends Component { columns={columns} > : @@ -300,7 +301,7 @@ class DiscoverMovie extends Component { { view === 'posters' ? - Add Movies + {translate('AddMovies')}
@@ -219,7 +220,7 @@ class DiscoverMovieFooter extends Component { isDisabled={!selectedCount || isExcluding} onPress={this.props.onExcludeMoviesPress} > - Add Exclusion + {translate('AddExclusion')} diff --git a/frontend/src/Helpers/Props/icons.js b/frontend/src/Helpers/Props/icons.js index a7435192f..4a1df97a8 100644 --- a/frontend/src/Helpers/Props/icons.js +++ b/frontend/src/Helpers/Props/icons.js @@ -66,6 +66,7 @@ import { faHistory as fasHistory, faHome as fasHome, faInfoCircle as fasInfoCircle, + faLanguage as fasLanguage, faLaptop as fasLaptop, faLevelUpAlt as fasLevelUpAlt, faMedkit as fasMedkit, @@ -207,6 +208,7 @@ export const TABLE = fasTable; export const TAGS = fasTags; export const TBA = fasQuestionCircle; export const TEST = fasVial; +export const TRANSLATE = fasLanguage; export const UNGROUP = farObjectUngroup; export const UNKNOWN = fasQuestion; export const UNMONITORED = farBookmark; diff --git a/frontend/src/Movie/Delete/DeleteMovieModalContent.js b/frontend/src/Movie/Delete/DeleteMovieModalContent.js index a711a70fc..48935bda2 100644 --- a/frontend/src/Movie/Delete/DeleteMovieModalContent.js +++ b/frontend/src/Movie/Delete/DeleteMovieModalContent.js @@ -11,6 +11,7 @@ import ModalContent from 'Components/Modal/ModalContent'; import ModalHeader from 'Components/Modal/ModalHeader'; import ModalBody from 'Components/Modal/ModalBody'; import ModalFooter from 'Components/Modal/ModalFooter'; +import translate from 'Utilities/String/translate'; import styles from './DeleteMovieModalContent.css'; class DeleteMovieModalContent extends Component { @@ -140,7 +141,7 @@ class DeleteMovieModalContent extends Component { kind={kinds.DANGER} onPress={this.onDeleteMovieConfirmed} > - Delete + {translate('Delete')} diff --git a/frontend/src/Movie/Details/MovieDetails.js b/frontend/src/Movie/Details/MovieDetails.js index 9f619645b..ff70a1d72 100644 --- a/frontend/src/Movie/Details/MovieDetails.js +++ b/frontend/src/Movie/Details/MovieDetails.js @@ -42,6 +42,7 @@ import InteractiveSearchTable from 'InteractiveSearch/InteractiveSearchTable'; import InteractiveSearchFilterMenuConnector from 'InteractiveSearch/InteractiveSearchFilterMenuConnector'; import MovieTagsConnector from './MovieTagsConnector'; import MovieReleaseDatesConnector from './MovieReleaseDatesConnector'; +import translate from 'Utilities/String/translate'; import styles from './MovieDetails.css'; const defaultFontSize = parseInt(fonts.defaultFontSize); @@ -326,7 +327,7 @@ class MovieDetails extends Component { /> @@ -604,42 +605,42 @@ class MovieDetails extends Component { className={styles.tab} selectedClassName={styles.selectedTab} > - History + {translate('History')} - Search + {translate('Search')} - Files + {translate('Files')} - Titles + {translate('Titles')} - Cast + {translate('Cast')} - Crew + {translate('Crew')} { diff --git a/frontend/src/Movie/Edit/EditMovieModalContent.js b/frontend/src/Movie/Edit/EditMovieModalContent.js index 7a27800e3..4e5e4770e 100644 --- a/frontend/src/Movie/Edit/EditMovieModalContent.js +++ b/frontend/src/Movie/Edit/EditMovieModalContent.js @@ -12,6 +12,7 @@ import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; import MoveMovieModal from 'Movie/MoveMovie/MoveMovieModal'; +import translate from 'Utilities/String/translate'; import styles from './EditMovieModalContent.css'; class EditMovieModalContent extends Component { @@ -149,7 +150,7 @@ class EditMovieModalContent extends Component { kind={kinds.DANGER} onPress={onDeleteMoviePress} > - Delete + {translate('Delete')} diff --git a/frontend/src/Movie/Editor/MovieEditorFooter.js b/frontend/src/Movie/Editor/MovieEditorFooter.js index 3ce3ae4ca..2f9746463 100644 --- a/frontend/src/Movie/Editor/MovieEditorFooter.js +++ b/frontend/src/Movie/Editor/MovieEditorFooter.js @@ -11,6 +11,7 @@ import MoveMovieModal from 'Movie/MoveMovie/MoveMovieModal'; import TagsModal from './Tags/TagsModal'; import DeleteMovieModal from './Delete/DeleteMovieModal'; import MovieEditorFooterLabel from './MovieEditorFooterLabel'; +import translate from 'Utilities/String/translate'; import styles from './MovieEditorFooter.css'; const NO_CHANGE = 'noChange'; @@ -257,7 +258,7 @@ class MovieEditorFooter extends Component { isDisabled={!selectedCount || isDeleting} onPress={this.onDeleteSelectedPress} > - Delete + {translate('Delete')} diff --git a/frontend/src/Movie/History/MovieHistoryTableContent.js b/frontend/src/Movie/History/MovieHistoryTableContent.js index 87f1f1b27..3f4d2bb18 100644 --- a/frontend/src/Movie/History/MovieHistoryTableContent.js +++ b/frontend/src/Movie/History/MovieHistoryTableContent.js @@ -6,6 +6,7 @@ import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import MovieHistoryRowConnector from './MovieHistoryRowConnector'; +import translate from 'Utilities/String/translate'; import styles from './MovieHistoryTableContent.css'; const columns = [ @@ -30,13 +31,13 @@ const columns = [ }, { name: 'customFormats', - label: 'Custom Formats', + label: translate('CustomFormats'), isSortable: false, isVisible: true }, { name: 'date', - label: 'Date', + label: translate('Date'), isVisible: true }, { diff --git a/frontend/src/Movie/Index/MovieIndex.js b/frontend/src/Movie/Index/MovieIndex.js index 8c0f10030..86ee1b48a 100644 --- a/frontend/src/Movie/Index/MovieIndex.js +++ b/frontend/src/Movie/Index/MovieIndex.js @@ -31,6 +31,7 @@ import MovieIndexFooterConnector from './MovieIndexFooterConnector'; import MovieEditorFooter from 'Movie/Editor/MovieEditorFooter.js'; import InteractiveImportModal from 'InteractiveImport/InteractiveImportModal'; import OrganizeMovieModal from 'Movie/Editor/Organize/OrganizeMovieModal'; +import translate from 'Utilities/String/translate'; import styles from './MovieIndex.css'; function getViewComponent(view) { @@ -351,15 +352,15 @@ class MovieIndex extends Component { const isLoaded = !!(!error && isPopulated && items.length && scroller); const hasNoMovie = !totalItems; - const searchIndexLabel = selectedFilterKey === 'all' ? 'Search All' : 'Search Filtered'; - const searchEditorLabel = selectedMovieIds.length > 0 ? 'Search Selected' : 'Search All'; + const searchIndexLabel = selectedFilterKey === 'all' ? translate('SearchAll') : 'Search Filtered'; + const searchEditorLabel = selectedMovieIds.length > 0 ? 'Search Selected' : translate('SearchAll'); return ( 0 ? 'Update Selected' : 'Update All'} + label={isMovieEditorActive && selectedMovieIds.length > 0 ? 'Update Selected' : translate('UpdateAll')} iconName={icons.REFRESH} spinningName={icons.REFRESH} isSpinning={isRefreshingMovie} @@ -368,7 +369,7 @@ class MovieIndex extends Component { /> : : @@ -444,7 +445,7 @@ class MovieIndex extends Component { { view === 'posters' ? diff --git a/frontend/src/Settings/AdvancedSettingsButton.js b/frontend/src/Settings/AdvancedSettingsButton.js index 12d9902d5..48d9a07f1 100644 --- a/frontend/src/Settings/AdvancedSettingsButton.js +++ b/frontend/src/Settings/AdvancedSettingsButton.js @@ -4,6 +4,7 @@ import classNames from 'classnames'; import { icons } from 'Helpers/Props'; import Icon from 'Components/Icon'; import Link from 'Components/Link/Link'; +import translate from 'Utilities/String/translate'; import styles from './AdvancedSettingsButton.css'; function AdvancedSettingsButton(props) { @@ -44,7 +45,7 @@ function AdvancedSettingsButton(props) {
- {advancedSettings ? 'Hide Advanced' : 'Show Advanced'} + {advancedSettings ? translate('HideAdvanced') : translate('ShowAdvanced')}
diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/CustomFormat.js b/frontend/src/Settings/CustomFormats/CustomFormats/CustomFormat.js index c81b6771a..21ca174bb 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/CustomFormat.js +++ b/frontend/src/Settings/CustomFormats/CustomFormats/CustomFormat.js @@ -6,6 +6,7 @@ import Label from 'Components/Label'; import IconButton from 'Components/Link/IconButton'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditCustomFormatModalConnector from './EditCustomFormatModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './CustomFormat.css'; class CustomFormat extends Component { @@ -132,7 +133,7 @@ class CustomFormat extends Component { } - confirmLabel="Delete" + confirmLabel={translate('Delete')} isSpinning={isDeleting} onConfirm={this.onConfirmDeleteCustomFormat} onCancel={this.onDeleteCustomFormatModalClose} diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/CustomFormats.js b/frontend/src/Settings/CustomFormats/CustomFormats/CustomFormats.js index 2cc2a41ca..2c0ad5009 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/CustomFormats.js +++ b/frontend/src/Settings/CustomFormats/CustomFormats/CustomFormats.js @@ -7,6 +7,7 @@ import Icon from 'Components/Icon'; import PageSectionContent from 'Components/Page/PageSectionContent'; import CustomFormat from './CustomFormat'; import EditCustomFormatModalConnector from './EditCustomFormatModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './CustomFormats.css'; class CustomFormats extends Component { @@ -58,7 +59,7 @@ class CustomFormats extends Component { } = this.props; return ( -
+
- Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js index 95c6ec54f..c6946b043 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js +++ b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/EditSpecificationModalContent.js @@ -14,6 +14,7 @@ import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup'; +import translate from 'Utilities/String/translate'; import styles from './EditSpecificationModalContent.css'; function EditSpecificationModalContent(props) { @@ -120,7 +121,7 @@ function EditSpecificationModalContent(props) { kind={kinds.DANGER} onPress={onDeleteSpecificationPress} > - Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/Specification.js b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/Specification.js index 9869112bc..110c1852f 100644 --- a/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/Specification.js +++ b/frontend/src/Settings/CustomFormats/CustomFormats/Specifications/Specification.js @@ -6,6 +6,7 @@ import Label from 'Components/Label'; import IconButton from 'Components/Link/IconButton'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditSpecificationModalConnector from './EditSpecificationModal'; +import translate from 'Utilities/String/translate'; import styles from './Specification.css'; class Specification extends Component { @@ -121,7 +122,7 @@ class Specification extends Component { } - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteSpecification} onCancel={this.onDeleteSpecificationModalClose} /> diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClient.js b/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClient.js index 4724ab9ad..b8baca3ad 100644 --- a/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClient.js +++ b/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClient.js @@ -5,6 +5,7 @@ import Card from 'Components/Card'; import Label from 'Components/Label'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditDownloadClientModalConnector from './EditDownloadClientModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './DownloadClient.css'; class DownloadClient extends Component { @@ -105,7 +106,7 @@ class DownloadClient extends Component { kind={kinds.DANGER} title="Delete Download Client" message={`Are you sure you want to delete the download client '${name}'?`} - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteDownloadClient} onCancel={this.onDeleteDownloadClientModalClose} /> diff --git a/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClients.js b/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClients.js index 1753f065f..6c673472a 100644 --- a/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClients.js +++ b/frontend/src/Settings/DownloadClients/DownloadClients/DownloadClients.js @@ -8,6 +8,7 @@ import PageSectionContent from 'Components/Page/PageSectionContent'; import DownloadClient from './DownloadClient'; import AddDownloadClientModal from './AddDownloadClientModal'; import EditDownloadClientModalConnector from './EditDownloadClientModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './DownloadClients.css'; class DownloadClients extends Component { @@ -58,7 +59,7 @@ class DownloadClients extends Component { } = this.state; return ( -
+
- Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/DownloadClients/Options/DownloadClientOptions.js b/frontend/src/Settings/DownloadClients/Options/DownloadClientOptions.js index 38a391891..9d02c96cc 100644 --- a/frontend/src/Settings/DownloadClients/Options/DownloadClientOptions.js +++ b/frontend/src/Settings/DownloadClients/Options/DownloadClientOptions.js @@ -7,6 +7,7 @@ import Form from 'Components/Form/Form'; import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; +import translate from 'Utilities/String/translate'; function DownloadClientOptions(props) { const { @@ -33,7 +34,7 @@ function DownloadClientOptions(props) { { hasSettings && !isFetching && !error &&
-
+
Enable @@ -85,7 +86,7 @@ function DownloadClientOptions(props) {
diff --git a/frontend/src/Settings/DownloadClients/RemotePathMappings/EditRemotePathMappingModalContent.js b/frontend/src/Settings/DownloadClients/RemotePathMappings/EditRemotePathMappingModalContent.js index b474cbea2..8ffc116f0 100644 --- a/frontend/src/Settings/DownloadClients/RemotePathMappings/EditRemotePathMappingModalContent.js +++ b/frontend/src/Settings/DownloadClients/RemotePathMappings/EditRemotePathMappingModalContent.js @@ -13,6 +13,7 @@ import Form from 'Components/Form/Form'; import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; +import translate from 'Utilities/String/translate'; import styles from './EditRemotePathMappingModalContent.css'; function EditRemotePathMappingModalContent(props) { @@ -105,7 +106,7 @@ function EditRemotePathMappingModalContent(props) { kind={kinds.DANGER} onPress={onDeleteRemotePathMappingPress} > - Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/DownloadClients/RemotePathMappings/RemotePathMapping.js b/frontend/src/Settings/DownloadClients/RemotePathMappings/RemotePathMapping.js index 0633b28ff..594082a81 100644 --- a/frontend/src/Settings/DownloadClients/RemotePathMappings/RemotePathMapping.js +++ b/frontend/src/Settings/DownloadClients/RemotePathMappings/RemotePathMapping.js @@ -6,6 +6,7 @@ import Icon from 'Components/Icon'; import Link from 'Components/Link/Link'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditRemotePathMappingModalConnector from './EditRemotePathMappingModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './RemotePathMapping.css'; class RemotePathMapping extends Component { @@ -89,7 +90,7 @@ class RemotePathMapping extends Component { kind={kinds.DANGER} title="Delete Delay Profile" message="Are you sure you want to delete this remote path mapping?" - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteRemotePathMapping} onCancel={this.onDeleteRemotePathMappingModalClose} /> diff --git a/frontend/src/Settings/DownloadClients/RemotePathMappings/RemotePathMappings.js b/frontend/src/Settings/DownloadClients/RemotePathMappings/RemotePathMappings.js index f633a3279..d895de650 100644 --- a/frontend/src/Settings/DownloadClients/RemotePathMappings/RemotePathMappings.js +++ b/frontend/src/Settings/DownloadClients/RemotePathMappings/RemotePathMappings.js @@ -7,6 +7,7 @@ import Link from 'Components/Link/Link'; import PageSectionContent from 'Components/Page/PageSectionContent'; import RemotePathMapping from './RemotePathMapping'; import EditRemotePathMappingModalConnector from './EditRemotePathMappingModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './RemotePathMappings.css'; class RemotePathMappings extends Component { @@ -44,7 +45,7 @@ class RemotePathMappings extends Component { } = this.props; return ( -
+
+
Send Anonymous Usage Data diff --git a/frontend/src/Settings/General/HostSettings.js b/frontend/src/Settings/General/HostSettings.js index 8f2e95e81..1779ec45c 100644 --- a/frontend/src/Settings/General/HostSettings.js +++ b/frontend/src/Settings/General/HostSettings.js @@ -5,6 +5,7 @@ import FieldSet from 'Components/FieldSet'; import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; +import translate from 'Utilities/String/translate'; function HostSettings(props) { const { @@ -27,7 +28,7 @@ function HostSettings(props) { } = settings; return ( -
+
+
Log Level diff --git a/frontend/src/Settings/General/ProxySettings.js b/frontend/src/Settings/General/ProxySettings.js index 5667abd0c..b4adfea5e 100644 --- a/frontend/src/Settings/General/ProxySettings.js +++ b/frontend/src/Settings/General/ProxySettings.js @@ -5,6 +5,7 @@ import FieldSet from 'Components/FieldSet'; import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; +import translate from 'Utilities/String/translate'; function ProxySettings(props) { const { @@ -30,7 +31,7 @@ function ProxySettings(props) { ]; return ( -
+
Use Proxy diff --git a/frontend/src/Settings/General/SecuritySettings.js b/frontend/src/Settings/General/SecuritySettings.js index 6a5204230..ac5de6b26 100644 --- a/frontend/src/Settings/General/SecuritySettings.js +++ b/frontend/src/Settings/General/SecuritySettings.js @@ -9,6 +9,7 @@ import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; import FormInputButton from 'Components/Form/FormInputButton'; import ConfirmModal from 'Components/Modal/ConfirmModal'; +import translate from 'Utilities/String/translate'; const authenticationMethodOptions = [ { key: 'none', value: 'None' }, @@ -76,7 +77,7 @@ class SecuritySettings extends Component { const authenticationEnabled = authenticationMethod && authenticationMethod.value !== 'none'; return ( -
+
Authentication diff --git a/frontend/src/Settings/General/UpdateSettings.js b/frontend/src/Settings/General/UpdateSettings.js index c76dc6339..a2da81c9a 100644 --- a/frontend/src/Settings/General/UpdateSettings.js +++ b/frontend/src/Settings/General/UpdateSettings.js @@ -6,6 +6,7 @@ import FieldSet from 'Components/FieldSet'; import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; +import translate from 'Utilities/String/translate'; function UpdateSettings(props) { const { @@ -43,7 +44,7 @@ function UpdateSettings(props) { updateOptions.push({ key: 'script', value: 'Script' }); return ( -
+
- Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/Indexers/Indexers/Indexer.js b/frontend/src/Settings/Indexers/Indexers/Indexer.js index 512f6dea2..3cce54f7b 100644 --- a/frontend/src/Settings/Indexers/Indexers/Indexer.js +++ b/frontend/src/Settings/Indexers/Indexers/Indexer.js @@ -6,6 +6,7 @@ import Label from 'Components/Label'; import IconButton from 'Components/Link/IconButton'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditIndexerModalConnector from './EditIndexerModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './Indexer.css'; class Indexer extends Component { @@ -136,7 +137,7 @@ class Indexer extends Component { kind={kinds.DANGER} title="Delete Indexer" message={`Are you sure you want to delete the indexer '${name}'?`} - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteIndexer} onCancel={this.onDeleteIndexerModalClose} /> diff --git a/frontend/src/Settings/Indexers/Indexers/Indexers.js b/frontend/src/Settings/Indexers/Indexers/Indexers.js index 734700d2d..410fc3384 100644 --- a/frontend/src/Settings/Indexers/Indexers/Indexers.js +++ b/frontend/src/Settings/Indexers/Indexers/Indexers.js @@ -8,6 +8,7 @@ import PageSectionContent from 'Components/Page/PageSectionContent'; import Indexer from './Indexer'; import AddIndexerModal from './AddIndexerModal'; import EditIndexerModalConnector from './EditIndexerModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './Indexers.css'; class Indexers extends Component { @@ -64,7 +65,7 @@ class Indexers extends Component { } = this.state; return ( -
+
+
{ isFetching && diff --git a/frontend/src/Settings/Indexers/Restrictions/EditRestrictionModalContent.js b/frontend/src/Settings/Indexers/Restrictions/EditRestrictionModalContent.js index 08162e5aa..28abfcacf 100644 --- a/frontend/src/Settings/Indexers/Restrictions/EditRestrictionModalContent.js +++ b/frontend/src/Settings/Indexers/Restrictions/EditRestrictionModalContent.js @@ -11,6 +11,7 @@ import Form from 'Components/Form/Form'; import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; +import translate from 'Utilities/String/translate'; import styles from './EditRestrictionModalContent.css'; function EditRestrictionModalContent(props) { @@ -91,7 +92,7 @@ function EditRestrictionModalContent(props) { kind={kinds.DANGER} onPress={onDeleteRestrictionPress} > - Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/Indexers/Restrictions/Restriction.js b/frontend/src/Settings/Indexers/Restrictions/Restriction.js index 07b7feece..c8e6f8fed 100644 --- a/frontend/src/Settings/Indexers/Restrictions/Restriction.js +++ b/frontend/src/Settings/Indexers/Restrictions/Restriction.js @@ -7,6 +7,7 @@ import Label from 'Components/Label'; import TagList from 'Components/TagList'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditRestrictionModalConnector from './EditRestrictionModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './Restriction.css'; class Restriction extends Component { @@ -122,7 +123,7 @@ class Restriction extends Component { kind={kinds.DANGER} title="Delete Restriction" message={'Are you sure you want to delete this restriction?'} - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteRestriction} onCancel={this.onDeleteRestrictionModalClose} /> diff --git a/frontend/src/Settings/Indexers/Restrictions/Restrictions.js b/frontend/src/Settings/Indexers/Restrictions/Restrictions.js index 3c9493b39..4e78aac77 100644 --- a/frontend/src/Settings/Indexers/Restrictions/Restrictions.js +++ b/frontend/src/Settings/Indexers/Restrictions/Restrictions.js @@ -7,6 +7,7 @@ import Icon from 'Components/Icon'; import PageSectionContent from 'Components/Page/PageSectionContent'; import Restriction from './Restriction'; import EditRestrictionModalConnector from './EditRestrictionModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './Restrictions.css'; class Restrictions extends Component { @@ -45,7 +46,7 @@ class Restrictions extends Component { } = this.props; return ( -
+
Ignore Deleted Movies @@ -364,7 +365,7 @@ class MediaManagement extends Component { } -
+
diff --git a/frontend/src/Settings/MediaManagement/Naming/Naming.js b/frontend/src/Settings/MediaManagement/Naming/Naming.js index b677f6898..283f6a604 100644 --- a/frontend/src/Settings/MediaManagement/Naming/Naming.js +++ b/frontend/src/Settings/MediaManagement/Naming/Naming.js @@ -9,6 +9,7 @@ import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; import NamingModal from './NamingModal'; +import translate from 'Utilities/String/translate'; import styles from './Naming.css'; const colonReplacementOptions = [ @@ -101,7 +102,7 @@ class Naming extends Component { } return ( -
+
{ isFetching && diff --git a/frontend/src/Settings/MediaManagement/Naming/NamingModal.js b/frontend/src/Settings/MediaManagement/Naming/NamingModal.js index 229c12eef..c51c74601 100644 --- a/frontend/src/Settings/MediaManagement/Naming/NamingModal.js +++ b/frontend/src/Settings/MediaManagement/Naming/NamingModal.js @@ -11,6 +11,7 @@ import ModalHeader from 'Components/Modal/ModalHeader'; import ModalBody from 'Components/Modal/ModalBody'; import ModalFooter from 'Components/Modal/ModalFooter'; import NamingOption from './NamingOption'; +import translate from 'Utilities/String/translate'; import styles from './NamingModal.css'; class NamingModal extends Component { @@ -354,7 +355,7 @@ class NamingModal extends Component {
-
+
{ customFormatTokens.map(({ token, example }) => { diff --git a/frontend/src/Settings/Metadata/Metadata/Metadatas.js b/frontend/src/Settings/Metadata/Metadata/Metadatas.js index afe33ab4c..c4dd1b169 100644 --- a/frontend/src/Settings/Metadata/Metadata/Metadatas.js +++ b/frontend/src/Settings/Metadata/Metadata/Metadatas.js @@ -3,6 +3,7 @@ import React from 'react'; import FieldSet from 'Components/FieldSet'; import PageSectionContent from 'Components/Page/PageSectionContent'; import Metadata from './Metadata'; +import translate from 'Utilities/String/translate'; import styles from './Metadatas.css'; function Metadatas(props) { @@ -12,7 +13,7 @@ function Metadatas(props) { } = props; return ( -
+
+
{ isFetching && diff --git a/frontend/src/Settings/NetImport/NetImport/EditNetImportModalContent.js b/frontend/src/Settings/NetImport/NetImport/EditNetImportModalContent.js index 4a02efdda..44b9cf5ad 100644 --- a/frontend/src/Settings/NetImport/NetImport/EditNetImportModalContent.js +++ b/frontend/src/Settings/NetImport/NetImport/EditNetImportModalContent.js @@ -13,6 +13,7 @@ import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup'; +import translate from 'Utilities/String/translate'; import styles from './EditNetImportModalContent.css'; function EditNetImportModalContent(props) { @@ -186,7 +187,7 @@ function EditNetImportModalContent(props) { kind={kinds.DANGER} onPress={onDeleteNetImportPress} > - Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/NetImport/NetImport/NetImport.js b/frontend/src/Settings/NetImport/NetImport/NetImport.js index 3816a17bb..3151c92c9 100644 --- a/frontend/src/Settings/NetImport/NetImport/NetImport.js +++ b/frontend/src/Settings/NetImport/NetImport/NetImport.js @@ -5,6 +5,7 @@ import Card from 'Components/Card'; import Label from 'Components/Label'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditNetImportModalConnector from './EditNetImportModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './NetImport.css'; class NetImport extends Component { @@ -107,7 +108,7 @@ class NetImport extends Component { kind={kinds.DANGER} title="Delete List" message={`Are you sure you want to delete the list '${name}'?`} - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteNetImport} onCancel={this.onDeleteNetImportModalClose} /> diff --git a/frontend/src/Settings/NetImport/NetImport/NetImports.js b/frontend/src/Settings/NetImport/NetImport/NetImports.js index 23ee98f0a..ec8223591 100644 --- a/frontend/src/Settings/NetImport/NetImport/NetImports.js +++ b/frontend/src/Settings/NetImport/NetImport/NetImports.js @@ -8,6 +8,7 @@ import PageSectionContent from 'Components/Page/PageSectionContent'; import NetImport from './NetImport'; import AddNetImportModal from './AddNetImportModal'; import EditNetImportModalConnector from './EditNetImportModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './NetImports.css'; class NetImports extends Component { @@ -58,7 +59,7 @@ class NetImports extends Component { } = this.state; return ( -
+
- Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/NetImport/NetImportExclusions/NetImportExclusion.js b/frontend/src/Settings/NetImport/NetImportExclusions/NetImportExclusion.js index 136d50073..95ca93354 100644 --- a/frontend/src/Settings/NetImport/NetImportExclusions/NetImportExclusion.js +++ b/frontend/src/Settings/NetImport/NetImportExclusions/NetImportExclusion.js @@ -6,6 +6,7 @@ import Icon from 'Components/Icon'; import Link from 'Components/Link/Link'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditNetImportExclusionModalConnector from './EditNetImportExclusionModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './NetImportExclusion.css'; class NetImportExclusion extends Component { @@ -89,7 +90,7 @@ class NetImportExclusion extends Component { kind={kinds.DANGER} title="Delete Import List Exclusion" message="Are you sure you want to delete this import list exclusion?" - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteNetImportExclusion} onCancel={this.onDeleteNetImportExclusionModalClose} /> diff --git a/frontend/src/Settings/NetImport/NetImportExclusions/NetImportExclusions.js b/frontend/src/Settings/NetImport/NetImportExclusions/NetImportExclusions.js index 198bf08a2..638a4aacf 100644 --- a/frontend/src/Settings/NetImport/NetImportExclusions/NetImportExclusions.js +++ b/frontend/src/Settings/NetImport/NetImportExclusions/NetImportExclusions.js @@ -7,6 +7,7 @@ import Link from 'Components/Link/Link'; import PageSectionContent from 'Components/Page/PageSectionContent'; import NetImportExclusion from './NetImportExclusion'; import EditNetImportExclusionModalConnector from './EditNetImportExclusionModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './NetImportExclusions.css'; class NetImportExclusions extends Component { @@ -44,7 +45,7 @@ class NetImportExclusions extends Component { } = this.props; return ( -
+
+
{ isFetching && diff --git a/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js index acfedd973..957990945 100644 --- a/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js +++ b/frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js @@ -14,6 +14,7 @@ import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; import ProviderFieldFormGroup from 'Components/Form/ProviderFieldFormGroup'; +import translate from 'Utilities/String/translate'; import styles from './EditNotificationModalContent.css'; function EditNotificationModalContent(props) { @@ -218,7 +219,7 @@ function EditNotificationModalContent(props) { kind={kinds.DANGER} onPress={onDeleteNotificationPress} > - Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/Notifications/Notifications/Notification.js b/frontend/src/Settings/Notifications/Notifications/Notification.js index ecea5b6db..e35dba606 100644 --- a/frontend/src/Settings/Notifications/Notifications/Notification.js +++ b/frontend/src/Settings/Notifications/Notifications/Notification.js @@ -5,6 +5,7 @@ import Card from 'Components/Card'; import Label from 'Components/Label'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import EditNotificationModalConnector from './EditNotificationModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './Notification.css'; class Notification extends Component { @@ -133,7 +134,7 @@ class Notification extends Component { kind={kinds.DANGER} title="Delete Notification" message={`Are you sure you want to delete the notification '${name}'?`} - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteNotification} onCancel={this.onDeleteNotificationModalClose} /> diff --git a/frontend/src/Settings/Notifications/Notifications/Notifications.js b/frontend/src/Settings/Notifications/Notifications/Notifications.js index 77a7c11e8..2e350de6b 100644 --- a/frontend/src/Settings/Notifications/Notifications/Notifications.js +++ b/frontend/src/Settings/Notifications/Notifications/Notifications.js @@ -8,6 +8,7 @@ import PageSectionContent from 'Components/Page/PageSectionContent'; import Notification from './Notification'; import AddNotificationModal from './AddNotificationModal'; import EditNotificationModalConnector from './EditNotificationModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './Notifications.css'; class Notifications extends Component { @@ -58,7 +59,7 @@ class Notifications extends Component { } = this.state; return ( -
+
diff --git a/frontend/src/Settings/Profiles/Delay/DelayProfiles.js b/frontend/src/Settings/Profiles/Delay/DelayProfiles.js index a745da9d4..daa758add 100644 --- a/frontend/src/Settings/Profiles/Delay/DelayProfiles.js +++ b/frontend/src/Settings/Profiles/Delay/DelayProfiles.js @@ -10,6 +10,7 @@ import DelayProfileDragSource from './DelayProfileDragSource'; import DelayProfileDragPreview from './DelayProfileDragPreview'; import DelayProfile from './DelayProfile'; import EditDelayProfileModalConnector from './EditDelayProfileModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './DelayProfiles.css'; class DelayProfiles extends Component { @@ -66,7 +67,7 @@ class DelayProfiles extends Component { return ( -
+
- Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/Profiles/Quality/EditQualityProfileModalContent.js b/frontend/src/Settings/Profiles/Quality/EditQualityProfileModalContent.js index bb060e5dc..8374ea507 100644 --- a/frontend/src/Settings/Profiles/Quality/EditQualityProfileModalContent.js +++ b/frontend/src/Settings/Profiles/Quality/EditQualityProfileModalContent.js @@ -16,6 +16,7 @@ import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; import QualityProfileItems from './QualityProfileItems'; import QualityProfileFormatItems from './QualityProfileFormatItems'; +import translate from 'Utilities/String/translate'; import styles from './EditQualityProfileModalContent.css'; const MODAL_BODY_PADDING = parseInt(dimensions.modalBodyPadding); @@ -297,7 +298,7 @@ class EditQualityProfileModalContent extends Component { isDisabled={isInUse} onPress={onDeleteQualityProfilePress} > - Delete + {translate('Delete')}
: null diff --git a/frontend/src/Settings/Profiles/Quality/QualityProfile.js b/frontend/src/Settings/Profiles/Quality/QualityProfile.js index f4a4ca414..c51aa3ec0 100644 --- a/frontend/src/Settings/Profiles/Quality/QualityProfile.js +++ b/frontend/src/Settings/Profiles/Quality/QualityProfile.js @@ -7,6 +7,7 @@ import IconButton from 'Components/Link/IconButton'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import Tooltip from 'Components/Tooltip/Tooltip'; import EditQualityProfileModalConnector from './EditQualityProfileModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './QualityProfile.css'; class QualityProfile extends Component { @@ -162,7 +163,7 @@ class QualityProfile extends Component { kind={kinds.DANGER} title="Delete Quality Profile" message={`Are you sure you want to delete the quality profile '${name}'?`} - confirmLabel="Delete" + confirmLabel={translate('Delete')} isSpinning={isDeleting} onConfirm={this.onConfirmDeleteQualityProfile} onCancel={this.onDeleteQualityProfileModalClose} diff --git a/frontend/src/Settings/Profiles/Quality/QualityProfileFormatItems.js b/frontend/src/Settings/Profiles/Quality/QualityProfileFormatItems.js index be87d46d9..132b60c08 100644 --- a/frontend/src/Settings/Profiles/Quality/QualityProfileFormatItems.js +++ b/frontend/src/Settings/Profiles/Quality/QualityProfileFormatItems.js @@ -7,6 +7,7 @@ import FormLabel from 'Components/Form/FormLabel'; import FormInputHelpText from 'Components/Form/FormInputHelpText'; import Link from 'Components/Link/Link'; import QualityProfileFormatItem from './QualityProfileFormatItem'; +import translate from 'Utilities/String/translate'; import styles from './QualityProfileFormatItems.css'; function calcOrder(profileFormatItems) { @@ -76,7 +77,7 @@ class QualityProfileFormatItems extends Component { return ( - Custom Formats + {translate('CustomFormats')}
diff --git a/frontend/src/Settings/Profiles/Quality/QualityProfiles.js b/frontend/src/Settings/Profiles/Quality/QualityProfiles.js index 2449a80ff..f9cb5209c 100644 --- a/frontend/src/Settings/Profiles/Quality/QualityProfiles.js +++ b/frontend/src/Settings/Profiles/Quality/QualityProfiles.js @@ -7,6 +7,7 @@ import Icon from 'Components/Icon'; import PageSectionContent from 'Components/Page/PageSectionContent'; import QualityProfile from './QualityProfile'; import EditQualityProfileModalConnector from './EditQualityProfileModalConnector'; +import translate from 'Utilities/String/translate'; import styles from './QualityProfiles.css'; class QualityProfiles extends Component { @@ -51,7 +52,7 @@ class QualityProfiles extends Component { } = this.props; return ( -
+
+
- Custom Formats + {translate('CustomFormats')}
@@ -94,7 +95,7 @@ function Settings() { className={styles.link} to="/settings/connect" > - Connect + {translate('Connect')}
diff --git a/frontend/src/Settings/Tags/Details/TagDetailsModalContent.js b/frontend/src/Settings/Tags/Details/TagDetailsModalContent.js index 24a717020..79a8ff024 100644 --- a/frontend/src/Settings/Tags/Details/TagDetailsModalContent.js +++ b/frontend/src/Settings/Tags/Details/TagDetailsModalContent.js @@ -10,6 +10,7 @@ import ModalHeader from 'Components/Modal/ModalHeader'; import ModalBody from 'Components/Modal/ModalBody'; import ModalFooter from 'Components/Modal/ModalFooter'; import TagDetailsDelayProfile from './TagDetailsDelayProfile'; +import translate from 'Utilities/String/translate'; import styles from './TagDetailsModalContent.css'; function TagDetailsModalContent(props) { @@ -83,7 +84,7 @@ function TagDetailsModalContent(props) { { !!notifications.length && -
+
{ notifications.map((item) => { return ( @@ -144,7 +145,7 @@ function TagDetailsModalContent(props) { { !!netImports.length && -
+
{ netImports.map((item) => { return ( @@ -167,7 +168,7 @@ function TagDetailsModalContent(props) { isDisabled={isTagUsed} onPress={onDeleteTagPress} > - Delete + {translate('Delete')} } diff --git a/frontend/src/Settings/Tags/Tag.js b/frontend/src/Settings/Tags/Tag.js index b4f7b3bf2..1d031fb3d 100644 --- a/frontend/src/Settings/Tags/Tag.js +++ b/frontend/src/Settings/Tags/Tag.js @@ -4,6 +4,7 @@ import { kinds } from 'Helpers/Props'; import Card from 'Components/Card'; import ConfirmModal from 'Components/Modal/ConfirmModal'; import TagDetailsModal from './Details/TagDetailsModal'; +import translate from 'Utilities/String/translate'; import styles from './Tag.css'; class Tag extends Component { @@ -147,7 +148,7 @@ class Tag extends Component { kind={kinds.DANGER} title="Delete Tag" message={`Are you sure you want to delete the tag '${label}'?`} - confirmLabel="Delete" + confirmLabel={translate('Delete')} onConfirm={this.onConfirmDeleteTag} onCancel={this.onDeleteTagModalClose} /> diff --git a/frontend/src/Settings/UI/UISettings.js b/frontend/src/Settings/UI/UISettings.js index 58d13b5bf..428df8761 100644 --- a/frontend/src/Settings/UI/UISettings.js +++ b/frontend/src/Settings/UI/UISettings.js @@ -10,6 +10,7 @@ import Form from 'Components/Form/Form'; import FormGroup from 'Components/Form/FormGroup'; import FormLabel from 'Components/Form/FormLabel'; import FormInputGroup from 'Components/Form/FormInputGroup'; +import translate from 'Utilities/String/translate'; export const firstDayOfWeekOptions = [ { key: 0, value: 'Sunday' }, @@ -83,7 +84,7 @@ class UISettings extends Component { id="uiSettings" {...otherProps} > -
+
First Day of Week @@ -111,7 +112,7 @@ class UISettings extends Component {
Short Date Format @@ -162,7 +163,7 @@ class UISettings extends Component {
Enable Color-Impaired Mode @@ -177,15 +178,16 @@ class UISettings extends Component {
- Movie Info Language + UI Language diff --git a/frontend/src/Store/Actions/blacklistActions.js b/frontend/src/Store/Actions/blacklistActions.js index 63737cc41..9d2c44035 100644 --- a/frontend/src/Store/Actions/blacklistActions.js +++ b/frontend/src/Store/Actions/blacklistActions.js @@ -7,6 +7,7 @@ import createSetTableOptionReducer from './Creators/Reducers/createSetTableOptio import createHandleActions from './Creators/createHandleActions'; import createRemoveItemHandler from './Creators/createRemoveItemHandler'; import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers'; +import translate from 'Utilities/String/translate'; // // Variables @@ -58,7 +59,7 @@ export const defaultState = { }, { name: 'date', - label: 'Date', + label: translate('Date'), isSortable: true, isVisible: true }, diff --git a/frontend/src/Store/Actions/calendarActions.js b/frontend/src/Store/Actions/calendarActions.js index 3ad46156a..16cf07e9e 100644 --- a/frontend/src/Store/Actions/calendarActions.js +++ b/frontend/src/Store/Actions/calendarActions.js @@ -11,6 +11,7 @@ import createClearReducer from './Creators/Reducers/createClearReducer'; import createHandleActions from './Creators/createHandleActions'; import { set, update } from './baseActions'; import { executeCommandHelper } from './commandActions'; +import translate from 'Utilities/String/translate'; // // Variables @@ -49,7 +50,7 @@ export const defaultState = { filters: [ { key: 'all', - label: 'All', + label: translate('All'), filters: [ { key: 'monitored', diff --git a/frontend/src/Store/Actions/discoverMovieActions.js b/frontend/src/Store/Actions/discoverMovieActions.js index 989bbd1ec..2d3d7394e 100644 --- a/frontend/src/Store/Actions/discoverMovieActions.js +++ b/frontend/src/Store/Actions/discoverMovieActions.js @@ -16,6 +16,7 @@ import createSetTableOptionReducer from './Creators/Reducers/createSetTableOptio import createSetClientSideCollectionSortReducer from './Creators/Reducers/createSetClientSideCollectionSortReducer'; import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer'; import createClearReducer from './Creators/Reducers/createClearReducer'; +import translate from 'Utilities/String/translate'; // // Variables @@ -162,7 +163,7 @@ export const defaultState = { filters: [ { key: 'all', - label: 'All', + label: translate('All'), filters: [] }, { diff --git a/frontend/src/Store/Actions/historyActions.js b/frontend/src/Store/Actions/historyActions.js index e1468d258..f86fd66e5 100644 --- a/frontend/src/Store/Actions/historyActions.js +++ b/frontend/src/Store/Actions/historyActions.js @@ -8,6 +8,7 @@ import createSetTableOptionReducer from './Creators/Reducers/createSetTableOptio import createHandleActions from './Creators/createHandleActions'; import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers'; import { updateItem } from './baseActions'; +import translate from 'Utilities/String/translate'; // // Variables @@ -59,7 +60,7 @@ export const defaultState = { }, { name: 'date', - label: 'Date', + label: translate('Date'), isSortable: true, isVisible: true }, @@ -91,7 +92,7 @@ export const defaultState = { filters: [ { key: 'all', - label: 'All', + label: translate('All'), filters: [] }, { diff --git a/frontend/src/Store/Actions/movieActions.js b/frontend/src/Store/Actions/movieActions.js index 2ce453c57..1fdf7dece 100644 --- a/frontend/src/Store/Actions/movieActions.js +++ b/frontend/src/Store/Actions/movieActions.js @@ -12,6 +12,7 @@ import createSaveProviderHandler from './Creators/createSaveProviderHandler'; import createRemoveItemHandler from './Creators/createRemoveItemHandler'; import createHandleActions from './Creators/createHandleActions'; import { updateItem } from './baseActions'; +import translate from 'Utilities/String/translate'; // // Variables @@ -21,7 +22,7 @@ export const section = 'movies'; export const filters = [ { key: 'all', - label: 'All', + label: translate('All'), filters: [] }, { diff --git a/frontend/src/Store/Actions/releaseActions.js b/frontend/src/Store/Actions/releaseActions.js index e024e248d..d6b2fd45a 100644 --- a/frontend/src/Store/Actions/releaseActions.js +++ b/frontend/src/Store/Actions/releaseActions.js @@ -6,6 +6,7 @@ import createSetClientSideCollectionSortReducer from './Creators/Reducers/create import createSetClientSideCollectionFilterReducer from './Creators/Reducers/createSetClientSideCollectionFilterReducer'; import createFetchHandler from './Creators/createFetchHandler'; import createHandleActions from './Creators/createHandleActions'; +import translate from 'Utilities/String/translate'; // // Variables @@ -61,7 +62,7 @@ export const defaultState = { filters: [ { key: 'all', - label: 'All', + label: translate('All'), filters: [] } ], diff --git a/frontend/src/Store/Actions/systemActions.js b/frontend/src/Store/Actions/systemActions.js index d238a92f1..c53dde697 100644 --- a/frontend/src/Store/Actions/systemActions.js +++ b/frontend/src/Store/Actions/systemActions.js @@ -11,6 +11,7 @@ import createRemoveItemHandler from './Creators/createRemoveItemHandler'; import createHandleActions from './Creators/createHandleActions'; import createServerSideCollectionHandlers from './Creators/createServerSideCollectionHandlers'; import { set } from './baseActions'; +import translate from 'Utilities/String/translate'; // // Variables @@ -119,7 +120,7 @@ export const defaultState = { filters: [ { key: 'all', - label: 'All', + label: translate('All'), filters: [] }, { diff --git a/frontend/src/System/Backup/Backups.js b/frontend/src/System/Backup/Backups.js index 424f8740b..cf96b670c 100644 --- a/frontend/src/System/Backup/Backups.js +++ b/frontend/src/System/Backup/Backups.js @@ -11,6 +11,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import BackupRow from './BackupRow'; import RestoreBackupModalConnector from './RestoreBackupModalConnector'; +import translate from 'Utilities/String/translate'; const columns = [ { @@ -79,14 +80,14 @@ class Backups extends Component { diff --git a/frontend/src/System/Events/LogsTable.js b/frontend/src/System/Events/LogsTable.js index f561545c3..964bfc2d8 100644 --- a/frontend/src/System/Events/LogsTable.js +++ b/frontend/src/System/Events/LogsTable.js @@ -13,6 +13,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection'; import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import FilterMenu from 'Components/Menu/FilterMenu'; import LogsTableRow from './LogsTableRow'; +import translate from 'Utilities/String/translate'; function LogsTable(props) { const { @@ -36,7 +37,7 @@ function LogsTable(props) { diff --git a/frontend/src/System/Logs/Files/LogFiles.js b/frontend/src/System/Logs/Files/LogFiles.js index e79cd91a3..d379b80e1 100644 --- a/frontend/src/System/Logs/Files/LogFiles.js +++ b/frontend/src/System/Logs/Files/LogFiles.js @@ -14,6 +14,7 @@ import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton'; import TableBody from 'Components/Table/TableBody'; import LogsNavMenu from '../LogsNavMenu'; import LogFilesTableRow from './LogFilesTableRow'; +import translate from 'Utilities/String/translate'; const columns = [ { @@ -58,7 +59,7 @@ class LogFiles extends Component { +
+
{ isFetching && diff --git a/frontend/src/System/Status/Health/Health.js b/frontend/src/System/Status/Health/Health.js index bb63ef284..c985b0c01 100644 --- a/frontend/src/System/Status/Health/Health.js +++ b/frontend/src/System/Status/Health/Health.js @@ -11,6 +11,7 @@ import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import TableRow from 'Components/Table/TableRow'; import TableRowCell from 'Components/Table/Cells/TableRowCell'; +import translate from 'Utilities/String/translate'; import styles from './Health.css'; function getInternalLink(source) { @@ -119,7 +120,7 @@ class Health extends Component {
- Health + {translate('Health')} { isFetching && isPopulated && diff --git a/frontend/src/System/Status/MoreInfo/MoreInfo.js b/frontend/src/System/Status/MoreInfo/MoreInfo.js index 24c2d3548..77714398b 100644 --- a/frontend/src/System/Status/MoreInfo/MoreInfo.js +++ b/frontend/src/System/Status/MoreInfo/MoreInfo.js @@ -4,6 +4,7 @@ import FieldSet from 'Components/FieldSet'; import DescriptionList from 'Components/DescriptionList/DescriptionList'; import DescriptionListItemTitle from 'Components/DescriptionList/DescriptionListItemTitle'; import DescriptionListItemDescription from 'Components/DescriptionList/DescriptionListItemDescription'; +import translate from 'Utilities/String/translate'; class MoreInfo extends Component { @@ -12,7 +13,7 @@ class MoreInfo extends Component { render() { return ( -
+
Home page diff --git a/frontend/src/System/Tasks/Queued/QueuedTasks.js b/frontend/src/System/Tasks/Queued/QueuedTasks.js index e856df532..7c7dd6b07 100644 --- a/frontend/src/System/Tasks/Queued/QueuedTasks.js +++ b/frontend/src/System/Tasks/Queued/QueuedTasks.js @@ -5,6 +5,7 @@ import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import QueuedTaskRowConnector from './QueuedTaskRowConnector'; +import translate from 'Utilities/String/translate'; const columns = [ { @@ -51,7 +52,7 @@ function QueuedTasks(props) { } = props; return ( -
+
{ isFetching && !isPopulated && diff --git a/frontend/src/System/Tasks/Scheduled/ScheduledTasks.js b/frontend/src/System/Tasks/Scheduled/ScheduledTasks.js index 1176db157..69bd0804f 100644 --- a/frontend/src/System/Tasks/Scheduled/ScheduledTasks.js +++ b/frontend/src/System/Tasks/Scheduled/ScheduledTasks.js @@ -5,6 +5,7 @@ import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import ScheduledTaskRowConnector from './ScheduledTaskRowConnector'; +import translate from 'Utilities/String/translate'; const columns = [ { @@ -46,7 +47,7 @@ function ScheduledTasks(props) { } = props; return ( -
+
{ isFetching && !isPopulated &&