diff --git a/frontend/src/AlbumStudio/AlbumStudio.js b/frontend/src/AlbumStudio/AlbumStudio.js index 58ae6e5fe..fb4d1fa4d 100644 --- a/frontend/src/AlbumStudio/AlbumStudio.js +++ b/frontend/src/AlbumStudio/AlbumStudio.js @@ -32,13 +32,13 @@ const columns = [ }, { name: 'sortName', - label: translate('Name'), + label: () => translate('Name'), isSortable: true, isVisible: true }, { name: 'albumCount', - label: translate('Albums'), + label: () => translate('Albums'), isSortable: false, isVisible: true } diff --git a/frontend/src/AlbumStudio/AlbumStudioTableHeader.js b/frontend/src/AlbumStudio/AlbumStudioTableHeader.js index 88b934c5b..8d18babbe 100644 --- a/frontend/src/AlbumStudio/AlbumStudioTableHeader.js +++ b/frontend/src/AlbumStudio/AlbumStudioTableHeader.js @@ -42,7 +42,7 @@ function AlbumStudioTableHeader(props) { isSortable={isSortable} {...otherProps} > - {label} + {typeof label === 'function' ? label() : label} ); }) diff --git a/frontend/src/Artist/History/ArtistHistoryModalContent.js b/frontend/src/Artist/History/ArtistHistoryModalContent.js index 5f021ec5b..cf344290b 100644 --- a/frontend/src/Artist/History/ArtistHistoryModalContent.js +++ b/frontend/src/Artist/History/ArtistHistoryModalContent.js @@ -21,27 +21,27 @@ const columns = [ }, { name: 'album', - label: translate('Album'), + label: () => translate('Album'), isVisible: true }, { name: 'sourceTitle', - label: translate('SourceTitle'), + label: () => translate('SourceTitle'), isVisible: true }, { name: 'quality', - label: translate('Quality'), + label: () => translate('Quality'), isVisible: true }, { name: 'date', - label: translate('Date'), + label: () => translate('Date'), isVisible: true }, { name: 'details', - label: translate('Details'), + label: () => translate('Details'), isVisible: true }, { @@ -55,7 +55,7 @@ const columns = [ }, { name: 'actions', - label: translate('Actions'), + label: () => translate('Actions'), isVisible: true } ]; diff --git a/frontend/src/Artist/Index/Table/ArtistIndexHeader.js b/frontend/src/Artist/Index/Table/ArtistIndexHeader.js index 78b9e368a..7054bbaf3 100644 --- a/frontend/src/Artist/Index/Table/ArtistIndexHeader.js +++ b/frontend/src/Artist/Index/Table/ArtistIndexHeader.js @@ -68,7 +68,7 @@ function ArtistIndexHeader(props) { isSortable={isSortable} {...otherProps} > - {label} + {typeof label === 'function' ? label() : label} ); }) diff --git a/frontend/src/Components/FileBrowser/FileBrowserModalContent.js b/frontend/src/Components/FileBrowser/FileBrowserModalContent.js index 7e2712a33..0e4d6a015 100644 --- a/frontend/src/Components/FileBrowser/FileBrowserModalContent.js +++ b/frontend/src/Components/FileBrowser/FileBrowserModalContent.js @@ -20,12 +20,12 @@ import styles from './FileBrowserModalContent.css'; const columns = [ { name: 'type', - label: translate('Type'), + label: () => translate('Type'), isVisible: true }, { name: 'name', - label: translate('Name'), + label: () => translate('Name'), isVisible: true } ]; diff --git a/frontend/src/Components/Form/PlaylistInput.js b/frontend/src/Components/Form/PlaylistInput.js index 8891dc794..77718f4f1 100644 --- a/frontend/src/Components/Form/PlaylistInput.js +++ b/frontend/src/Components/Form/PlaylistInput.js @@ -17,7 +17,7 @@ import styles from './PlaylistInput.css'; const columns = [ { name: 'name', - label: translate('Playlist'), + label: () => translate('Playlist'), isSortable: false, isVisible: true } diff --git a/frontend/src/InteractiveImport/Album/SelectAlbumModalContent.js b/frontend/src/InteractiveImport/Album/SelectAlbumModalContent.js index 561a9fcfa..91c284636 100644 --- a/frontend/src/InteractiveImport/Album/SelectAlbumModalContent.js +++ b/frontend/src/InteractiveImport/Album/SelectAlbumModalContent.js @@ -18,22 +18,22 @@ import styles from './SelectAlbumModalContent.css'; const columns = [ { name: 'title', - label: translate('AlbumTitle'), + label: () => translate('AlbumTitle'), isVisible: true }, { name: 'albumType', - label: translate('AlbumType'), + label: () => translate('AlbumType'), isVisible: true }, { name: 'releaseDate', - label: translate('ReleaseDate'), + label: () => translate('ReleaseDate'), isVisible: true }, { name: 'status', - label: translate('AlbumStatus'), + label: () => translate('AlbumStatus'), isVisible: true } ]; diff --git a/frontend/src/InteractiveImport/AlbumRelease/SelectAlbumReleaseModalContent.js b/frontend/src/InteractiveImport/AlbumRelease/SelectAlbumReleaseModalContent.js index 5c59b360b..9698b3787 100644 --- a/frontend/src/InteractiveImport/AlbumRelease/SelectAlbumReleaseModalContent.js +++ b/frontend/src/InteractiveImport/AlbumRelease/SelectAlbumReleaseModalContent.js @@ -17,12 +17,12 @@ import styles from './SelectAlbumReleaseModalContent.css'; const columns = [ { name: 'album', - label: translate('Album'), + label: () => translate('Album'), isVisible: true }, { name: 'release', - label: translate('AlbumRelease'), + label: () => translate('AlbumRelease'), isVisible: true } ]; diff --git a/frontend/src/InteractiveImport/Folder/InteractiveImportSelectFolderModalContent.js b/frontend/src/InteractiveImport/Folder/InteractiveImportSelectFolderModalContent.js index f30c3cb3d..bbe1a747f 100644 --- a/frontend/src/InteractiveImport/Folder/InteractiveImportSelectFolderModalContent.js +++ b/frontend/src/InteractiveImport/Folder/InteractiveImportSelectFolderModalContent.js @@ -17,11 +17,11 @@ import styles from './InteractiveImportSelectFolderModalContent.css'; const recentFoldersColumns = [ { name: 'folder', - label: translate('Folder') + label: () => translate('Folder') }, { name: 'lastUsed', - label: translate('LastUsed') + label: () => translate('LastUsed') }, { name: 'actions', diff --git a/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContent.js b/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContent.js index a73b4c00d..d1361a785 100644 --- a/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContent.js +++ b/frontend/src/InteractiveImport/Interactive/InteractiveImportModalContent.js @@ -33,40 +33,40 @@ import styles from './InteractiveImportModalContent.css'; const columns = [ { name: 'path', - label: translate('Path'), + label: () => translate('Path'), isSortable: true, isVisible: true }, { name: 'artist', - label: translate('Artist'), + label: () => translate('Artist'), isSortable: true, isVisible: true }, { name: 'album', - label: translate('Album'), + label: () => translate('Album'), isVisible: true }, { name: 'tracks', - label: translate('Tracks'), + label: () => translate('Tracks'), isVisible: true }, { name: 'releaseGroup', - label: translate('ReleaseGroup'), + label: () => translate('ReleaseGroup'), isVisible: true }, { name: 'quality', - label: translate('Quality'), + label: () => translate('Quality'), isSortable: true, isVisible: true }, { name: 'size', - label: translate('Size'), + label: () => translate('Size'), isSortable: true, isVisible: true }, @@ -96,9 +96,9 @@ const filterExistingFilesOptions = { }; const importModeOptions = [ - { key: 'chooseImportMode', value: translate('ChooseImportMethod'), disabled: true }, - { key: 'move', value: translate('MoveFiles') }, - { key: 'copy', value: translate('HardlinkCopyFiles') } + { key: 'chooseImportMode', value: () => translate('ChooseImportMethod'), disabled: true }, + { key: 'move', value: () => translate('MoveFiles') }, + { key: 'copy', value: () => translate('HardlinkCopyFiles') } ]; const SELECT = 'select'; diff --git a/frontend/src/InteractiveImport/Track/SelectTrackModalContent.js b/frontend/src/InteractiveImport/Track/SelectTrackModalContent.js index ea70de52c..3b31637ab 100644 --- a/frontend/src/InteractiveImport/Track/SelectTrackModalContent.js +++ b/frontend/src/InteractiveImport/Track/SelectTrackModalContent.js @@ -21,7 +21,7 @@ import SelectTrackRow from './SelectTrackRow'; const columns = [ { name: 'mediumNumber', - label: translate('Medium'), + label: () => translate('Medium'), isSortable: true, isVisible: true }, @@ -33,12 +33,12 @@ const columns = [ }, { name: 'title', - label: translate('Title'), + label: () => translate('Title'), isVisible: true }, { name: 'trackStatus', - label: translate('Status'), + label: () => translate('Status'), isVisible: true } ]; diff --git a/frontend/src/InteractiveSearch/InteractiveSearch.js b/frontend/src/InteractiveSearch/InteractiveSearch.js index 992596625..6e74695b0 100644 --- a/frontend/src/InteractiveSearch/InteractiveSearch.js +++ b/frontend/src/InteractiveSearch/InteractiveSearch.js @@ -16,43 +16,43 @@ import styles from './InteractiveSearch.css'; const columns = [ { name: 'protocol', - label: translate('Source'), + label: () => translate('Source'), isSortable: true, isVisible: true }, { name: 'age', - label: translate('Age'), + label: () => translate('Age'), isSortable: true, isVisible: true }, { name: 'title', - label: translate('Title'), + label: () => translate('Title'), isSortable: true, isVisible: true }, { name: 'indexer', - label: translate('Indexer'), + label: () => translate('Indexer'), isSortable: true, isVisible: true }, { name: 'size', - label: translate('Size'), + label: () => translate('Size'), isSortable: true, isVisible: true }, { name: 'peers', - label: translate('Peers'), + label: () => translate('Peers'), isSortable: true, isVisible: true }, { name: 'qualityWeight', - label: translate('Quality'), + label: () => translate('Quality'), isSortable: true, isVisible: true }, diff --git a/frontend/src/Search/Common/AddArtistOptionsForm.js b/frontend/src/Search/Common/AddArtistOptionsForm.js index e620ad379..dc2b621dd 100644 --- a/frontend/src/Search/Common/AddArtistOptionsForm.js +++ b/frontend/src/Search/Common/AddArtistOptionsForm.js @@ -171,7 +171,7 @@ class AddArtistOptionsForm extends Component { AddArtistOptionsForm.propTypes = { rootFolderPath: PropTypes.object, monitor: PropTypes.object.isRequired, - monitorNewItems: PropTypes.string.isRequired, + monitorNewItems: PropTypes.object.isRequired, qualityProfileId: PropTypes.object, metadataProfileId: PropTypes.object, showMetadataProfile: PropTypes.bool.isRequired, diff --git a/frontend/src/Settings/MediaManagement/MediaManagement.js b/frontend/src/Settings/MediaManagement/MediaManagement.js index e722a1e9b..d38bc7224 100644 --- a/frontend/src/Settings/MediaManagement/MediaManagement.js +++ b/frontend/src/Settings/MediaManagement/MediaManagement.js @@ -16,26 +16,81 @@ import NamingConnector from './Naming/NamingConnector'; import RootFoldersConnector from './RootFolder/RootFoldersConnector'; const rescanAfterRefreshOptions = [ - { key: 'always', value: translate('Always') }, - { key: 'afterManual', value: translate('AfterManualRefresh') }, - { key: 'never', value: translate('Never') } + { + key: 'always', + get value() { + return translate('Always'); + } + }, + { + key: 'afterManual', + get value() { + return translate('AfterManualRefresh'); + } + }, + { + key: 'never', + get value() { + return translate('Never'); + } + } ]; const allowFingerprintingOptions = [ - { key: 'allFiles', value: translate('Always') }, - { key: 'newFiles', value: translate('ForNewImportsOnly') }, - { key: 'never', value: translate('Never') } + { + key: 'allFiles', + get value() { + return translate('Always'); + } + }, + { + key: 'newFiles', + get value() { + return translate('ForNewImportsOnly'); + } + }, + { + key: 'never', + get value() { + return translate('Never'); + } + } ]; const downloadPropersAndRepacksOptions = [ - { key: 'preferAndUpgrade', value: translate('PreferAndUpgrade') }, - { key: 'doNotUpgrade', value: translate('DoNotUpgradeAutomatically') }, - { key: 'doNotPrefer', value: translate('DoNotPrefer') } + { + key: 'preferAndUpgrade', + get value() { + return translate('PreferAndUpgrade'); + } + }, + { + key: 'doNotUpgrade', + get value() { + return translate('DoNotUpgradeAutomatically'); + } + }, + { + key: 'doNotPrefer', + get value() { + return translate('DoNotPrefer'); + } + } ]; const fileDateOptions = [ - { key: 'none', value: translate('None') }, - { key: 'albumReleaseDate', value: translate('AlbumReleaseDate') } + { + key: 'none', + get value() { + return translate('None'); + } + }, + { + key: 'albumReleaseDate', + get value() { + return translate('AlbumReleaseDate'); + } + } ]; class MediaManagement extends Component { diff --git a/frontend/src/Settings/Profiles/Delay/EditDelayProfileModalContent.js b/frontend/src/Settings/Profiles/Delay/EditDelayProfileModalContent.js index 8a8c02c63..da1bf7f44 100644 --- a/frontend/src/Settings/Profiles/Delay/EditDelayProfileModalContent.js +++ b/frontend/src/Settings/Profiles/Delay/EditDelayProfileModalContent.js @@ -18,10 +18,30 @@ import translate from 'Utilities/String/translate'; import styles from './EditDelayProfileModalContent.css'; const protocolOptions = [ - { key: 'preferUsenet', value: translate('PreferUsenet') }, - { key: 'preferTorrent', value: translate('PreferTorrent') }, - { key: 'onlyUsenet', value: translate('OnlyUsenet') }, - { key: 'onlyTorrent', value: translate('OnlyTorrent') } + { + key: 'preferUsenet', + get value() { + return translate('PreferUsenet'); + } + }, + { + key: 'preferTorrent', + get value() { + return translate('PreferTorrent'); + } + }, + { + key: 'onlyUsenet', + get value() { + return translate('OnlyUsenet'); + } + }, + { + key: 'onlyTorrent', + get value() { + return translate('OnlyTorrent'); + } + } ]; function EditDelayProfileModalContent(props) { diff --git a/frontend/src/TrackFile/Editor/TrackFileEditorModalContent.js b/frontend/src/TrackFile/Editor/TrackFileEditorModalContent.js index eeb76eb7b..aa59e866f 100644 --- a/frontend/src/TrackFile/Editor/TrackFileEditorModalContent.js +++ b/frontend/src/TrackFile/Editor/TrackFileEditorModalContent.js @@ -25,17 +25,17 @@ import styles from './TrackFileEditorModalContent.css'; const columns = [ { name: 'trackNumber', - label: translate('Track'), + label: () => translate('Track'), isVisible: true }, { name: 'path', - label: translate('Path'), + label: () => translate('Path'), isVisible: true }, { name: 'quality', - label: translate('Quality'), + label: () => translate('Quality'), isVisible: true } ]; diff --git a/frontend/src/UnmappedFiles/UnmappedFilesTableHeader.js b/frontend/src/UnmappedFiles/UnmappedFilesTableHeader.js index 5b4b22933..3b0715654 100644 --- a/frontend/src/UnmappedFiles/UnmappedFilesTableHeader.js +++ b/frontend/src/UnmappedFiles/UnmappedFilesTableHeader.js @@ -75,7 +75,7 @@ function UnmappedFilesTableHeader(props) { isSortable={isSortable} {...otherProps} > - {label} + {typeof label === 'function' ? label() : label} ); }) diff --git a/frontend/src/Utilities/Artist/monitorNewItemsOptions.js b/frontend/src/Utilities/Artist/monitorNewItemsOptions.js index 2cf4c2882..2f352be3a 100644 --- a/frontend/src/Utilities/Artist/monitorNewItemsOptions.js +++ b/frontend/src/Utilities/Artist/monitorNewItemsOptions.js @@ -1,9 +1,24 @@ import translate from 'Utilities/String/translate'; const monitorNewItemsOptions = [ - { key: 'all', value: translate('AllAlbums') }, - { key: 'none', value: translate('None') }, - { key: 'new', value: translate('New') } + { + key: 'all', + get value() { + return translate('AllAlbums'); + } + }, + { + key: 'none', + get value() { + return translate('None'); + } + }, + { + key: 'new', + get value() { + return translate('New'); + } + } ]; export default monitorNewItemsOptions; diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index 28c30b804..c719d0edb 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -149,6 +149,7 @@ "ClickToChangeReleaseGroup": "Click to change release group", "ClientPriority": "Client Priority", "Clone": "Clone", + "CloneCondition": "Clone Condition", "CloneCustomFormat": "Clone Custom Format", "CloneIndexer": "Clone Indexer", "CloneProfile": "Clone Profile", @@ -331,6 +332,7 @@ "EnableRssHelpText": "Will be used when Lidarr periodically looks for releases via RSS Sync", "EnableSSL": "Enable SSL", "EnableSslHelpText": " Requires restart running as administrator to take effect", + "Enabled": "Enabled", "EnabledHelpText": "Check to enable release profile", "Ended": "Ended", "EndedAllTracksDownloaded": "Ended (All tracks downloaded)", @@ -684,6 +686,7 @@ "PreviewRetag": "Preview Retag", "PrimaryAlbumTypes": "Primary Album Types", "PrimaryTypes": "Primary Types", + "Priority": "Priority", "PriorityHelpText": "Indexer Priority from 1 (Highest) to 50 (Lowest). Default: 25. Used when grabbing releases as a tiebreaker for otherwise equal releases, Lidarr will still use all enabled indexers for RSS Sync and Searching.", "Proceed": "Proceed", "Profiles": "Profiles",