From c206b9291231cc3eb75727aa2ec002fab7dfac9b Mon Sep 17 00:00:00 2001 From: Stevie Robinson Date: Sat, 15 Jul 2023 23:37:31 +0200 Subject: [PATCH] Translate sidebar strings --- .../Components/Page/Sidebar/PageSidebar.js | 65 ++++++++++--------- src/NzbDrone.Core/Localization/Core/en.json | 30 +++++++++ 2 files changed, 63 insertions(+), 32 deletions(-) diff --git a/frontend/src/Components/Page/Sidebar/PageSidebar.js b/frontend/src/Components/Page/Sidebar/PageSidebar.js index c7c6844a8..fcf4bc02f 100644 --- a/frontend/src/Components/Page/Sidebar/PageSidebar.js +++ b/frontend/src/Components/Page/Sidebar/PageSidebar.js @@ -10,6 +10,7 @@ import { icons } from 'Helpers/Props'; import locationShape from 'Helpers/Props/Shapes/locationShape'; import dimensions from 'Styles/Variables/dimensions'; import HealthStatusConnector from 'System/Status/Health/HealthStatusConnector'; +import translate from 'Utilities/String/translate'; import MessagesConnector from './Messages/MessagesConnector'; import PageSidebarItem from './PageSidebarItem'; import styles from './PageSidebar.css'; @@ -20,16 +21,16 @@ const SIDEBAR_WIDTH = parseInt(dimensions.sidebarWidth); const links = [ { iconName: icons.SERIES_CONTINUING, - title: 'Series', + title: translate('Series'), to: '/', alias: '/series', children: [ { - title: 'Add New', + title: translate('AddNew'), to: '/add/new' }, { - title: 'Library Import', + title: translate('LibraryImport'), to: '/add/import' } ] @@ -37,26 +38,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: 'Blocklist', + title: translate('Blocklist'), to: '/activity/blocklist' } ] @@ -64,15 +65,15 @@ const links = [ { iconName: icons.WARNING, - title: 'Wanted', + title: translate('Wanted'), to: '/wanted/missing', children: [ { - title: 'Missing', + title: translate('Missing'), to: '/wanted/missing' }, { - title: 'Cutoff Unmet', + title: translate('CutoffUnmet'), to: '/wanted/cutoffunmet' } ] @@ -80,59 +81,59 @@ 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: 'Import Lists', + title: translate('ImportLists'), to: '/settings/importlists' }, { - title: 'Connect', + title: translate('Connect'), to: '/settings/connect' }, { - title: 'Metadata', + title: translate('Metadata'), to: '/settings/metadata' }, { - title: 'Metadata Source', + title: translate('MetadataSource'), to: '/settings/metadatasource' }, { - title: 'Tags', + title: translate('Tags'), to: '/settings/tags' }, { - title: 'General', + title: translate('General'), to: '/settings/general' }, { - title: 'UI', + title: translate('UI'), to: '/settings/ui' } ] @@ -140,32 +141,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/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index e11957923..3afbcaa35 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -1,7 +1,9 @@ { + "Activity": "Activity", "Add": "Add", "Added": "Added", "AddingTag": "Adding tag", + "AddNew": "Add New", "ApiKeyValidationHealthCheckMessage": "Please update your API key to be at least {0} characters long. You can do this via settings or the config file", "AppDataLocationHealthCheckMessage": "Updating will not be possible to prevent deleting AppData on Update", "Apply": "Apply", @@ -13,19 +15,25 @@ "ApplyTagsHelpTextReplace": "Replace: Replace the tags with the entered tags (enter no tags to clear all tags)", "AutoAdd": "Auto Add", "AutomaticAdd": "Automatic Add", + "Backup": "Backup", + "Blocklist": "Blocklist", "BlocklistRelease": "Blocklist Release", "BlocklistReleaseHelpText": "Prevents Sonarr from automatically grabbing this release again", "BlocklistReleases": "Blocklist Releases", "Browser Reload Required": "Browser Reload Required", + "Calendar": "Calendar", "Cancel": "Cancel", "CloneCondition": "Clone Condition", "CloneCustomFormat": "Clone Custom Format", "Close": "Close", + "Connect": "Connect", "CountDownloadClientsSelected": "{count} download client(s) selected", "CountImportListsSelected": "{count} import list(s) selected", "CountIndexersSelected": "{count} indexer(s) selected", "CountSeasons": "{count} seasons", "CustomFormatScore": "Custom Format Score", + "CustomFormats": "Custom Formats", + "CutoffUnmet": "Cutoff Unmet", "Delete": "Delete", "DeleteCondition": "Delete Condition", "DeleteConditionMessageText": "Are you sure you want to delete the condition '{0}'?", @@ -38,6 +46,7 @@ "DeleteSelectedIndexers": "Delete Indexer(s)", "DeleteSelectedIndexersMessageText": "Are you sure you want to delete {count} selected indexer(s)?", "Disabled": "Disabled", + "DownloadClients": "Download Clients", "DownloadClientCheckNoneAvailableHealthCheckMessage": "No download client is available", "DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Unable to communicate with {0}.", "DownloadClientRootFolderHealthCheckMessage": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.", @@ -54,11 +63,15 @@ "EnableRSS": "Enable RSS", "Enabled": "Enabled", "Ended": "Ended", + "Events": "Events", "ExistingTag": "Existing tag", "ExportCustomFormat": "Export Custom Format", + "General": "General", "HiddenClickToShow": "Hidden, click to show", "HideAdvanced": "Hide Advanced", + "History": "History", "Implementation": "Implementation", + "ImportLists": "Import Lists", "ImportListRootFolderMissingRootHealthCheckMessage": "Missing root folder for import list(s): {0}", "ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Multiple root folders are missing for import lists: {0}", "ImportListStatusAllUnavailableHealthCheckMessage": "All lists are unavailable due to failures", @@ -66,6 +79,7 @@ "ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Enable Completed Download Handling if possible", "ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Enable Completed Download Handling if possible (Multi-Computer unsupported)", "ImportMechanismHandlingDisabledHealthCheckMessage": "Enable Completed Download Handling", + "Indexers": "Indexers", "IndexerJackettAllHealthCheckMessage": "Indexers using the unsupported Jackett 'all' endpoint: {0}", "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures for more than 6 hours", "IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures for more than 6 hours: {0}", @@ -78,11 +92,17 @@ "IndexerStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures: {0}", "Language": "Language", "Language that Sonarr will use for UI": "Language that Sonarr will use for UI", + "LibraryImport": "Library Import", + "LogFiles": "Log Files", "ManageClients": "Manage Clients", "ManageDownloadClients": "Manage Download Clients", "ManageImportLists": "Manage Import Lists", "ManageIndexers": "Manage Indexers", "ManageLists": "Manage Lists", + "MediaManagement": "Media Management", + "Metadata": "Metadata", + "MetadataSource": "Metadata Source", + "Missing": "Missing", "Monitored": "Monitored", "MountHealthCheckMessage": "Mount containing a series path is mounted read-only: ", "Name": "Name", @@ -100,10 +120,13 @@ "Path": "Path", "PreviousAiring": "Previous Airing", "Priority": "Priority", + "Profiles": "Profiles", "ProxyBadRequestHealthCheckMessage": "Failed to test proxy. Status Code: {0}", "ProxyFailedToTestHealthCheckMessage": "Failed to test proxy: {0}", "ProxyResolveIpHealthCheckMessage": "Failed to resolve the IP Address for the Configured Proxy Host {0}", + "Quality": "Quality", "QualityProfile": "Quality Profile", + "Queue": "Queue", "RecycleBinUnableToWriteHealthCheckMessage": "Unable to write to configured recycling bin folder: {0}. Ensure this path exists and is writable by the user running Sonarr", "RefreshSeries": "Refresh Series", "RemotePathMappingBadDockerPathHealthCheckMessage": "You are using docker; download client {0} places downloads in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.", @@ -142,17 +165,24 @@ "RootFolderMissingHealthCheckMessage": "Missing root folder: {0}", "RootFolderMultipleMissingHealthCheckMessage": "Multiple root folders are missing: {0}", "SearchForMonitoredEpisodes": "Search for monitored episodes", + "Series": "Series", "SetTags": "Set Tags", + "Settings": "Settings", "ShowAdvanced": "Show Advanced", "ShownClickToHide": "Shown, click to hide", "SizeOnDisk": "Size on disk", + "System": "System", "SystemTimeHealthCheckMessage": "System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected", "Tags": "Tags", + "Tasks": "Tasks", + "UI": "UI", "UI Language": "UI Language", "Unmonitored": "Unmonitored", + "Updates": "Updates", "UpdateAvailableHealthCheckMessage": "New update is available", "UpdateStartupNotWritableHealthCheckMessage": "Cannot install update because startup folder '{0}' is not writable by the user '{1}'.", "UpdateStartupTranslocationHealthCheckMessage": "Cannot install update because startup folder '{0}' is in an App Translocation folder.", "UpdateUINotWritableHealthCheckMessage": "Cannot install update because UI folder '{0}' is not writable by the user '{1}'.", + "Wanted": "Wanted", "Yes": "Yes" }