/*
 * CoolerControl - monitor and control your cooling and other devices
 * Copyright (c) 2021-2025  Guy Boldon and contributors
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

export default {
    common: {
        save: 'Save',
        cancel: 'Cancel',
        confirm: 'Confirm',
        delete: 'Delete',
        edit: 'Edit',
        add: 'Add',
        remove: 'Remove',
        yes: 'Yes',
        no: 'No',
        ok: 'OK',
        error: 'Error',
        success: 'Success',
        warning: 'Warning',
        loading: 'Loading...',
        restarting: 'Restarting...',
        noData: 'No data available',
        retry: 'Retry',
        saveAndRefresh: 'Save and Refresh',
        reset: 'Reset',
        back: 'Back',
        sslTls: 'SSL/TLS',
        protocol: 'Protocol',
        address: 'Address',
        port: 'Port',
        search: 'Search',
        selected: 'Selected',
        clear: 'Clear',
        finish: 'Finish',
        next: 'Next',
        previous: 'Previous',
        apply: 'Apply',
        defaults: 'Defaults',
        unmanaged: 'Unmanaged',
        readOnly: 'Read-only',
        rename: 'Rename',
        password: 'Password',
        currentPassword: 'Current Password',
        newPassword: 'New Password',
        confirmPassword: 'Confirm Password',
        passwordPrompt: 'Enter a password',
        passwordWeak: 'Weak',
        passwordMedium: 'Medium',
        passwordStrong: 'Strong',
        savePassword: 'Save Password',
        editName: 'Edit Name',
        state: 'State',
        name: 'Name',
        message: 'Message',
        timestamp: 'Timestamp',
        overview: 'Overview',
        login: 'Login',
        logout: 'Logout',
        temperature: 'Temp',
        duty: 'Duty',
        offset: 'Offset',
        stay: 'Stay',
        discard: 'Discard',
        blankNameResetDefault: 'A blank name will reset it to the system default.',
        copy: '(copy)',
        minuteAbbr: 'min',
        rpmAbbr: 'rpm',
        mhzAbbr: 'MHz',
        ghzAbbr: 'GHz',
        tempUnit: '°C',
        percentUnit: '%',
        secondAbbr: 's',
        wattAbbr: 'W',
        toast: {
            modeCreated: 'Mode Created',
            modeDuplicated: 'Mode Duplicated',
            modeNameUpdated: 'Mode Name Updated',
            modeUpdated: 'Mode updated with current settings',
            modeDeleted: 'Mode Deleted',
            modeActivated: 'Mode Activated',
            customSensorSaved: 'Custom Sensor Saved and Refreshing UI...',
            customSensorUpdated: 'Custom Sensor successfully updated and Refreshing UI...',
            customSensorDeleted: 'Custom Sensor successfully deleted and Refreshing UI...',
            alertSaved: 'Alert Saved',
            alertUpdated: 'Alert Updated',
            alertDeleted: 'Alert Deleted',
            alertNotFound: 'Alert not found to Update',
            settingsUpdated: 'Settings successfully updated and applied to the device',
            settingsError: 'There was an error when attempting to apply these settings',
            thinkPadFanControlApplied: 'ThinkPad Fan Control successfully applied',
        },
    },
    layout: {
        topbar: {
            login: 'Login',
            logout: 'Logout',
            changePassword: 'Change Password',
            accessTokens: 'Access Tokens',
            restartUI: 'Restart UI',
            restartDaemonAndUI: 'Restart Daemon and UI',
            restartConfirmMessage: 'Are you sure you want to restart the daemon and the UI?',
            restartConfirmHeader: 'Daemon Restart',
            shutdownSuccess: 'Daemon shutdown signal accepted',
            shutdownError: 'Unknown error sending shutdown signal. See logs for details.',
            quitDesktopApp: 'Quit Desktop App',
            applicationInfo: 'Info & Tools',
            back: 'Back',
            expandMenu: 'Expand Menu',
            collapseMenu: 'Collapse Menu',
            controls: 'Controls',
            alerts: 'Alerts',
            plugins: 'Plugins',
            settings: 'Settings',
            openInBrowser: 'Open in Browser',
            modes: 'Modes',
            loginSuccessful: 'Login successful',
        },
        settings: {
            title: 'Settings',
            userInterface: 'User Interface',
            device: 'Devices',
            daemon: 'Daemon',
            devices: {
                devicesAndSensors: 'Devices and Sensors',
                detectionIssues: 'Detection Issues? See the',
                hardwareSupportDoc: 'Hardware Support Documentation.',
                toggleRequiresRestart:
                    'Toggling devices or sensors requires a daemon and UI restart. Are you sure want to do this now?',
                enableDevices: 'Enable Devices',
                selectTooltip:
                    'Select devices and sensors to disable or enable.\nDisabling unused devices and sensors is highly\nrecommended.',
                unknownError:
                    'Unknown error trying to apply changes to all devices. See logs for details.',
            },
            plugin: 'Plugins (beta)',
            plugins: {
                device: 'Device Service Plugin',
                integration: 'Integration Plugin',
                privileged: 'Privileged Access',
                pluginUrl: 'Homepage',
                restricted: 'Restricted Access',
                settingsSaved: 'Plugin settings successfully saved',
                settingsNotSaved: 'Failed to save plugin settings',
            },
            profiles: 'Profiles',
            alerts: 'Alerts',
            dashboards: 'Dashboards',
            modes: 'Modes',
            appearance: 'Appearance',
            language: 'Language',
            selectLanguage: 'Select Language',
            english: 'English',
            chinese: 'Chinese (Simplified)',
            japanese: 'Japanese',
            chineseTrad: 'Chinese (Traditional)',
            russian: 'Russian',
            german: 'German',
            french: 'French',
            spanish: 'Spanish',
            arabic: 'Arabic',
            portuguese: 'Portuguese',
            hindi: 'Hindi',
            theme: 'Theme',
            themeLight: 'Light',
            themeDark: 'Dark',
            themeSystem: 'System',
            themeCustom: 'Custom',
            themeHighContrastDark: 'High Contrast Dark',
            themeHighContrastLight: 'High Contrast Light',
            lineThickness: 'Line Thickness',
            fullScreen: 'Full Screen',
            menuBarAlwaysVisible: 'Menu Bar Always Visible',
            hideMenuCollapseIcon: 'Hide Menu Collapse Icon',
            eyeCandy: 'Eye Candy',
            showOnboarding: 'Show Onboarding Tour on Startup',
            introduction: 'Introduction',
            startTour: 'Start Tour',
            timeFormat: 'Time Format',
            time24h: '24hr',
            time12h: '12hr',
            frequencyPrecision: 'Frequency Precision',
            startupPage: 'Startup Page',
            sidebarToCollapse: 'Sidebar to Collapse',
            entitiesBelowSensors: 'Entities below Sensors',
            dashboardLineSize: 'Dashboard Line Size',
            themeStyle: 'Theme Style',
            themeMode: {
                system: 'System',
                dark: 'Dark',
                light: 'Light',
                highContrastDark: 'High Contrast Dark',
                highContrastLight: 'High Contrast Light',
                custom: 'Custom',
            },
            desktop: 'Desktop',
            startInTray: 'Start in Tray',
            closeToTray: 'Close to Tray',
            zoom: 'Zoom',
            desktopStartupDelay: 'Desktop Startup Delay',
            applySettingsOnStartup: 'Apply Settings on Startup',
            deviceDelayAtStartup: 'Device Delay at Startup',
            pollingRate: 'Polling Rate',
            compressApiPayload: 'Compress API Payload',
            liquidctlIntegration: 'Liquidctl Integration',
            liquidctlDeviceInit: 'Liquidctl Device Initialization',
            hideDuplicateDevices: 'Hide Duplicate Devices',
            drivePowerState: 'Drive Power State',
            sensorsAutoDetect: 'Sensors Auto-Detect',
            deviceListener: 'Device Change Listener',
            customTheme: {
                title: 'Custom Theme',
                accent: 'Accent Color',
                bgOne: 'Background Primary',
                bgTwo: 'Background Secondary',
                border: 'Border Color',
                text: 'Text Color',
                textSecondary: 'Secondary Text Color',
                export: 'Export Theme',
                import: 'Import Theme',
                copyCode: 'Copy Code',
                pasteCode: 'Paste Code',
                themeCodeCopied: 'Theme code copied',
                themeApplied: 'Theme applied',
                invalidThemeCode: 'Invalid theme code',
            },
            tooltips: {
                introduction: 'Start the application introduction tour.',
                timeFormat: 'Time format: 12-hour (AM/PM) or 24-hour',
                frequencyPrecision: 'Adjust the precision of displayed frequency values.',
                startupPage: 'The page shown after the application loads.',
                eyeCandy:
                    'Enable visual animations like spinning fan icons.\nThis will use some additional GPU resources.',
                sidebarCollapse:
                    'Whether to display a Menu Collapse Icon in the Sidebar,\nor use the empty sidebar area to expand or collapse the main menu.',
                entitiesBelowSensors:
                    'Whether to display entities below device sensors in the main menu.',
                fullScreen: 'Toggles full-screen mode',
                lineThickness: 'Adjust the line thickness of charts on the dashboard',
                startInTray:
                    'Upon startup, the main UI window will be hidden and only\nthe system tray icon will be visible.',
                closeToTray:
                    'Closing the application window will leave the app running in the system tray',
                zoom: 'Manually set the UI Zoom level.',
                desktopStartupDelay:
                    'Adds some delay before starting the desktop application (in seconds).\nHelps with issues that that arise from having the desktop application\nstarted automatically on login or starting too quickly',
                applySettingsOnStartup:
                    'Automatically apply settings on daemon startup and when waking from sleep',
                deviceDelayAtStartup:
                    'Delay before starting device communication (in seconds).\nHelps with devices that take time to initialize or are intermittently detected',
                pollingRate:
                    'The rate at which sensor data is polled (in seconds).\nA higher poll rate will reduce resource usage, and a lower will increase responsiveness.\nA rate of less than 1.0 should be used with caution.',
                compressApiPayload: 'Enable API payload compression',
                liquidctlIntegration:
                    'Disabling this will fully deactivate Liquidctl integration, \nregardless of the installation status of the coolercontrol-liqctld \npackage. If available, HWMon drivers will be utilized instead.',
                liquidctlDeviceInit:
                    'Caution: Disable this ONLY if you, or another program,\nare handling liquidctl device initialization.\nThis can help avoid conflicts with other programs.',
                hideDuplicateDevices:
                    'Some devices are supported by both Liquidctl and HWMon drivers.\nLiquidctl is used by default for its extra features. To use HWMon drivers instead,\ndisable this and the liquidctl device to avoid driver conflicts.',
                drivePowerState:
                    'SSDs and HDDs in particular can spin down and enter a low power state.\nThis option, when enabled and the drive supports it, will report drive temperatures\nas 0°C when spun down so that fan Profiles can be adjusted accordingly.',
                sensorsAutoDetect:
                    'Automatically detect Super-I/O hardware sensors and load\nkernel modules at startup. (x86_64 only)',
                deviceListener:
                    'Listen for device add/remove events (e.g. USB hotplug)\nand notify when hardware changes are detected.',
                daemonAddress:
                    'The IP address or domain name of the daemon to establish a connection with.\nSupports IPv4, IPv6, and DNS-resolvable hostnames.',
                daemonPort: 'The port used to establish a connection with the daemon.',
                sslTls: 'Whether to connect to the daemon using SSL/TLS.\nA proxy setup is required.',
                triggersRestart: 'Triggers an automatic restart',
                triggersUIRestart: 'Triggers an automatic UI restart',
                triggersDaemonRestart: 'Triggers an automatic daemon restart',
                resetToDefaults: 'Reset to default settings',
                saveAndReload: 'Save and reload the UI',
                copyThemeCode:
                    'Copy a compact code representing your current custom theme.\nShare it by pasting into chat or forums.',
                pasteThemeCode: 'Apply a custom theme from a code (cct1:...) shared with you.',
                exportThemeFile:
                    'Save the current custom theme to a JSON file you can keep or share.',
                importThemeFile: 'Load a custom theme from a JSON file on disk.',
            },
            applySettingAndRestart:
                'Changing this setting requires a daemon and UI restart. Are you sure want to do this now?',
            restartHeader: 'Apply Setting and Restart',
            restartSuccess: 'Restarting now',
            success: 'Success',
            successDetail: 'Operation completed successfully',
            settingsAppliedSuccess: 'Settings applied successfully',
            restartRequestSuccess: 'Restart request sent successfully',
            colorPickerDialogTitle: 'Select Color',
            colorPickerConfirm: 'Confirm',
            colorPickerCancel: 'Cancel',
            languageChangeConfirm: 'Change language?',
            languageChangeConfirmMessage:
                'Are you sure you want to continue? If some interface elements are not displayed correctly, please refresh the page manually.',
            languageChangeSuccess: 'Language switched successfully.',
            languageChangeError: 'Failed to change language. Please try again.',
            themeChangeSuccess: 'Theme switched successfully.',
            entitiesBelowSensorsEnabledMessage: 'Entities will now be displayed below sensors.',
            entitiesBelowSensorsDisabledMessage:
                'Entities will no longer be displayed below sensors.',
        },
        menu: {
            system: 'System',
            dashboards: 'Dashboards',
            profiles: 'Profiles',
            functions: 'Functions',
            customSensors: 'Custom Sensors',
            modes: 'Modes',
            alerts: 'Alerts',
            pinned: 'Pinned',
            tooltips: {
                delete: 'Delete',
                createMode: 'Create Mode from Current Settings',
                addProfile: 'Add Profile',
                editName: 'Edit Name',
                addAlert: 'Add Alert',
                deleteFunction: 'Delete Function',
                addDashboard: 'Add Dashboard',
                deleteDashboard: 'Delete Dashboard',
                duplicate: 'Duplicate',
                setAsHome: 'Set as Home',
                save: 'Save',
                deleteMode: 'Delete Mode',
                updateWithCurrentSettings: 'Update with Current Settings',
                rename: 'Rename',
                createModeFromCurrentSettings: 'Create Mode from Current Settings',
                addCustomSensor: 'Add Custom Sensor',
                addFunction: 'Add Function',
                chooseColor: 'Choose Color',
                deviceSettings: 'Advanced Device Settings',
                options: 'More Options',
                moveTop: 'Move to Top',
                moveBottom: 'Move to Bottom',
                disable: 'Disable',
                pin: 'Pin to Top',
                unpin: 'Unpin',
                profileApply: 'Apply Profile to fans',
                tags: 'Manage Tags',
            },
        },
        plugins: {
            plugins: 'Plugins',
            notFound: 'Plugin not found',
            type: 'Type',
            address: 'Address',
            privileges: 'Privileges',
            url: 'URL',
            start: 'Start',
            stop: 'Stop',
            restart: 'Restart',
            started: 'Plugin started',
            stopped: 'Plugin stopped',
            restarted: 'Plugin restarted',
            startFailed: 'Failed to start plugin',
            stopFailed: 'Failed to stop plugin',
            restartFailed: 'Failed to restart plugin',
            overview: 'Plugins Overview',
            gettingStarted:
                'Plugins extend CoolerControl with additional device support, integrations, and automation. They can provide new device sensors and controls, connect to external services, or add custom UI pages.',
            docsLink: 'Plugin Documentation',
            restartNote:
                'If you have recently added a new plugin and it does not appear here, restart the CoolerControl daemon.',
            containerNote:
                'When running CoolerControl in a container, plugins must be placed in the persisted virtual shared folder so they survive container restarts.',
            installedPlugins: 'Installed Plugins',
            noPlugins: 'No plugins installed',
            info: 'Info',
            description: 'Description',
            enable: 'Enable',
            disable: 'Disable',
            disabled: 'Disabled',
            pluginDisabled: 'Plugin disabled.',
            pluginEnabled: 'Plugin enabled.',
            pluginDisabledRestart: 'Plugin disabled. Restart the daemon to apply.',
            pluginEnabledRestart: 'Plugin enabled. Restart the daemon to apply.',
            disableFailed: 'Failed to disable plugin',
            enableFailed: 'Failed to enable plugin',
            serviceLogs: 'Service Logs',
            commandCopied: 'Command copied to clipboard',
        },
        add: {
            dashboard: 'Dashboard',
            mode: 'Mode',
            profile: 'Profile',
            function: 'Function',
            alert: 'Alert',
            customSensor: 'Custom Sensor',
        },
    },
    views: {
        daemon: {
            title: 'Daemon',
            daemonErrors: 'Daemon Errors',
            daemonErrorsDetail: 'The daemon has reported errors. Check the logs for details.',
            daemonDisconnected: 'Daemon Disconnected',
            daemonDisconnectedDetail:
                'Unable to connect to the daemon. Please check if the daemon is running.',
            connectionRestored: 'Connection Restored',
            connectionRestoredMessage: 'Connection to the daemon has been restored.',
            thinkpadFanControl: 'ThinkPad Fan Control',
            pollRate: 'Polling Rate',
            applySettingAndRestart: 'Apply Setting and Restart',
            changeSetting:
                'Changing this setting requires a daemon and UI restart. Are you sure want to do this now?',
            status: {
                ok: 'Ok',
                hasWarnings: 'Has Warnings',
                hasErrors: 'Has Errors',
            },
        },
        devices: {
            detectionIssues: 'Detection Issues? See the',
            hardwareSupportDocs: 'Hardware Support Documentation',
            selectDevices:
                'Select devices and sensors to disable or enable.\nDisabling unused devices and sensors is highly\nrecommended.',
            devicesAndSensors: 'Devices and Sensors',
            apply: 'Apply',
            applySettingsAndReload: 'Apply settings and reload',
            triggersAutoRestart: 'Triggers auto daemon restart',
            restartPrompt:
                'Toggling devices or sensors requires a daemon and UI restart. Are you sure want to do this now?',
            enableDevices: 'Enable Devices',
        },
        speed: {
            automatic: 'Automatic',
            manual: 'Manual',
            unsavedChanges: 'Unsaved Changes',
            unsavedChangesMessage: 'There are unsaved changes made to this control channel.',
            manualDuty: 'Manual Duty',
            profileToApply: 'Profile to apply',
            controlModeAutomaticTooltip: 'Apply a fan Profile to control this channel',
            controlModeManualTooltip: 'Set a fixed duty percentage manually',
            controlModeUnmanagedTooltip:
                "Stop managing this channel, letting the device's hardware or driver decide",
            driverNoSupportControl:
                "Read-only channel. The current driver does not support setting this channel's speed.",
            amdOverdriveNotEnabled:
                "AMD GPU overdrive is not enabled. Enable it in this device's Advanced Settings (requires reboot).",
            controlOrView: 'Control or View',
            applySetting: 'Apply Setting',
            defaultProfileInfo:
                "Selecting Unmanaged tells CoolerControl to stop controlling this fan<br/>and hand it back to the device's driver.<br/><br/><b>Warning:</b> Many drivers do <i>not</i> have automatic fan control.<br/>On those devices, the fan will stay at its last set speed.",
        },
        customSensors: {
            newSensor: 'New Sensor',
            sensorType: 'Sensor Type',
            type: 'Type',
            mixFunction: 'Mix Function',
            howCalculateValue: 'How to calculate the resulting sensor value',
            tempFileLocation: 'Temp File Location',
            tempFile: 'Temperature File',
            filePathTooltip:
                'Enter the absolute path to the temperature file to use for this sensor.\nThe file must use the sysfs data format standard:\nA fixed point number in millidegrees Celsius.\ne.g. 80000 for 80°C.\nThe file is verified upon submission.',
            browse: 'Browse',
            browseCustomSensorFile: 'Browse for a custom sensor file',
            tempSources: 'Temp Sources',
            tempSource: 'Temp Source',
            tempSourcesTooltip:
                'Temperature sources to be used in the mix function<br/><i>Note: Only direct parent-child relationships are allowed<br/>when combining multiple Custom Sensors.<br/>Use Mix Profiles for more complex setups.</i>',
            offset: 'Offset Amount',
            offsetTooltip:
                'Enter the negative or positive offset amount to<br/>apply to the source sensor.<br/><i>Note: The final value will is limited to<br/>normal temperature ranges.</i>',
            timeWindow: 'Smoothing Window',
            timeWindowTooltip:
                'How many seconds of recent samples to smooth together.<br/><i>Note: Must be between 1 and 300 seconds.</i>',
            helpText: {
                mix: 'Combines multiple temperature sources via the chosen function (Min/Max/Avg/Delta/WeightedAvg). Use to drive fans from the hottest of several sensors, or to balance between zones.',
                file: 'Reads temperature from a file path. Use for sensors not auto-detected by CoolerControl.',
                offset: 'Adds or subtracts a fixed value from a temperature source. Use to calibrate a known sensor inaccuracy.',
                timeAverage:
                    'Arithmetic mean over a fixed time window. Output is bounded by the input range, never overshoots. For fans that should ignore brief temperature spikes.',
                exponentialMovingAvg:
                    'Weighted average favoring recent readings. Smoother than Time Average for the same window, but takes roughly 3x the window length to fully follow a sustained change. For fans that should track real trends without jitter.',
            },
            tempWeights: 'Temp Weights',
            tempWeightsTooltip: 'The individual weight of each selected temperature source.',
            tempName: 'Temp Name',
            weight: 'Weight',
            saveSensor: 'Save Sensor',
            saveCustomSensor: 'Save Custom Sensor',
            unsavedChanges: 'There are unsaved changes made to this Custom Sensor.',
            unsavedChangesHeader: 'Unsaved Changes',
            stay: 'Stay',
            discard: 'Discard',
            selectCustomSensorFile: 'Select Custom Sensor File',
            deleteCustomSensor: 'Delete Custom Sensor',
            deleteCustomSensorConfirm:
                'Are you sure you want to delete the custom sensor: "{name}"?',
        },
        dashboard: {
            timeRange: 'Time Range',
            minutes: 'min',
            chartType: 'Chart Type',
            dataType: 'Data Type',
            filterSensors: 'Filter Sensors',
            showControls: 'Show Controls',
            mouseActions:
                'Dashboard Mouse actions:\n- Highlight selection to zoom.\n- Scroll to zoom.\n- Right-click to pan when zoomed.\n- Double-click to reset and resume updating.\n- Ctrl+click or middle-click to show all sensors in tooltip.',
            fullPage: 'Full Page',
            filterTags: 'Filter Tags',
            filterByTag: 'Filter by Tag',
            filterBySensor: 'Filter by Sensor',
            search: 'Search',
            filterTypes: 'Filter Types',
            filterByDataType: 'Filter by Data Type',
            selectChartType: 'Select a Chart Type',
            exitFullPage: 'Exit Full Page',
            controls: 'Controls',
            sensorValues: 'Sensor Values',
            selected: 'Selected',
            clear: 'Clear',
            deleteDashboard: 'Delete Dashboard',
            deleteDashboardConfirm: 'Are you sure you want to delete the dashboard: "{name}"?',
            dashboardDeleted: 'Dashboard Deleted',
            setAsHome: 'Set as Home',
            duplicateDashboard: 'Duplicate Dashboard',
        },
        appInfo: {
            title: 'Info & Tools',
            noWarranty: 'This program comes with absolutely no warranty.',
            changeStartupPage: 'Change the startup page in Settings',
            daemonStatus: 'Daemon Status',
            acknowledgeIssues: 'Acknowledge Issues',
            status: 'Status',
            processStatus: 'Process Status',
            host: 'Host',
            uptime: 'Uptime',
            version: 'Version',
            processId: 'Process ID',
            memoryUsage: 'Memory Usage',
            liquidctl: 'Liquidctl',
            connected: 'Connected',
            disconnected: 'Disconnected',
            helpfulLinks: 'Helpful Links',
            uiTour: 'UI Tour',
            uiTourDesc: 'Take a guided tour of the application',
            gettingStarted: 'Getting Started',
            helpSettingUp: 'Help setting up fan control',
            gettingStartedGraphProfile: 'Graph Profile',
            gettingStartedControlsPage: 'Controls Page',
            gettingStartedStep1: 'Create a {profile} in Fan Profiles and shape your fan curve.',
            gettingStartedStep2:
                "Assign it on the {controls} (or the fan's own page). Profiles are not auto-applied.",
            gettingStartedStep3: 'Reuse the same Profile on as many fans as you want.',
            hardwareSupport: 'Hardware Support',
            hardwareSupportDesc: 'Supported devices and driver installation',
            gitRepository: 'Git Repository',
            gitRepositoryDesc: 'Submit Issues or Feature Requests',
            discord: 'Discord',
            discordDesc: 'Join our Discord community',
            whatsNew: "What's New",
            whatsNewDesc: 'See the latest release notes',
            logsAndDiagnostics: 'Logs and Diagnostics',
            downloadCurrentLog: 'Download Current Log',
            stressTest: 'Thermal Stress Tests',
            stressTestTooltip:
                'Generate sustained thermal load to validate<br>fan curves and cooling profiles.<br>Results may vary depending on hardware.<br>Install stress-ng for additional backends.',
            cpuStress: 'CPU Stress',
            gpuStress: 'GPU Stress',
            gpuStressTooltip:
                'May require Vulkan or OpenGL ES drivers<br>when using the built-in backend.',
            ramStress: 'RAM Stress',
            driveStress: 'Drive Stress',
            driveStressTooltip:
                'I/O stress on a block device to generate<br>heat on drive controllers.<br>stress-ng requires the device to be mounted.',
            builtInBackend: 'built-in',
            stressNgBackend: 'stress-ng',
            backendTooltip:
                'Choose the stress-test backend.<br>Built-in works without external dependencies.<br>stress-ng (when installed) provides additional stressor variants.',
            selectDrive: 'Select drive',
            threadCount: 'Threads',
            duration: 'Duration (s)',

            start: 'Start',
            stop: 'Stop',
            stopAll: 'Stop All',
            active: 'Active',
            inactive: 'Inactive',
            allCores: 'All Cores',
            psuWarningHeader: 'High Power Warning',
            psuWarningMessage:
                'Running both CPU and GPU stress tests simultaneously will put significant load on your PSU. If overclocking or using a low wattage PSU, system instability can occur. Are you sure you want to proceed?',
            proceed: 'Proceed',
        },
        alerts: {
            createAlert: 'Create Alert',
            editAlert: 'Edit Alert',
            deleteAlert: 'Delete Alert',
            noAlerts: 'No alerts configured',
            alertsOverview: 'Alerts Overview',
            alertLogs: 'Alert Logs',
            alertTriggered: 'Alert Triggered',
            alertRecovered: 'Alert Recovered',
            deleteAlertConfirm: 'Are you sure you want to delete: "{name}"?',
            saveAlert: 'Save Alert',
            channelSource: 'Channel Source for Alert',
            channelSourceTooltip: 'The Channel source to be used for the Alert',
            triggerConditions: 'Trigger Conditions',
            maxValueTooltip: 'Values above this will trigger the alert.',
            minValueTooltip: 'Values below this will trigger the alert.',
            warmupDurationTooltip:
                'How long a condition must be active before the alert is considered active.\nIt is checked only at regular poll-rate intervals\nand so may not be exactly this length.',
            greaterThan: 'greater than',
            lessThan: 'less than',
            newAlert: 'New Alert',
            warmupGreaterThan: 'condition triggered longer than',
            unsavedChanges: 'There are unsaved changes made to this Alert.',
            unsavedChangesHeader: 'Unsaved Changes',
            createFailAlert: 'Fail Alert',
            desktopNotify: 'desktop notification',
            desktopNotifyTooltip:
                'Enable desktop notifications when the alert is triggered.\n(If supported)',
            desktopNotifyRecovery: 'desktop notification on recovery',
            desktopNotifyRecoveryTooltip:
                'Enable desktop notifications when the alert recovers.\n(If supported)',
            desktopNotifyAudio: 'desktop notification audio',
            desktopNotifyAudioTooltip:
                'Enable desktop notification audio when the alert is triggered.\n(If supported)',
            shutdownOnActivation: 'shutdown on activation',
            shutdownOnActivationTooltip:
                'Enable system shutdown when the alert is triggered.\nSystem shutdown will commence one minute after the alert is triggered\nand will be cancelled if the alert recovers.',
        },
        profiles: {
            createProfile: 'Create Profile',
            editProfile: 'Edit Profile',
            deleteProfile: 'Delete Profile',
            noProfiles: 'No profiles configured',
            profileType: 'Profile Type',
            fixedDuty: 'Fixed Fan Speed',
            selectedPointDuty: 'Selected Point Duty',
            selectedPointTemp: 'Selected Point Temperature',
            tempSource: 'Temperature Source',
            memberProfiles: 'Member Profiles',
            mixFunction: 'Mix Function',
            applyMixFunction: 'Apply mix function to selected profiles',
            profilesToMix: 'Profiles to mix',
            saveProfile: 'Save Profile',
            function: 'Function',
            functionToApply: 'Function to apply',
            graphProfileMouseActions:
                'Graph Profile Mouse actions:\n- Scroll to zoom.\n- Left-click on line to add point.\n- Right-click on point to remove.\n- Drag point to move.',
            unsavedChanges: 'There are unsaved changes made to this Profile.',
            unsavedChangesHeader: 'Unsaved Changes',
            appliedFunction: 'Applied Function',
            newProfile: 'New Profile',
            tooltip: {
                profileType:
                    "Profile Types:<br/>- Default: Unmanaged, hands control back to the device's driver<br/>- Fixed: Sets a constant speed<br/>- Graph: Customizable fan curve<br/>- Mix: Combines multiple profiles<br/>- Overlay: offset the output of an existing profile",
            },
            profileDeleted: 'Profile Deleted',
            profileDuplicated: 'Profile Duplicated',
            deleteProfileConfirm: 'Are you sure you want to delete: "{name}"?',
            deleteProfileWithChannelsConfirm:
                '"{name}" is currently being used by: {channels}.\nDeleting this Profile will reset those channels\' settings.\nAre you sure you want to delete "{name}"?',
            profileUpdated: 'Profile successfully updated',
            profileUpdateError: 'There was an error attempting to update this Profile',
            tempSourceRequired: 'A Temp Source is required for a Graph Profile.',
            memberProfilesRequired: 'At least 2 Member Profiles are required for a Mix Profile.',
            minProfileTemp: 'Minimum Profile Temperature',
            maxProfileTemp: 'Maximum Profile Temperature',
            staticOffset: 'Static Offset',
            offsetType: 'Offset Type',
            offsetTypeStatic: 'Static Offset',
            offsetTypeGraph: 'Graph Offset',
            baseProfile: 'Base Profile',
            baseProfileRequired: 'A Base Profile is required for an Overlay Profile.',
            selectedPointOutputDuty: 'Selected Point Profile Output Duty',
            selectedPointOffset: 'Selected Point Offset Duty',
            profileOutputDuty: 'Profile Output Duty',
            offsetDuty: 'Offset Duty',
            points: 'Points',
            moveTable: 'Move to other corner',
            addPointAfter: 'Add point after',
            removePoint: 'Remove point',
            curvePointLimitBadge: 'max {n} pts',
            curveLimitedByAmdGpu: 'Curve limited to {n} points by AMD GPU hardware fan curve.',
            curveLimitedByFirmware: 'Curve limited to {n} points by device firmware fan curve.',
        },
        controls: {
            viewType: 'View Type',
            controlOrView: 'Control or View',
            title: 'System Controls',
            noControllableChannels: 'No controllable channels found.',
            noControlChain: 'No control chain found for this channel.',
            controlFlow: 'Control Flow',
            backToOverview: 'Back to Controls Overview',
            viewControlFlow: 'View control flow',
            switchProfile: 'Switch Profile',
            switchTempSource: 'Switch Temperature Source',
            switchFunction: 'Switch Function',
            switchMembers: 'Switch Member Profiles',
            switchBaseProfile: 'Switch Base Profile',
            adjustFixedSpeed: 'Adjust Fixed Speed',
            editSources: 'Edit Sources',
        },
        modes: {
            createMode: 'Create Mode',
            editMode: 'Edit Mode',
            deleteMode: 'Delete Mode',
            noModes: 'No modes configured',
            deleteModeConfirm: 'Are you sure you want to delete the Mode: "{name}"?',
            updateModeConfirm:
                'Are you sure you want to overwrite "{name}" with the current configuration?',
            duplicateMode: 'Duplicate Mode',
        },
        functions: {
            createFunction: 'Create Function',
            editFunction: 'Edit Function',
            deleteFunction: 'Delete Function',
            noFunctions: 'No functions configured',
            saveFunction: 'Save Function',
            functionType: 'Function Type',
            functionTypeTooltip:
                'Function types:<br/>' +
                '- <b>Identity</b>: Applies step size limits but otherwise passes the profile value unchanged.<br/>' +
                '- <b>Standard</b>: Applies step size limits and hysteresis settings for precise control over fan response timing and stability.<br/>' +
                '- <b>Exponential Moving Average</b>: Smooths temperature fluctuations using a weighted average. Simpler but less precise than Standard.',
            stepSizeTitle: 'Step Size',
            fixedStepSize: 'Fixed',
            fixedStepSizeTooltip:
                'Enabled uses a single fixed step size for all changes.\nDisabled allows setting a minimum and maximum step size range.',
            asymmetric: 'Asymmetric',
            asymmetricTooltip:
                'When enabled, separate step size limits can be configured for speed increases and decreases.\nUseful when you want fans to ramp up quickly but slow down gradually, or vice versa.',
            stepSizeMin: 'Minimum',
            stepSizeMinTooltip:
                'The smallest fan speed change that will be applied.\nChanges smaller than this are ignored to reduce unnecessary adjustments.',
            stepSizeMax: 'Maximum',
            stepSizeMaxTooltip:
                'The largest fan speed change allowed per update.\nLarger changes are limited to this value for smoother transitions.',
            stepSizeFixed: 'Size',
            stepSizeFixedTooltip:
                'A single step size applied to all fan speed changes.\nAll adjustments will be limited to exactly this value.',
            stepSizeFixedIncreasing: 'Increasing',
            stepSizeFixedIncreasingTooltip:
                'Fixed step size when fan speed is increasing.\nAll upward adjustments will be limited to exactly this value.',
            stepSizeFixedDecreasing: 'Decreasing',
            stepSizeFixedDecreasingTooltip:
                'Fixed step size when fan speed is decreasing.\nAll downward adjustments will be limited to exactly this value.',
            stepSizeMinIncreasing: 'Minimum Increasing',
            stepSizeMinIncreasingTooltip:
                'Minimum step size when fan speed is increasing.\nSmaller computed changes are ignored to reduce unnecessary adjustments.',
            stepSizeMaxIncreasing: 'Maximum Increasing',
            stepSizeMaxIncreasingTooltip:
                'Maximum step size when fan speed is increasing.\nLimits how quickly fans can ramp up per update.',
            stepSizeMinDecreasing: 'Minimum Decreasing',
            stepSizeMinDecreasingTooltip:
                'Minimum step size when fan speed is decreasing.\nSmaller computed changes are ignored to reduce unnecessary adjustments.',
            stepSizeMaxDecreasing: 'Maximum Decreasing',
            stepSizeMaxDecreasingTooltip:
                'Maximum step size when fan speed is decreasing.\nLimits how quickly fans can slow down per update.',
            windowSize: 'Window Size',
            windowSizeTooltip:
                'Window temperature sample size used in the exponential moving average calculation.\nSmaller values = faster response, more reactive to temperature spikes.\nLarger values = slower response, smoother fan speed transitions.\nTip: Use a Standard Function for precise control over response timing.',
            emaCustomSensorAvailableNote:
                'EMA is also available as a Custom Sensor type, which lets you graph the smoothed temperature directly.',
            emaDeprecatedWarning:
                'The EMA Function type is deprecated. Please switch to the EMA Custom Sensor type.',
            hysteresis: 'Advanced Hysteresis',
            hysteresisThreshold: 'Threshold',
            hysteresisThresholdTooltip:
                'Minimum temperature change (°C) required before adjusting fan speed.\nHelps prevent rapid fan speed fluctuations from small temperature variations.',
            hysteresisDelay: 'Delay',
            hysteresisDelayTooltip:
                'Response delay (seconds) before applying fan speed changes.\nTemporary temperature spikes within this delay are ignored, smoothing out fluctuations.',
            onlyDownward: 'Only Downward',
            onlyDownwardTooltip: 'Only apply hysteresis settings when temperature is decreasing.',
            general: 'General',
            stepOverrides: 'Step Overrides',
            thresholdHopping: 'Threshold Hopping',
            thresholdHoppingTooltip:
                'When fan speed remains unchanged for 30+ seconds, step size and hysteresis limits are temporarily bypassed.\nThis ensures that fans eventually reach their target speed, even with conservative threshold settings.',
            bypassMinAtExtremes: 'Always apply 0% / 100%',
            bypassMinAtExtremesTooltip:
                'When enabled, target duties of 0% or 100% are applied even when the change is smaller than the minimum step size.\nUseful for ensuring fans fully stop or reach max RPM. Disabled by default.',
            unsavedChanges: 'There are unsaved changes made to this Function.',
            unsavedChangesHeader: 'Unsaved Changes',
            functionError: 'Error trying to update this function',
            newFunction: 'New Function',
            functionDeleted: 'Function Deleted',
            functionDuplicated: 'Function Duplicated',
            deleteFunctionConfirm: 'Are you sure you want to delete "{name}"?',
            deleteFunctionWithProfilesConfirm:
                '"{name}" is currently being used by the Profiles: {profiles}.\nDeleting this Function will reset those Profiles\' Functions.\nAre you sure you want to delete "{name}"?',
            functionUpdated: 'Function Updated',
            functionUpdateError: 'There was an error attempting to update this Function',
        },
        error: {
            accessDenied: 'Access Denied',
            accessDeniedMessage: 'Authentication failed. Please check your password and try again.',
            connectionError: 'CoolerControl Connection Error',
            connectionToast: 'Unable to connect to daemon',
            connectionToastDetail:
                'Unable to connect to the daemon. Please ensure the service is running and try reconnecting.',
            connectionRetryFailure: 'Connection failed - retry failed',
            connectionRetryDetail: 'Could not connect to daemon after multiple attempts.',
            errorLoadingGraph: 'Error loading graph',
            highCpuUsageWarning: 'High CPU usage detected',
            highCpuUsageDetail:
                'The current CPU usage is high.\nTo reduce system impact, consider:\n1. Reducing the number of displayed charts\n2. Reducing the number of monitored sensors\n3. Increasing the polling interval',
            pageNotFound: 'Page Not Found',
            returnToDashboard: 'Return to Dashboard',
            connectionErrorMessage: 'Could not connect to the CoolerControl Daemon.',
            serviceRunningMessage: 'Please check if the daemon service is running.',
            checkProjectPage: 'For help setting up the daemon, see the',
            projectPage: 'project page',
            helpfulCommands: 'Helpful commands:',
            nonStandardAddress:
                'If you have a non-standard daemon address, you can specify it below:',
            daemonAddressDesktop: 'Daemon Address (Desktop App)',
            daemonAddressWeb: 'Daemon Address (Web UI)',
            addressTooltip: 'The IP address or domain name to establish a connection with.',
            portTooltip: 'The port to establish a connection with.',
            sslTooltip: 'Whether to connect to the daemon using SSL/TLS.',
            saveTooltip: 'Save settings and reload the UI',
            resetTooltip: 'Reset to default settings',
        },
        singleDashboard: {
            minutes: 'min',
            chartMouseActions:
                'Dashboard Mouse actions:\n- Highlight to zoom.\n- Scroll to zoom.\n- Right-click to pan when zoomed.\n- Double-click to reset and resume updating.',
            timeRange: 'Time Range',
            chartType: 'Chart Type',
        },
        mode: {
            activateMode: 'Activate Mode',
            currentlyActive: 'Currently Active',
            modeHint:
                'Note: Modes do not include Profile or Function settings, only channel configurations.',
        },
        lighting: {
            saveLightingSettings: 'Save Lighting Settings',
            lightingMode: 'Lighting Mode',
            speed: 'Speed',
            direction: 'Direction',
            forward: 'Forward',
            backward: 'Backward',
            numberOfColors: 'Number of Colors',
            numberOfColorsTooltip: 'Number of Colors to use for the chosen Lighting Mode.',
        },
        lcd: {
            saveLcdSettings: 'Save LCD Settings',
            lcdMode: 'LCD Mode',
            brightness: 'Brightness',
            brightnessPercent: 'Brightness Percent',
            orientation: 'Orientation',
            orientationDegrees: 'Orientation in degrees',
            chooseImage: 'Choose Image',
            dragAndDrop: 'Drag and drop files to here.',
            tempSource: 'Temp Source',
            tempSourceTooltip: 'Temperature source to use in LCD display.',
            imagesPath: 'Images Path',
            imagesPathTooltip:
                'Enter the absolute path to the directory containing images.\nThe directory must contain at least one image file, and they\nmay be static images or gifs. The Carousel will cycle\nthrough them with the selected delay. All files are processed\nupon submission to ensure maximum compatibility.',
            browse: 'Browse',
            browseTooltip: 'Browse for a image directory',
            delayInterval: 'Delay Interval',
            delayIntervalTooltip:
                'Minimum number of seconds of delay between image changes.\nNote that the actual delay may be longer due to the daemon polling rate.',
            processing: 'Processing...',
            applying: 'Applying...',
            unsavedChanges: 'There are unsaved changes made to these LCD Settings.',
            unsavedChangesHeader: 'Unsaved Changes',
            imageTooLarge: 'Image is too large. Please choose a smaller one.',
            notImageType: 'Image does not register as an image type',
        },
        shortcuts: {
            shortcuts: 'Keyboard Shortcuts',
            ctrl: 'Ctrl',
            alt: 'Alt',
            left: 'Left',
            right: 'Right',
            comma: ',',
            h: 'h',
            a: 'a',
            c: 'c',
            i: 'i',
            slash: '/',
            one: '1',
            two: '2',
            three: '3',
            four: '4',
            f11: 'F11',
            viewShortcuts: 'Keyboard Shortcuts',
            home: 'Home Page',
            settings: 'Settings',
            info: 'Application Info',
            dashboardOne: 'Dashboard One',
            dashboardTwo: 'Dashboard Two',
            dashboardThree: 'Dashboard Three',
            dashboardFour: 'Dashboard Four',
            alerts: 'Alerts',
            controls: 'Controls',
            sideMenuCollapse: 'Collapse Side Menu',
            sideMenuExpand: 'Expand Side Menu',
            fullScreen: 'Full Screen',
        },
    },
    components: {
        confirmation: {
            title: 'Confirmation',
            message: 'Are you sure?',
        },
        aseTek690: {
            sameDeviceID:
                'The legacy NZXT Krakens and the EVGA CLC happen to have the same device ID and CoolerControl can not determine which device is connected. This is required for proper device communication.',
            restartRequired:
                'A restart of the CoolerControl systemd services may be required and will be handled automatically if needed.',
            deviceModel: 'Is Liquidctl Device one of the following models?',
            modelList: 'NZXT Kraken X40, X60, X31, X41, X51 or X61',
            acceptLabel: "Yes, It's a legacy Kraken Device",
            rejectLabel: "No, It's a EVGA CLC Device",
        },
        password: {
            title: 'Enter Your Password',
            newPasswordTitle: 'Enter A New Password',
            invalidPassword: 'Invalid Password',
            forgotPassword: 'Forgot password?',
            forgotPasswordHelpIntro:
                'Run this command in a terminal as root, then click Reload UI:',
            forgotPasswordCopyCommand: 'Copy command',
            forgotPasswordCommandCopied: 'Command copied to clipboard',
            forgotPasswordReloadButton: 'Reload UI',
            continueButton: 'Continue',
            backButton: 'Back',
            passwordMismatch: 'Passwords do not match',
        },
        notFound: {
            message: 'Just like the perfect Linux 🐧 distro,\nthis page does not exist.',
        },
        helloWorld: {
            message: "You've successfully created a project with Vite + Vue 3. What's next?",
        },
        dashboardInfo: {
            description:
                "Dashboards enable you to view your system's sensor data according to your preferences. You can choose between time-based or table-based charts and adjust the filters and settings for each chart to focus on the specific data you want to view. Additionally, you can create multiple dashboards customized to suit your needs.",
        },
        modeInfo: {
            description:
                "Modes enable you to save device channel settings for quick and easy application. For example, you can create a 'Gaming' Mode and a 'Silent' Mode, allowing you to easily switch between them.",
            note: 'Please note that creating different Fan Profiles may be necessary for each Mode, as Modes only include channel configurations and do not encompass internal Profile or Function settings.',
        },
        alertInfo: {
            description:
                'Alerts are used to notify you when specific conditions occur. They can monitor temperatures and fan speeds to ensure your system is running properly. Alerts are configured for specific sensor value ranges and send notifications when values exceed or return to acceptable threshold ranges.',
        },
        customSensorInfo: {
            title: 'Custom Sensor Overview',
            description:
                'Custom sensors allow you to combine existing sensors in various ways, enhancing your control and efficiency over system cooling. Additionally, they support file-based data, enabling you to script external sensor inputs for greater flexibility.',
            note: 'Note: You can use Mix Profiles to combine multiple Custom Sensor outputs.',
        },
        functionInfo: {
            title: 'Function Overview',
            description:
                'Functions are configurable algorithms applied to profile outputs. They enable you to manage when fan speed changes occur, adjust hysteresis settings, and use moving averages for dynamic temperatures.',
            identityFunction:
                "The Identity function is the simplest option as it doesn't modify the computed profile output; it only allows you to set minimum and maximum speed change ranges. This is particularly beneficial for minimizing constant fan speed fluctuations.",
        },
        profileInfo: {
            title: 'Profile Overview',
            description:
                'Profiles define customizable settings for controlling fan speeds, with the same profile being usable for multiple fans. Types include:',
            type: {
                fixed: 'Fixed Speed',
                fanCurve: 'Fan Curve/Graph',
                mix: 'Mix Profile',
                default: 'Default Device Settings',
            },
            additionalInfo:
                'Profiles are the foundation for controlling fan speeds and can be further enhanced by applying more advanced algorithm functions.',
        },
        deviceInfo: {
            details: 'Device Details',
            systemName: 'System Name',
            deviceType: 'Device Type',
            deviceUID: 'Device UID',
            firmwareVersion: 'Firmware Version',
            model: 'Model',
            driverName: 'Driver Name',
            driverType: 'Driver Type',
            driverVersion: 'Driver Version',
            locations: 'Locations',
        },
        onboarding: {
            welcome: 'Welcome to CoolerControl!',
            gettingStartedIntro:
                'Pick a tour to get oriented. The Quick Tour covers the essentials in a few steps. The Thorough Tour walks through every menu and button.',
            startTourAgain: 'You can start this tour again at any time from the Info & Tools page.',
            quickTour: 'Quick Tour',
            thoroughTour: 'Thorough Tour',
            maybeLater: 'Maybe Later',
            openGettingStarted: 'Open Getting Started Docs',
            finishLater: "I'll Do It Myself",
            appInfo: 'Info & Tools',
            appInfoDesc:
                'View app info, daemon status, logs, helpful links, and stress test tools. A badge on the logo alerts you to any issues.',
            controls: 'Controls',
            controlsDesc:
                'Adjust fan speeds, apply Profiles, and manage every detected channel from one place.',
            profiles: 'Profiles',
            profilesDesc:
                'Profiles define how a fan responds to temperature changes. Graph Profiles let you draw custom fan curves and can be reused across multiple devices.',
            functions: 'Functions',
            functionsDesc:
                'Functions are applied to Profiles to smooth fan speed transitions and reduce noise.',
            systemMenu: 'System Menu',
            systemMenuDesc:
                "The main menu lists this system's devices and sensors. Each section can be expanded to view its channels and assigned controls.",
            dashboards: 'Dashboards',
            dashboardsDesc:
                'Dashboards let you create custom views with charts and graphs to monitor temperatures, fan speeds, and other sensor data in real time.',
            modes: 'Modes',
            modesDesc:
                'Modes are saved collections of your settings. Switch between configurations like Silent and Performance with a single click.',
            alerts: 'Alerts',
            alertsDesc:
                'Alerts notify you when sensor values exceed the thresholds you choose, so you can react before issues become problems.',
            customSensors: 'Custom Sensors',
            customSensorsDesc:
                'Custom Sensors combine existing sensor data in different ways, or run your own scripted output as a temperature source.',
            quickAdd: 'Quick Add',
            quickAddDesc: 'Quickly create new Dashboards, Profiles, Functions, and more.',
            dashboardQuick: 'Dashboard Quick Menu',
            dashboardQuickDesc: 'Jump to any dashboard, even when the main menu is collapsed.',
            modesQuick: 'Modes Quick Menu',
            modesQuickDesc: 'Switch between your saved Modes from anywhere in the app.',
            alertsQuick: 'Alerts Overview',
            alertsQuickDesc:
                'View the current status of every alert and inspect their recent activity.',
            pluginsQuick: 'Plugins Overview',
            pluginsQuickDesc:
                'Browse installed plugins and jump to any of them from anywhere in the app.',
            settings: 'Settings',
            settingsDesc: 'Configure UI preferences, daemon options, and system behavior.',
            access: 'Access',
            accessDesc: 'Manage your password and confirm your current access level.',
            restartMenu: 'Restart Menu',
            restartMenuDesc: 'Reload the UI or restart the system daemon when needed.',
            collapseMenu: 'Collapse Menu',
            collapseMenuDesc:
                'Expand or collapse the main menu to give the rest of the app more room.',
            thatsIt: "That's it!",
            startNow:
                "You're all set. Open the Getting Started docs to learn more, or jump in and start configuring your devices.",
        },
        axisOptions: {
            title: 'Axis Options',
            autoScale: 'AutoScale',
            max: 'Max',
            min: 'Min',
            dutyTemperature: 'Duty / Temperature',
            rpmMhz: 'rpm / MHz',
            krpmGhz: 'krpm / GHz',
            watts: 'watts',
        },
        sensorTable: {
            device: 'Device',
            channel: 'Channel',
            current: 'Current',
            min: 'Min',
            max: 'Max',
            average: 'Average',
        },
        modeTable: {
            setting: 'Setting',
        },
        menuTagAssign: {
            title: 'Assign Tags',
            noTags: 'No tags yet.',
            newTag: 'Create New Tag',
            tagName: 'Tag name',
            editTag: 'Edit tag',
            deleteTag: 'Delete tag',
        },
        wizards: {
            fanControl: {
                fanControlWizard: 'Fan Control Wizard',
                editCurrentProfile: 'Edit Profile',
                editCurrentFunction: 'Edit Function',
                currentSettings: 'Current Settings',
                manualSpeed: 'Manual Speed',
                createNewProfile: 'New Profile',
                existingProfile: 'Choose Profile',
                resetSettings: 'Reset to Unmanaged',
                chooseProfileNameType: 'Choose a Profile Name and Type',
                newDefaultProfile: 'New Default Profile',
                profileCreatedApplied: 'Profile Created and Applied',
                willCreatedAndAppliedTo: 'will be created and applied to',
                newFixedProfile: 'New Fixed Profile',
                withSettings: 'with the following settings',
                selectSpeed: 'Select your speed',
                newMixProfile: 'New Mix Profile',
                newGraphProfile: 'New Graph Profile',
                newOverlayProfile: 'New Overlay Profile',
                functionFor: 'Choose a Function to be applied to',
                functionDescription:
                    'Functions fine-tune how your Profile is applied, such as response time and minimum duty.',
                createNewFunction: 'New Function',
                existingFunction: 'Choose Function',
                defaultFunction: 'Default Function',
                chooseFunctionNameType: 'Choose a Function Name and Type',
                newFunctionName: 'Function for {profileName}',
                summary: 'Summary',
                aNewProfile: 'A new Profile',
                andFunction: 'and Function',
            },
            profile: {
                willCreated: 'will be created.',
            },
            profileApply: {
                applyProfile: 'Apply Profile',
                channelsApply: 'Channels to Apply Profile to',
                selectChannels: 'Select Channels',
                channelsTooltip: 'Select one or more channels to apply this Profile to.',
                selectByTag: 'Select by Tag',
                selectByChannel: 'Select by Channel',
                tagFanCount: '{count} channel | {count} channels',
                noTags: 'No tags configured.',
            },
            functionApply: {
                applyFunction: 'Apply Function',
                profilesApply: 'Profiles to Apply Function to',
                selectProfiles: 'Select Profiles',
                profilesTooltip: 'Select one or more Profiles to apply this Function to.',
            },
            customSensor: {
                new: 'New Custom Sensor',
            },
        },
        channelExtensionSettings: {
            title: 'Device Channel Settings',
            firmwareControlledProfile: 'Firmware-controlled Profile',
            firmwareControlledProfileDesc:
                'When enabled, the device firmware manages the fan profile.\nUseful for hardware that does not respond well to frequent software speed changes.\nOnly available for Graph Profiles that use device-internal temperature sensors.\nFunction settings do not apply.',
            saveError: 'Failed to save channel extension settings',
            firmwareControlDisabled:
                'Firmware control is not available with the current settings.\nUse a Graph Profile for this device with a supported internal temperature sensor.',
        },
        deviceExtensionSettings: {
            title: 'Advanced Device Settings',
            directAccess: 'Direct Access',
            directAccessDesc:
                'When enabled, the liquidctl driver will ignore the HWMon kernel driver\nand communicate directly with the device.\nThis can be helpful for devices that have conflicts when using both drivers.',
            useHwmon: 'Use HWMon driver',
            useHwmonDesc:
                'Switches the driver for this device from liquidctl to the HWMon kernel driver.\nThis can improve performance and stability, but may reduce available features.',
            disableDevice: 'Disable liquidctl Device',
            disableInfo:
                'Disabling the liquidctl driver will disable this device. A new HWMon-based device will appear at the bottom of the device menu. You can re-enable the liquidctl device at any time from the settings menu.',
            commandDelay: 'Command Delay',
            commandDelayDesc:
                'Delay in milliseconds between commands sent to this device.\nThis can help with devices that have communication issues\nwhen multiple commands are sent in quick succession.',
            overdrive: 'GPU Overdrive',
            overdriveDesc:
                'AMD RDNA3/4 GPUs require overdrive to be enabled for fan control.\nThis configures the amdgpu.ppfeaturemask kernel parameter\nand requires a system reboot to take effect.',
            overdriveEnable: 'Enable',
            overdriveActive: 'Active',
            overdriveSuccess: 'Overdrive Configured',
            thinkPadFanControl: 'Fan Control',
            thinkPadFanControlDesc:
                'Enables ThinkPad ACPI Fan Control.\nFan control is disabled by default for safety reasons.\nProceed at your own risk.',
            thinkPadFullSpeed: 'Full Speed',
            thinkPadFullSpeedDesc:
                'Enables Full-Speed mode for ThinkPad fans.\nAllows fans to spin to absolute maximum at 100%,\nbut runs fans out of specification with increased wear.',
        },
    },
    auth: {
        enterPassword: 'Enter Your Password',
        setNewPassword: 'Enter A New Password',
        changeDefaultPassword:
            'Please set a password to prevent unauthorized access. This is separate from your system account.',
        loginFailed: 'Login Failed',
        invalidPassword: 'Invalid Password',
        passwordSetFailed: 'Set Password Failed',
        passwordSetSuccessfully: 'New password set successfully',
        logoutSuccessful: 'You have successfully logged out.',
        unauthorizedAction: 'You need to be logged in to complete this action',
        accessTokens: 'Access Tokens',
        tokenLabel: 'Label (e.g. cctv)',
        tokenExpiry: 'Expiry Date (optional)',
        createToken: 'Create Token',
        tokenCreated: 'Token Created',
        tokenCreatedDetail: 'Copy this token now. It will not be shown again.',
        tokenCopied: 'Token copied to clipboard',
        tokenDeleted: 'Token deleted',
        tokenCreateError: 'Failed to create token',
        tokenDeleteError: 'Failed to delete token',
        tokenLoadError: 'Failed to load tokens',
        tokenDeleteConfirm:
            'Are you sure you want to delete this token? Any services using it will lose access.',
        tokenDeleteHeader: 'Delete Token',
        noTokens: 'No access tokens created yet.',
        expires: 'Expires',
        expired: 'Expired',
        active: 'Active',
        never: 'Never',
        lastUsed: 'Last Used',
        neverUsed: 'Never used',
        created: 'Created',
        label: 'Label',
        actions: 'Actions',
        writeAccess: 'Write Access',
        writeAccessTooltip:
            'When enabled, this token can make changes. When disabled, the token can only read data.',
    },
    daemon: {
        status: {
            ok: 'Ok',
            hasWarnings: 'Has Warnings',
            hasErrors: 'Has Errors',
        },
    },
    device_store: {
        unauthorized: {
            summary: 'Session expired',
            detail: 'Your session has expired. Reloading to log in again.',
        },
        login: {
            success: {
                summary: 'Success',
                detail: 'Login successful.',
            },
            failed: {
                summary: 'Login Failed',
                detail: 'Invalid Password',
            },
            rate_limited: {
                summary: 'Login Temporarily Blocked',
            },
        },
        logout: {
            summary: 'Logout',
            detail: 'You have successfully logged out.',
        },
        password: {
            set_success: {
                summary: 'Password',
                detail: 'New password set successfully',
            },
            set_failed: {
                summary: 'Set Password Failed',
            },
        },
        asetek: {
            header: 'Unknown Device Detected',
            success: {
                summary: 'Success',
                detail_legacy: 'Device Model type successfully set. Restart in progress.',
                detail_evga: 'Device Model type successfully set.',
            },
            error: {
                summary: 'Error',
                detail: 'Process interrupted.',
            },
        },
    },
    models: {
        chartType: {
            timeChart: 'Time Chart',
            table: 'Table',
        },
        dataType: {
            temp: 'Temp',
            duty: 'Duty',
            load: 'Load',
            rpm: 'RPM',
            freq: 'Freq',
            watts: 'Watts',
        },
        profile: {
            profileType: {
                default: 'Default',
                fixed: 'Fixed',
                graph: 'Graph',
                mix: 'Mix',
                overlay: 'Overlay',
            },
            functionType: {
                identity: 'Identity',
                standard: 'Standard',
                exponentialMovingAvg: 'Exponential Moving Average',
            },
            mixFunctionType: {
                min: 'Min',
                max: 'Max',
                avg: 'Average',
                diff: 'Difference',
                sum: 'Sum',
            },
        },
        customSensor: {
            sensorType: {
                mix: 'Mix',
                file: 'File',
                offset: 'Offset',
                timeAverage: 'Time Average',
                exponentialMovingAvg: 'Exponential Moving Average',
            },
            mixFunctionType: {
                min: 'Minimum',
                max: 'Maximum',
                delta: 'Delta',
                avg: 'Average',
                weightedAvg: 'Weighted Average',
            },
        },
        themeMode: {
            system: 'System',
            dark: 'Dark',
            light: 'Light',
            highContrastDark: 'High Contrast Dark',
            highContrastLight: 'High Contrast Light',
            custom: 'Custom Theme',
        },
        channelViewType: {
            control: 'Control',
            dashboard: 'Dashboard',
        },
        startupPage: {
            appInfo: 'Info & Tools',
            homeDashboard: 'Home Dashboard',
            controls: 'Controls',
        },
        alertState: {
            active: 'Active',
            inactive: 'Inactive',
            error: 'Error',
        },
        pluginStatus: {
            running: 'Running',
            stopped: 'Stopped',
            unmanaged: 'Unmanaged',
            disabled: 'Disabled',
        },
        deviceType: {
            customSensors: 'Custom Sensors',
            cpu: 'CPU',
            gpu: 'GPU',
            liquidctl: 'Liquidctl',
            hwmon: 'Hwmon',
            servicePlugin: 'Service Plugin',
        },
        driverType: {
            kernel: 'Kernel',
            liquidctl: 'Liquidctl',
            nvml: 'NVML',
            nvidiaCli: 'Nvidia CLI',
            coolercontrol: 'CoolerControl',
            external: 'External',
        },
        lcdModeType: {
            none: 'None',
            liquidctl: 'Liquidctl',
            custom: 'Custom',
        },
        channelType: {
            lcd: 'LCD',
            lighting: 'Lighting',
        },
    },
}
