{
  "errors": {
    "40036": "Default storage policy cannot be deleted.",
    "40037": "Soem file blob(s) are using this policy, please delete those file blobs first.",
    "40038": "{{message}} group(s) are using this policy, please unlink those groups first.",
    "40040": "Cannot perform such action on system group.",
    "40041": "{{message}} users are still in this group, please delete or unlink those users first.",
    "40042": "Cannot change the group of system user group.",
    "40043": "Cannot perform such action on default user.",
    "40046": "Cannot perform such action on master node.",
    "40060": "Slave node cannot send callback request to master, please check master node setting: Basic - Site Information - Site URL, please make sure slave node can access this url. ({{message}})",
    "40061": "Mismatched Cloudreve version. ({{message}})",
    "40086": "The node is being used by the following storage policies: {{message}}.",
    "50008": "Failed to update setting. ({{message}})",
    "50009": "Failed to add CORS policy."
  },
  "nav": {
    "summary": "Summary",
    "settings": "Settings",
    "basicSetting": "Basic",
    "email": "Email",
    "transportation": "Transmission",
    "appearance": "Appearance",
    "image": "Images",
    "captcha": "Captcha",
    "storagePolicy": "Storage Policy",
    "nodes": "Nodes",
    "groups": "Groups",
    "users": "Users",
    "files": "Files",
    "entities": "File Blobs",
    "shares": "Shares",
    "tasks": "Background Tasks",
    "remoteDownload": "Remote Download",
    "generalTasks": "General",
    "title": "Dashboard",
    "dashboard": "Cloudreve Dashboard",
    "userSession": "User session",
    "fileSystem": "Filesystem",
    "mediaProcessing": "Media processing",
    "queue": "Queue",
    "events": "Events",
    "server": "Server"
  },
  "summary": {
    "generatedAt": "Generated at <0></0>",
    "confirmSiteURLTitle": "Confirm site URL",
    "siteURLNotMatch": "The site URL you set does not contains the current one ({{current}}), do you want to add it to the list?",
    "setAsPrimary": "Set as primary site URL",
    "setAsPrimaryDes": "Set {{current}} as the primary site URL, used for communication with external services and receiving callbacks. Please use a URL that can be accessed by WAN.",
    "setAsSecondary": "Add to secondary URLs",
    "setAsSecondaryDes": "Add {{current}} to secondary URLs, Cloudreve will automatically select whether to use it based on the URL actually accessed by the user.",
    "siteURLDescription": "This setting is very important, make sure it matches the actual URL of your site. You can change this setting in Settings - Basic.",
    "ignore": "Ignore",
    "changeIt": "Change it",
    "trend": "Trend",
    "summary": "Summary",
    "totalUsers": "Users",
    "totalFiles": "Files",
    "shareLinks": "Share links",
    "totalBlobs": "Blobs",
    "homepage": "Homepage",
    "documents": "Documents",
    "forum": "Forum",
    "forumLink": "https://github.com/cloudreve/Cloudreve/discussions",
    "discordCommunity": "Discord community",
    "buyPro": "Upgrade to Pro",
    "publishedAt": "published at <0></0>",
    "newsTag": "announcements",
    "licenseExpireAt": "License expiration date",
    "permanentLicense": "Permanent license",
    "offlineLicenseExpireAy": "Offline license expiration date",
    "offlineLicenseDes": "Cloudreve will automatically update the offline license before it expires if your server is connected to the network.",
    "licensedDomains": "Licensed domains",
    "renew": "Refresh offline license",
    "manageLicense": "Manage license",
    "volPurchase": "The client VOL license needs to be purchased separately from the <0>License Management Dashboard</0>. The VOL license allows your users to connect to your site using the <1>Cloudreve iOS</1> for free, without the need for users to pay for a subscription for the iOS app itself. After purchasing a license, please click \"Refresh offline license\" below.",
    "iosVol": "iOS client volume license (VOL)",
    "refreshSuccessfully": "Refreshed successfully.",
    "manualRefresh": "Manually refresh offline license",
    "manualRefreshDes": "Failed to refresh offline license automatically, please try to log in to the <0>License Management Dashboard</0> to get the latest offline license and paste it below."
  },
  "queue": {
    "queueName_io_intense": "IO Intensive",
    "queueName_io_intenseDes": "Queue for handling large amounts of IO operations, including: storage policy transfer, decompression, compression.",
    "queueName_media_meta": "Media Metadata Extraction",
    "queueName_media_metaDes": "Used to extract metadata from media files.",
    "queueName_recycle": "Blob Recycling",
    "queueName_recycleDes": "Used to delete expired file blobs.",
    "queueName_thumb": "Thumbnail Generation",
    "queueName_thumbDes": "Used to generate thumbnails for files.",
    "queueName_remote_download": "Remote Download",
    "queueName_remote_downloadDes": "Used to process remote download tasks.",
    "failed": "Failed ({{count}})",
    "success": "Success ({{count}})",
    "suspending": "Suspended ({{count}})",
    "busyWorker": "Processing ({{count}})",
    "submited": "Submitted ({{count}})",
    "editQueueSettings": "Edit queue settings - {{name}}",
    "workerNum": "Worker threads",
    "workerNumDes": "Maximum number of tasks to be executed in parallel in the task queue",
    "maxExecution": "Maximum execution time",
    "maxExecutionDes": "Maximum execution time (seconds) for a task, after which the task will be terminated.",
    "backoffFactor": "Backoff factor",
    "backoffFactorDes": "Growth factor for task retry time intervals.",
    "backoffMaxDuration": "Maximum backoff time",
    "backoffMaxDurationDes": "Maximum backoff time (seconds) for task retries.",
    "maxRetry": "Maximum retries",
    "maxRetryDes": "Maximum number of retries after a task failure.",
    "retryDelay": "Retry delay",
    "retryDelayDes": "Initial delay time (seconds) for task retries."
  },
  "settings": {
    "resetUrl": "Reset URL",
    "exceedToleranceDays": "Tolerance days for banning",
    "activateUrl": "Activate URL",
    "domainNotLicensed": "Domain not licensed",
    "domainNotLicensedDes": "The site URL you set contains an unauthorized domain, please add this subdomain in the <0>License Management Dashboard</0> and click the button below to update the license and try again.",
    "showSettings": "Show settings",
    "perPage": "{{num}} per page",
    "noNodes": "No nodes available.",
    "extractMediaMeta": "Extract media metadata",
    "extractMediaMetaDes": "Extract media file metadata for display and search. By default, non-local storage policies will only use the \"Native in storage policy\" generator. You can extend the thumbnail capability of third-party storage policies by enabling the \"Extractor proxy\" feature in storage policy setting page.",
    "exif": "EXIF",
    "exifDes": "Extract EXIF metadata from image files for display and search.",
    "music": "Music metadata",
    "musicDes": "Extract metadata from music files, including title, artist, album, etc.",
    "ffprobe": "FFprobe",
    "ffprobeDes": "Use FFprobe to extract metadata from video and audio files.",
    "maxSizeLocal": "Max file size (Local storage)",
    "maxSizeLocalDes": "Maximum file size for metadata extraction when the file is stored in local storage policy, 0 means no limit.",
    "maxSizeRemote": "Max file size (Remote storage)",
    "maxSizeRemoteDes": "Maximum file size for metadata extraction when the file is stored in third-party storage policies, 0 means no limit.",
    "exifBruteForce": "Use brute force if necessary",
    "exifBruteForceDes": "When enabled, the entire file will be scanned to find EXIF data if it cannot be found in the standard header location. This may increase processing time but can find EXIF data in non-standard locations.",
    "musicCover": "Music cover",
    "musicCoverDes": "Extract album cover from music files, supports ID3 (v1, 2.2, 2.3 and 2.4) container. This generator depends on any other image thumbnail generator (Cloudreve built-in or VIPS).",
    "notAppliedToNativeGenerator": "{{prefix}}Not applicable to native generator of storage policies.",
    "fileBlobMargin": "File Blob URL Cache Margin (seconds)",
    "fileBlobMarginDes": "When the same file Blob is requested multiple times, if the initial URL has a remaining validity period greater than the margin, the same URL will be reused.",
    "fileBlobTimeout": "File Blob URL TTL (seconds)",
    "fileBlobTimeoutDes": "Limit the validity period of the temporary URL obtained when users open or download files, only applicable to local storage policies, WebDAV, or files downloaded through Cloudreve relaying.",
    "wopiSessionTimeout": "WOPI session TTL (seconds)",
    "wopiSessionTimeoutDes": "Limit the validity period of a single session when users edit files using WOPI. After expiration, users need to reopen the file from Cloudreve.",
    "oauthRefresh": "Refresh interval for OAuth storage policy",
    "oauthRefreshDes": "Set how often to refresh the OAuth credentials for storage policies (e.g. OneDrive) that require OAuth. This can prevent credential expiration due to long periods of inactivity",
    "transitParallelNum": "Max parallel relaying transfers",
    "transitParallelNumDes": "The maximum number of parallel uploads when a single server-side file relaying transfer task contains multiple files.",
    "failedChunkRetry": "Maximum number of retries for chunk upload failures",
    "failedChunkRetryDes": "The maximum number of retries for chunk upload failures, only applicable to server-side uploads or relaying transfers.",
    "cacheChunks": "Cache streaming chunks",
    "cacheChunksDes": "If enabled, the chunk data will be cached in the system temporary directory during streaming transfer, so that it can be used for retrying failed chunk uploads;\n If disabled, streaming transfer chunk uploads will not take up extra disk space, but the entire upload will fail immediately if the chunk upload fails.",
    "folderPropsTimeout": "Folder statistics cache TTL (seconds)",
    "folderPropsTimeoutDes": "The validity period of the result cache when users calculate folder statistics (size, number of files, etc.).",
    "slaveAPIExpiration": "Slave API signature TTL (seconds)",
    "slaveAPIExpirationDes": "The signature validity period used by the master node when accessing the slave node API.",
    "uploadSessionTimeout": "Upload session TTL (seconds)",
    "uploadSessionDes": "In a valid upload session period, for supported storage policies, users can resume unfinished tasks. The maximum value that can be set is limited by the rules of different storage policy providers.",
    "archiveTimeout": "Server-side batch download session TTL (seconds)",
    "advanceOptions": "Advanced options",
    "emojiOptions": "Emoji options",
    "addCategorize": "Add a category",
    "category": "Category",
    "searchQuery": "File categorize query",
    "importWopi": "Import WOPI app settings",
    "wopiEndpoint": "WOPI Discovery Endpoint",
    "wopiDes": "Extend Cloudreve's online preview and editing capabilities by integrating with online document processing systems that support the WOPI protocol. Please fill in the WOPI service discovery address here, such as https://example.com/hosting/discovery",
    "embeddedWebpageViewer": "Embedded Webpage Viewer",
    "wopiViewer": "WOPI Application",
    "ext": "Extension",
    "invalidWopiActionMapping": "Invalid WOPI action mapping",
    "woapiActionMapping": "WOPI action mappings",
    "drawioHost": "DrawIO instance",
    "drawioHostDes": "You can use URL for self-hosted instance.",
    "openInNew": "Open in new window",
    "openInNewDes": "If checked, it will directly pop up a new tab to open this application.",
    "maxSize": "Max file size",
    "maxSizeDes": "The maximum file size supported by this application. 0 means no limit. If the file exceeds this size, it will still bec opened, but user will be warned.",
    "srcEncodedVar": "URL-encoded file Blob temporary access URL",
    "srcVar": "File blob temporary access URL",
    "nameEncodedVar": "URL-encoded file name",
    "versionEntityVar": "The Blob ID of the opened file version, empty means the latest version.",
    "fileIdVar": "File ID",
    "userIdVar": "User ID, empty when not logged in.",
    "userDisplayNameVar": "URL-encoded user display name.",
    "fileViewers": "File applications",
    "addViewer": "Add an application",
    "viewerGroupTitle": "Application group #{{index}}",
    "viewerType": "Type",
    "displayName": "Display name",
    "displayNameDes": "Display name to users, support i18next key.",
    "viewerEnabled": "Enabled",
    "newFileAction": "New file actions",
    "newFileActionDes": "By adding this mapping, users will see this application option when clicking the \"New\" button.",
    "addNewFileAction": "Add a mapping",
    "builtinViewerType": "Builtin application",
    "wopiViewerType": "WOPI",
    "customViewerType": "Customized",
    "nMapping": "{{num}} mapping(s)",
    "editViewerTitle": "Edit {{name}}",
    "builtInIconUrlDes": "This built-in application has a default icon. When the icon URL is left blank, the default icon will be used.",
    "viewerUrl": "Application URL",
    "viewerUrlDes": "URL of customized application, <0>magical variables</0> are supported.",
    "addIcon": "Add a icon",
    "exts": "Extension list",
    "icon": "Icon",
    "iconUrl": "Icon URL",
    "iconColor": "Color",
    "iconColorDark": "Color (Dark mode)",
    "fileIcons": "File icons",
    "builtinIcon": "Built in",
    "mimeMapping": "MIME type mapping",
    "mimeMappingDes": "MIME type mapping in JSON format, where the key is the file extension and the value is the MIME type. Cloudreve will determine the file MIME type based on the file extension and this setting.",
    "mapProvider": "Map provider",
    "mapProviderDes": "Map provider used to display media location information.",
    "mapGoogle": "Google Maps",
    "mapOpenStreetMap": "OpenStreetMap",
    "tileType": "Default tile type",
    "tileTypeDes": "Default tile type for Google Maps.",
    "tileTypeTerrain": "Terrain",
    "tileTypeSatellite": "Satellite",
    "tileTypeGeneral": "Regular",
    "maxPageSize": "Max page size",
    "maxPageSizeDes": "Limit the maximum number of files that users can adjust per page.",
    "maxRecursiveSearch": "Max recursive search count",
    "maxRecursiveSearchDes": "The maximum number of recursive searches allowed when searching for files. If the number of files searched exceeds this limit, the search will stop and warn the user.",
    "maxBatchSize": "Max batch size",
    "maxBatchSizeDes": "The maximum number of files that users can operate in a batch, only the top-level will be counted, and the number of files under subdirectories will not be counted.",
    "defaultPagination": "Pagination method for file list",
    "cursorPagination": "Cursor pagination",
    "cursorPaginationDes": "More files will be automatically loaded when the user scrolls to the bottom. This method performs better for large file lists, but the total number of pages cannot be seen.",
    "offsetPagination": "Offset pagination",
    "offsetPaginationDes": "Pagination navigation will be displayed at the bottom of the page, users can see the total number of pages and jump to a specific page. This method performs slightly worse for large file lists.",
    "defaultPaginationDes": "Cursor pagination will be forced to use when searching, regardless of the above settings.",
    "publicResourceMaxAge": "Static resource cache max age (seconds)",
    "publicResourceMaxAgeDes": "The max age of cache for public accessible static resources (e.g. files, thumbnails and user profile pictures).",
    "cronDes": "{{des}} A correct <0>Cron syntax</0> is required here. Restarting Cloudreve is needed to take effect.",
    "entityCollectInterval": "File Blob recycle interval",
    "entityCollectIntervalDes": "Set how often to scan and delete expired file blobs.",
    "trashBinInterval": "Trash bin scan interval",
    "trashBinIntervalDes": "Set how often to scan and delete expired files in the trash bin.",
    "logtoName": "Sign-in method name",
    "logtoNameDes": "Name of the sign-in method, displayed to users. Default is \"SSO\", support i18next key.",
    "logtoDirectSSO": "Direct sign-in",
    "logtoDirectSSODes": "If you want to skip the Logto login screen and directly jump to the third-party login or SSO, please fill in the identifier of the social connector here. For details, please refer to <0>Logto documentation</0>.",
    "logtoEndpoint": "Logto endpoint",
    "logtoEndpointDes": "The Logto endpoint url obtained from the application management panel, which can be a self-hosted instance.",
    "logtoKey": "Application secret",
    "logtoKeyDes": "Application secret created in the application management page.",
    "logtoAppIDDes": "Application ID created in the application management page.",
    "logto": "Logto",
    "logtoDes": "With <0>Logto</0>, you can achieve more third-party platform sign-ins, such as Apple, GitHub, Microsoft Entra ID, Google, SMS, etc. Please create a \"Traditional Web Application\" in the Logto management portal and add {{url}} to the \"Redirect URIs\".",
    "thirdPartySignIn": "Third-party sign-in",
    "logo": "LOGO",
    "logoDes": "URL of the LOGO, please provide different logos for dark and light modes.",
    "dark": "Dark mode",
    "light": "Light mode",
    "tosUrl": "Terms of service URL",
    "tosUrlDes": "Will be displayed in the footer of the login or registration page, leave it blank to not display.",
    "privacyUrl": "Privacy policy URL",
    "privacyUrlDes": "Will be displayed in the footer of the login or registration page, leave it blank to not display.",
    "addSecondary": "Add secondary site URL",
    "secondarySiteURL": "Secondary",
    "secondaryDes": "You can also add other secondary URLs, Cloudreve will automatically select whether to use it based on the URL actually accessed by the user.",
    "primarySiteURL": "Primary",
    "primarySiteURLDes": "Primary site URL is used for communication with external services and receiving callbacks (e.g. storage provider), please use a URL that can be accessed by WAN.",
    "revert": "Revert changes",
    "saved": "Settings saved.",
    "save": "Save",
    "basicInformation": "Basic Information",
    "mainTitle": "Site name",
    "mainTitleDes": "Name of the instance.",
    "siteDescription": "Site description",
    "siteDescriptionDes": "Description of the website, which may be displayed in the shared page summary.",
    "siteURL": "Site URL",
    "customFooterHTML": "Custom footer HTML",
    "customFooterHTMLDes": "Custom HTML code inserted at the bottom of the page.",
    "announcement": "Announcement",
    "announcementDes": "Announcements displayed to logged-in users. Blank value will not be displayed. After this content is changed, all users will see the announcement again.",
    "supportHTML": "Enter HTML or plain text.",
    "branding": "Branding",
    "smallIcon": "Small icon",
    "smallIconDes": "URL of the small icon with the ico as extension.",
    "mediumIcon": "Medium icon",
    "mediumIconDes": "URL of the medium icon, prefer size at 192x192, png format.",
    "largeIcon": "Large icon",
    "largeIconDes": "URL of the medium icon, prefer size at 512x512, png format. This icon will also be shown while switching account in iOS app.",
    "displayMode": "Display mode",
    "displayModeDes": "The display mode of a PWA application after it's installed.",
    "themeColor": "Theme color",
    "themeColorDes": "CSS color value that affect the color of the status bar on the PWA launch screen, the status bar in the content page, and the address bar.",
    "backgroundColor": "Background color",
    "backgroundColorDes": "CSS color value.",
    "hint": "Hint",
    "webauthnNoHttps": "Web Authn requires your website to be HTTPS enabled, and please confirm that in Settings - Basic - Site URL also uses HTTPS.",
    "accountManagement": "Accounts",
    "allowNewRegistrations": "Accept new signups",
    "allowNewRegistrationsDes": "After disabled, no new users can be registered, unless manually added by admins.",
    "emailActivation": "Email activation",
    "emailActivationDes": "After enabled, new users need to click the activation link in the email to complete signups. Please make sure the <0>email delivery settings</0> are correct, otherwise the activation email will not be delivered.",
    "captchaForSignup": "Captcha for signups",
    "captchaForSignupDes": "Whether to enable the captcha for signups.",
    "captchaForLogin": "Captcha for logins",
    "captchaForLoginDes": "Whether to enable the captcha for logins.",
    "captchaForReset": "Captcha for resetting password",
    "captchaForResetDes": "Whether to enable the captcha for resetting password.",
    "webauthnDes": "Whether to allow users to sign-in with hardware authentication devices, such as: face, fingerprint or USB key; the site must enable HTTPS.",
    "webauthn": "Sign-in with Passkeys",
    "defaultGroup": "Default group",
    "defaultGroupDes": "The initial user group after user registration.",
    "testMailSent": "Test email is sent.",
    "testSMTPSettings": "Test SMTP settings",
    "testSMTPTooltip": "Cloudreve will use your current SMTP settings to send a test email, no need to save settings before testing.",
    "recipient": "Recipient",
    "send": "Send",
    "smtp": "SMTP",
    "senderName": "Sender name",
    "senderNameDes": "The sender's name displayed in the email.",
    "senderAddress": "Sender address",
    "senderAddressDes": "Email address of the sender.",
    "smtpServer": "SMTP server",
    "smtpServerDes": "SMTP server address, without port number.",
    "smtpPort": "SMTP Port",
    "smtpPortDes": "Port of SMTP server.",
    "smtpUsername": "SMTP Username",
    "smtpUsernameDes": "SMTP username, generally the same as the sender address.",
    "smtpPassword": "SMTP Password",
    "smtpPasswordDes": "Password of the sender mailbox.",
    "replyToAddress": "Reply to address",
    "replyToAddressDes": "The mailbox used to receive reply emails when users reply to emails sent by the system.",
    "enforceSSL": "Enforce SSL connection",
    "enforceSSLDes": "Whether to enforce an SSL encrypted connection. If you cannot send emails, you can turn this off and Cloudreve will try to use STARTTLS and decide whether to use encrypted connections.",
    "smtpTTL": "SMTP connection TTL (seconds)",
    "smtpTTLDes": "SMTP connections established during the TTL period will be reused by new mail delivery requests.",
    "emailTemplates": "Email Templates",
    "activateNewUser": "Activate new user",
    "activateNewUserDes": "Template for activation email after new user registration.",
    "resetPassword": "Reset password",
    "resetPasswordDes": "Template reset password.",
    "sendTestEmail": "Send test email",
    "transportation": "Transmission",
    "workerNum": "Number of worker",
    "workerNumDes": "The maximum number of tasks to be executed in parallel by the master node task queue, restarting Cloudreve is needed to take effect.",
    "tempFolder": "Temp folder",
    "tempFolderDes": "Used to store temporary files generated by tasks such as decompression, compression, etc.",
    "textEditMaxSize": "Max size of editable document files",
    "textEditMaxSizeDes": "The maximum size of a document file that can be edited online, files beyond this size cannot be edited online. This setting applies to online Web editors such as plain text, code and Office documents (WOPI).",
    "resetConnection": "Reset connection after failed upload",
    "resetConnectionDes": "If enabled, the server will force to reset the connection if upload verification fails.",
    "batchDownload": "Batch download",
    "previewURL": "Preview URL",
    "cannotDeleteDefaultTheme": "Cannot delete default theme.",
    "themeConfig": "Configs",
    "actions": "Actions",
    "wrongFormat": "Incorrect format.",
    "avatar": "Avatar",
    "gravatarServer": "Gravatar server",
    "gravatarServerDes": "URL of Gravatar mirror server.",
    "avatarFilePath": "Avatar file path",
    "avatarFilePathDes": "Path to save user's avatar files, relative to the Cloudreve data folder.",
    "avatarSize": "Max avatar file size",
    "avatarSizeDes": "Maximum size of avatar files that users can upload.",
    "avatarImageSize": "Image size (px)",
    "avatarImageSizeDes": "Selected profile image will be resized to the given size, in pixels.",
    "filePreview": "File Preview",
    "thumbnails": "Thumbnails",
    "thumbnailDoc": "For more information about thumbnail, see the <0>document</0>.",
    "thumbnailDocLink": "https://docs.cloudreve.org/v/en/use/thumbnails",
    "thumbnailBasic": "Basic",
    "generators": "Thumbnail generators",
    "thumbMaxSize": "Maximum original file size",
    "thumbMaxSizeDes": "The maximum original file size for which thumbnails can be generated, thumbnails will not be generated if files exceed this size.",
    "generatorProxyWarning": "By default, non-local storage policies will only use the \"Native in storage policy\" generator. You can extend the thumbnail capability of third-party storage policies by enabling the \"Generator proxy\" feature in storage policy setting page.",
    "policyBuiltin": "Native in storage policy",
    "policyBuiltinDes": "Use the native API from storage provider to process thumbnails. For local and S3 policy, this generator is not available and will automatically fallback to other generators. For other storage policies, please go to storage policy setting page to configure this generator.",
    "cloudreveBuiltin": "Cloudreve built-in",
    "cloudreveBuiltinDes": "Only images in PNG, JPEG, GIF formats are supported using Cloudreve's built-in image processing capabilities.",
    "libreOffice": "LibreOffice",
    "libreOfficeDes": "Use LibreOffice to generate thumbnails for Office documents. This generator depends on any other image thumbnail generator (Cloudreve built-in or VIPS).",
    "vips": "VIPS",
    "vipsDes": "Use libvips to process thumbnail images, support more image formats, and consume less resources.",
    "thumbDependencyWarning": "LibreOffice or music cover generator depend on Cloudreve built-in or VIPS generators, please enable either one.",
    "ffmpeg": "FFmpeg",
    "ffmpegDes": "Use FFmpeg to generate video thumbnails.",
    "executable": "Executable",
    "executableDes": "The path or command of the third-party generator executable.",
    "executableTest": "Test",
    "executableTestSuccess": "Generator works, version: {{version}}",
    "generatorExts": "Available extensions",
    "generatorExtsDes": "List of available file extensions for this generator, please use comma , to separate multiple ones.",
    "ffmpegSeek": "Thumbnail capture location",
    "ffmpegSeekDes": "Define the thumbnail interception time, it is recommended to choose a smaller value to speed up the generation process. If the actual length of the video is exceeded, the thumbnail generation will fail.",
    "generatorProxy": "Generator proxy",
    "enableThumbProxy": "Use generator proxy",
    "proxyPolicyList": "Enabled storage policy",
    "proxyPolicyListDes": "Multi-selectable. If enabled, files whose storage policy does not support native generation, its thumbnails will be proxy generated by the Cloudreve.",
    "thumbWidth": "Max width",
    "thumbHeight": "Max height",
    "thumbSuffix": "Blob file suffix",
    "thumbSuffixDes": "The suffix appended to the original Blob file name for the generated thumbnail, ",
    "thumbFormat": "Image format",
    "thumbFormatDes": "Available: png/jpg",
    "thumbQuality": "Quality",
    "thumbQualityDes": "Compression quality percentage, valid only for jpg encoding. ",
    "thumbGC": "Run GC after thumb generated",
    "captcha": "Captcha",
    "captchaType": "Captcha type",
    "captchaTypeDes": "Select captcha type and provider.",
    "plainCaptcha": "Plain graphic",
    "reCaptchaV2": "reCAPTCHA V2",
    "turnstile": "Cloudflare Turnstile",
    "turnstileSiteKey": "Site Key",
    "turnstileSiteKSecret": "Secret",
    "captchaProvider": "Captcha provider",
    "captchaWidth": "Width",
    "captchaHeight": "Height",
    "captchaLength": "Length",
    "captchaMode": "Mode",
    "captchaModeNumber": "Numbers",
    "captchaModeLetter": "Letters",
    "captchaModeMath": "Math",
    "captchaModeNumberLetter": "Numbers + Letters",
    "captchaElement": "Elements inside of the captcha image.",
    "complexOfNoiseText": "Complex of noise text",
    "complexOfNoiseDot": "Complex of noise dots",
    "showHollowLine": "Show hollow lines",
    "showNoiseDot": "Show noise dots",
    "showNoiseText": "Show noise text",
    "showSlimeLine": "Show slime lines",
    "showSineLine": "Show sine lines",
    "siteKey": "Site Key",
    "siteKeyDes": "You can find it at <0>App Management Page</0>.",
    "siteSecret": "Secret",
    "siteSecretDes": "You can find it at <0>App Management Page</0>.",
    "secretID": "SecretId",
    "secretIDDes": "You can find it at <0>Access Management Page</0>.",
    "secretKey": "SecretKey",
    "secretKeyDes": "You can find it at <0>Access Management Page</0>.",
    "tCaptchaAppID": "APPID",
    "tCaptchaAppIDDes": "You can find it at <0>Captcha Management Page</0>.",
    "tCaptchaSecretKey": "App Secret Key",
    "tCaptchaSecretKeyDes": "You can find it at <0>Captcha Management Page</0>.",
    "staticResourceCache": "Public static resources cache",
    "staticResourceCacheDes": "Max age of cache for public accessible static resources (e.g. local policy source link, download link).",
    "creditSystem": "Credit system",
    "creditAndVAS": "Credit and VAS",
    "enableCredit": "Enable credit system",
    "enableCreditDes": "Enable credit system to allow users to set prices for their share links.",
    "creditPrice": "Credit price",
    "creditPriceDes": "Price for recharging credit points with money (in minimum currency unit). Fill 0 to disable credit recharge.",
    "shareScoreRate": "Share owner's commission rate",
    "shareScoreRateDes": "Percentage (1-100) of credit points that share owners receive when their share links are purchased.",
    "cronNotifyUser": "Scan interval for over-limit users",
    "cronNotifyUserDes": "Scan and send email reminders to over-limit users, ",
    "cronBanUser": "User ban schedule",
    "cronBanUserDes": "Scan and ban users exceeding storage limits and buffer periods",
    "anonymousPurchase": "Anonymous purchase",
    "anonymousPurchaseDes": "Allow non-logged-in users to purchase share links directly",
    "shopNavEnabled": "Show Shop Navigation",
    "shopNavEnabledDes": "Display 'Shop' items in the sidebar navigation",
    "paymentSettings": "Payment settings",
    "currencyCode": "Currency code",
    "currencyCodeDes": "Three-letter currency code (e.g., USD, CNY, EUR)",
    "currencySymbol": "Currency symbol",
    "currencySymbolDes": "Currency symbol to display (e.g., $, ¥, €)",
    "currencyUnit": "Currency unit",
    "currencyUnitDes": "Minimum currency unit (e.g., 100 for dollars/cents)",
    "paymentProviders": "Payment providers",
    "providerName": "Provider name, used to display to users.",
    "providerType": "Provider type",
    "providerKey": "Secret key",
    "selectCurrency": "Select common currency",
    "addPaymentProvider": "Add payment provider",
    "stripeProvider": "Stripe",
    "weixinProvider": "WeChat Pay",
    "alipayProvider": "Alipay",
    "customProvider": "Custom payment provider",
    "customProviderDes": "Create a plugin to connect to other payment gateways, see <0>documentation</0> for further details.",
    "providerKeyDes": "API secret key from Stripe.",
    "storageProductSettings": "Storage product",
    "storageProductsDes": "Configure products that users can purchase to extend their storage space.",
    "addStorageProduct": "Add SKU",
    "editStorageProduct": "Edit SKU",
    "storageSize": "Storage size",
    "storageSizeBytes": "Size included in this SKU",
    "duration": "Duration",
    "durationSeconds": "Duration in seconds (e.g. 2592000 for 30 days)",
    "price": "Price",
    "priceInUnits": "Price (in minimum currency unit)",
    "priceInUnitsDes": "Price will be displayed as:",
    "chipLabel": "Label (optional)",
    "chipLabelHelp": "A short text label displayed next to the product name",
    "usePoints": "Allow paying with points",
    "points": "Points",
    "pointsHelp": "Number of points required to purchase this product",
    "pointsUnit": "points",
    "groupProductSettings": "Group product",
    "groupProductsDes": "Configure products that users can purchase to join specific user groups.",
    "addGroupProduct": "Add group product",
    "editGroupProduct": "Edit group product",
    "groupId": "Group ID",
    "groupIdHelp": "The user group to upgrade to after purchasing this product.",
    "description": "Description",
    "descriptionHelp": "Enter features or benefits, one per line",
    "receiptEmailTemplate": "Payment receipt template",
    "receiptEmailTemplateDes": "Email template sent to users when a payment is confirmed.",
    "activationEmailTemplate": "Account activation template",
    "activationEmailTemplateDes": "Email template sent to users to activate their accounts.",
    "quotaExceededEmailTemplate": "Storage quota exceeded template",
    "quotaExceededEmailTemplateDes": "Email template sent to users when they exceed their storage quota.",
    "resetPasswordEmailTemplate": "Password reset template",
    "resetPasswordEmailTemplateDes": "Email template sent to users when they request a password reset.",
    "addLanguage": "Add language",
    "languageCodeDes": "Please select the language you want to add.",
    "emailSubject": "Email saveChanges",
    "emailSubjectDes": "The subject line of the email.",
    "emailBody": "Email body",
    "emailBodyDes": "HTML content of the email. You can use <0>magic variables</0> to customize the email content.",
    "orderTitle": "Order title",
    "themeOptions": "Theme options",
    "themeOptionsDes": "Configure custom theme options for your site. These themes will be available for users to select in their preferences.",
    "primaryColor": "Primary color",
    "secondaryColor": "Secondary color",
    "primaryColorDark": "Primary color (Dark)",
    "secondaryColorDark": "Secondary color (Dark)",
    "addThemeOption": "Add theme option",
    "editThemeOption": "Edit theme option",
    "invalidThemeConfig": "Invalid theme configuration. Please check your JSON syntax.",
    "themeConfiguration": "Theme configuration",
    "themePreview": "Theme preview",
    "lightTheme": "Light theme",
    "darkTheme": "Dark theme",
    "previewTitle": "Preview title",
    "previewTextField": "Input field",
    "previewPrimary": "Primary",
    "previewSecondary": "Secondary",
    "invalidThemePreview": "Invalid theme configuration for preview",
    "duplicateThemeColor": "A theme with this primary color already exists. Please choose a different color.",
    "themeDes": "Full available configurations can be referred at <0>Default theme viewer - Material-UI</0>.",
    "defaultTheme": "Default",
    "auditLog": "Events",
    "auditLogDes": "Configure which events should be recorded. Some events might be used by the system to provide additional features, e.g. file activity and sign in activity.",
    "systemEvents": "System events",
    "systemEventsDes": "Events related to system operations and status.",
    "userEvents": "User events",
    "userEventsDes": "Events related to user accounts, authentication, and profile changes.",
    "fileEvents": "File events",
    "fileEventsDes": "Events related to file operations such as upload, download, and modification.",
    "shareEvents": "Share events",
    "shareEventsDes": "Events related to file sharing and link access.",
    "versionEvents": "Version events",
    "versionEventsDes": "Events related to file version management.",
    "mediaEvents": "Media events",
    "mediaEventsDes": "Events related to media processing such as thumbnail generation.",
    "filesystemEvents": "Filesystem events",
    "filesystemEventsDes": "Events related to filesystem operations such as mounting and archive handling.",
    "webdavEvents": "WebDAV events",
    "webdavEventsDes": "Events related to WebDAV account management and access.",
    "paymentEvents": "Payment events",
    "paymentEventsDes": "Events related to payments, points, and membership management.",
    "emailEvents": "Email events",
    "emailEventsDes": "Events related to email sending and notifications.",
    "toggleAll": "Toggle all",
    "toggleAllDes": "Enable or disable all events in this category.",
    "event": {
      "server_start": "Server start",
      "user_signup": "User signup",
      "email_sent": "Email sent",
      "user_activated": "User activated",
      "user_login_failed": "Login failed",
      "user_login": "User login",
      "user_token_refresh": "Token refresh",
      "file_create": "File created",
      "file_rename": "File renamed",
      "set_file_permission": "Permission changed",
      "entity_uploaded": "File uploaded or updated",
      "entity_downloaded": "File downloaded",
      "copy_from": "Copy from",
      "copy_to": "Copy to",
      "move_to": "Move to",
      "delete_file": "File deleted",
      "move_to_trash": "Move to trash",
      "share": "Share created",
      "share_link_viewed": "Share link viewed",
      "set_current_version": "Set current version",
      "delete_version": "Delete version",
      "thumb_generated": "Thumbnail generated",
      "live_photo_uploaded": "Live photo uploaded",
      "update_metadata": "Metadata updated",
      "edit_share": "Share edited",
      "delete_share": "Share deleted",
      "mount": "Mount",
      "relocate": "Relocate",
      "create_archive": "Create archive",
      "extract_archive": "Extract archive",
      "webdav_login_failed": "WebDAV login failed",
      "webdav_account_create": "WebDAV account created",
      "webdav_account_update": "WebDAV account updated",
      "webdav_account_delete": "WebDAV account deleted",
      "payment_created": "Payment created",
      "points_change": "Points changed",
      "payment_paid": "Payment paid",
      "payment_fulfilled": "Order fulfilled",
      "payment_fulfill_failed": "Order fulfill failed",
      "storage_added": "Storage added",
      "group_changed": "Group changed",
      "user_exceed_quota_notified": "Quota exceeded notification",
      "user_changed": "User status changed",
      "get_direct_link": "Get direct link",
      "link_account": "Link external account",
      "unlink_account": "Unlink external account",
      "change_nick": "Change nickname",
      "change_avatar": "Change avatar",
      "membership_unsubscribe": "Membership unsubscribe",
      "change_password": "Change password",
      "enable_2fa": "Enable 2FA",
      "disable_2fa": "Disable 2FA",
      "add_passkey": "Add passkey",
      "remove_passkey": "Remove passkey",
      "redeem_gift_code": "Redeem gift code"
    },
    "server": "Server",
    "tempPath": "Temporary path",
    "tempPathDes": "The directory for storing temporary files, relative to the Cloudreve data directory. Please ensure that no queue tasks are running before modifying it.",
    "siteID": "Site ID",
    "siteIDDes": "A unique ID for identifying the site, generally not needed to be modified.",
    "siteSecretKey": "Master key",
    "siteSecretKeyDes": "The master key used to encrypt user tokens and signatures. After rotation, all user tokens and signatures will be invalid. It takes effect after restarting Cloudreve.",
    "rotateSecretKey": "Rotate master key",
    "hashidSalt": "HashID salt",
    "hashidSaltDes": "The salt value used to generate HashID. Please be cautious when changing it, as it will invalidate existing direct links and share links.",
    "accessTokenTTL": "Access token TTL",
    "accessTokenTTLDes": "The TTL of access tokens, in seconds.",
    "refreshTokenTTL": "Refresh token TTL",
    "refreshTokenTTLDes": "The TTL of refresh tokens, in seconds. It affects the duration of user login status.",
    "cronGarbageCollect": "Garbage collection scan interval",
    "cronGarbageCollectDes": "Set how often to scan and recycle expired data in temporary files and KV storage.",
    "startWithProtocol": "Must start with http:// or https://",
    "tlsWarning": "The current site is using https, filling in an http URL here may cause exceptions.",
    "blobUrlCache": "Blob URL cache",
    "clearBlobUrlCache": "Clear Blob URL cache",
    "clearBlobUrlCacheDes": "To increase cache hit rate, Cloudreve caches and reuses Blob URLs. When the CDN address or other settings change, please clear the cache.",
    "cacheCleared": "Cache cleared."
  },
  "giftCodes": {
    "giftCodesSettings": "Gift Codes",
    "giftCodesManagement": "Gift Codes Management",
    "giftCodesDescription": "Manage gift codes that users can redeem to obtain points, storage space, or group membership.",
    "generateGiftCodes": "Generate Gift Codes",
    "giftCodeQuantity": "Quantity",
    "giftCodeQuantityHelp": "Number of gift codes to generate",
    "giftCodeProductType": "Product Type",
    "giftCodeTypePoints": "Points",
    "giftCodeTypeStorage": "Storage",
    "giftCodeTypeGroup": "Group",
    "giftCodePointsAmount": "Points Amount",
    "giftCodePointsAmountHelp": "Number of points to credit when code is redeemed",
    "giftCodeProduct": "Product",
    "selectStorageProduct": "Select storage product",
    "selectGroupProduct": "Select group product",
    "giftCodeId": "ID",
    "giftCodeType": "Type",
    "giftCodeAmount": "Amount",
    "giftCode": "Gift Code",
    "giftCodeStatus": "Status",
    "giftCodeUsed": "Used",
    "giftCodeUnused": "Available",
    "giftCodeDeleted": "Gift code deleted successfully",
    "giftCodesGenerated": "Gift codes generated successfully",
    "noGiftCodes": "No gift codes available",
    "generatedCodesTitle": "Generated Gift Codes",
    "generatedCodesDescription": "Copy these gift codes to share with users. Each code can be used once.",
    "copyAndClose": "Copy and Close",
    "duratonTimes": "Quantity",
    "duratonTimesDes": "How many quantity of the product is included in each gift code.",
    "unknownProduct": "Unknown Product"
  },
  "policy": {
    "deletePolicyConfirmation": "Are you sure you want to delete the storage policy {{name}}?",
    "streamSaver": "Download via browser",
    "streamSaverDes": "When enabled, users' download requests will be handled by the browser. Due to the OneDrive storage policy limitation, the file name of the file downloaded directly by users cannot be the same as the file name in Cloudreve, using the browser to handle downloads can solve this problem.",
    "oauthCallbackFailed": "Authorization failed",
    "httpsRequired": "Entra ID application requires HTTPS redirect URL, but the current site is using HTTP, which may cause redirect failure after login, please manually replace the HTTPS in the browser address bar with HTTP.",
    "authorizeMicrosoft": "Sign-in with Microsoft",
    "redirectUrl": "Redirect URL",
    "redirectUrlDes": "The current display is the latest redirect URL that meets the requirements. Please confirm if the redirect URL in the application settings is consistent with the current one.",
    "authorizeOneDrive": "Confirm Entra ID application settings",
    "authorizeOneDriveDes": "Please confirm if the following Entra ID application information is still valid. If needed, please make changes.",
    "authorizeNow": "Authorize",
    "authorizeAgain": "Authorize again",
    "notGranted": "No authorized account, storage policy cannot be used.",
    "granted": "Account authorized, credential refreshed at <0>{{time}}</0>.",
    "grantedNotRefresh": "Account authorized, credential not refreshed since last startup.",
    "batchDeleteSize": "Maximum batch delete size",
    "batchDeleteSizeDes": "Limit the maximum number of files that can be deleted in a single API request. This setting will not affect user batch file deletion. If not filled, the default value <0>1000</0> will be used. This is the maximum allowed value for official S3 API.",
    "bucketPolicy": "Bucket policy",
    "cdnOrCustomDomain": "CDN or custom CNAME",
    "bucketDomain": "Bucket domain",
    "bucketDomainDes": "Fill in the CDN-accelerated domain or custom CNAME domain you have bound for the storage bucket.",
    "storageNodeInternal": "Storage node (Intranet Endpoint)",
    "chunkSizeDesOssObs": "Allowed range: 100 KB ～ 5 GB.",
    "chunkSizeDesQiniuCos": "Allowed range: 1 MB ～ 1 GB.",
    "chunkSizeDesS3": "Allowed range: 5 MB ～ 5 GB.",
    "thisIsACustomDomain": "This is a custom domain",
    "thisIsACustomDomainDes": "If you have bound a custom domain to the storage bucket, and need to manage the bucket via the custom domain, please check this option. After enabled, Cloudreve will not attempt to append the Bucket name in the request domain.",
    "addedManually": "I have set it manually",
    "accessCredential": "Access credential",
    "downloadTrafficDiagram": "Download traffic path demonstrationion",
    "downloadRelay": "Download relay",
    "downloadRelayDes": "When enabled, users' download requests will be proxyed by Cloudreve.",
    "download": "Download",
    "downloadCdn": "Download CDN",
    "useDownloadCdn": "Use CDN for download traffic",
    "skipSign": "Skip URL signature for CDN",
    "skipSignDes": "If you have enabled \"Use source auth\" for this domain in bucket settings, please check this option.",
    "cdnHost": "CDN host",
    "downloadCdnDes": "The host, protocol, and port of the URL that users use to access files will be replaced with the CDN host you specified.",
    "mediaExtractorProxy": "Proxy media extraction",
    "mediaExtractorProxyDes": "Enable this feature to extract media metadata from files that are not supported by the storage provider's native extractors. Please configure the media extractor in <0>Media processing</0>.",
    "mediaExtractorNative": "native extractors",
    "mediaExtractorOss": "Intelligent Media Management (IMM)",
    "mediaExtractorQiniu": "Qiniu DORA",
    "mediaExtractorCos": "Tencent Cloud Data Processing",
    "mediaExtractorObs": "image processing service",
    "nativeMediaMetaExts": "Enabled file extensions for <0>{{name}}</0>",
    "nativeMediaMetaExtsGeneralDes": "Separated by commas, empty value means disable <0>{{name}}</0>.",
    "nativeMediaMetaExtsRemote": "For slave storage, the default support is EXIF and music metadata, you can override this by configuring the slave node with more extractors.",
    "nativeMediaMetaExtOss": " The Intelligent Media Management (IMM) service supports processing audio, video, and images. Image processing does not require manual configuration, but if you need to process audio or video, you need to manually activate IMM and bind it to the Bucket, please refer to <0>document</0> for binding. After binding, please add the extensions you want to process to the above field.",
    "nativeMediaMetaExtQiniu": "The Qiniu DORA service supports processing common audio, video, and images, no additional configuration is required, please fill in the extensions you want to process above.",
    "nativeMediaMetaExtCos": "The Tencent Cloud Data Processing service supports processing audio, video, and images. Image processing does not require manual configuration, but if you need to process audio or video, please first go to <0>Tencent Cloud Data Processing</0> to activate and bind the storage bucket, then go to Bucket settings - Media processing to activate the image processing service. After binding, please add the extensions you want to process to the above field.",
    "nativeMediaMetaExtObs": "The image processing service supports <0>extracting image EXIF</0>. No manual configuration is required, just add the extensions you want to process above.",
    "thumbProxy": "Proxy thumbnail generation",
    "thumbProxyDes": "Enable this feature to generate thumbnails for files that do not meet the native thumbnail conditions. Cloudreve will try to generate thumbnails and upload them to the storage side. Please configure the thumbnail generator in <0>Media processing</0>.",
    "nativeThumbnailMaxSize": "Max size of native thumbnails",
    "nativeThumbnailMaxSizeDes": "Enter 0 to disable the size limit, files larger than this size will not use native thumbnails.",
    "nativeThumbNailsSupportAllExts": "Enable for all file extension",
    "nativeThumbNails": "File extensions for native thumbnails",
    "nativeThumbNailsGeneralDes": "Separated by commas, emoty value means disable native thumb, for the file extensions listed above, Cloudreve will use the native thumbnail feature of the storage provider to generate thumbnails.",
    "nativeThumbNailsGeneralRemote": " For slave storage, the builtin support is simple image and music cover thumbnails, you can override this by configuring the slave node with more generators..",
    "nativeThumbNailsGeneralOss": "For Alibaba Cloud OSS storage, <0>image processing</0> service will be used to generate thumbnails.",
    "nativeThumbNailsGeneralQiniu": "For Qiniu Cloud storage, <0>image basic processing(imageView2)</0> service will be used to generate thumbnails.",
    "nativeThumbNailsGeneralCos": "For Tencent Cloud COS storage, <0>Tencent Cloud Data Processing</0> service will be used to generate thumbnails.",
    "nativeThumbNailsGeneralObs": "For Huawei Cloud OBS storage, <0>image processing</0> service will be used to generate thumbnails.",
    "preallocate": "Pre-allocate disk space",
    "preallocateDes": "When enabled, the user's upload request will be pre-allocated disk space on the storage node, only effective on Linux or Darwin.",
    "sourceWebEdit": "Web online editing",
    "uploadRelay": "Upload relay",
    "uploadRelayDes": "If enabled, users' upload requests will be relayed to the storage node via Cloudreve, due to the inability to perform chunked uploads, please adjust the maximum upload size limit of the web server accordingly.",
    "customProxy": "Custom proxy",
    "storageNode": "Storage provider",
    "sourceWeb": "Web / Official app",
    "sourceDav": "WebDAV",
    "uploadTrafficDiagram": "Upload traffic path demonstrationion",
    "node": "Storage node",
    "nodeDes": "Please select a slave node for file storage, you can create or manage slave storage nodes in <0>Node list</0>.",
    "noBindedGroupWarning": "The current storage policy is not bound to any user group, please go to <0>Group list</0> to bind the current storage policy to a user group.",
    "nameRuleImmutable": " Modifying settings will not affect existing files in the storage policy. The Blob path is fixed after creation, even if the magic variables in it change, the path will not be updated.",
    "uniqueVarRequired": "Please include at least one unique variable: {{uuid}}, {{randomkey8}}, {{randomkey16}}.",
    "storageAndUpload": "Storage and Upload",
    "blobFolderNaming": "Blob Storage Directory",
    "blobFolderNamingDes": "The directory where file Blobs are stored, you can use <0>magic variables</0>.",
    "blobNameDes": "The name of the file Blob, you can use <0>magic variables</0>, make sure it's absolutely unique, even for multiple uploads of the same file name in same path in a short time.",
    "blobName": "Blob Name",
    "basicInfo": "Basic info",
    "editX": "Edit {{name}}",
    "noGroupBinded": "No group binded",
    "create": "Create",
    "addXStoragePolicy": "Add {{type}} storage policy",
    "loadSummary": "Load summary",
    "policySummary": "{{count}} file Blobs ({{size}})",
    "sharp": "#",
    "name": "Name",
    "type": "Type",
    "childFiles": "Chile files",
    "totalSize": "Total size",
    "actions": "Actions",
    "authSuccess": "Authorization granted.",
    "policyDeleted": "Policy deleted.",
    "newStoragePolicy": "New storage policy",
    "all": "All",
    "local": "Local",
    "remote": "Remote Node",
    "qiniu": "Qiniu",
    "upyun": "Upyun",
    "oss": "Alibaba Cloud OSS",
    "cos": "Tencent Cloud COS",
    "onedrive": "OneDrive",
    "s3": "S3 Compatible",
    "obs": "Huawei Cloud OBS",
    "refresh": "Refresh",
    "delete": "Delete",
    "edit": "Edit",
    "selectAStorageProvider": "Select a storage provider",
    "maxSizeOfSingleFile": "Max single file size",
    "maxSizeOfSingleFileDes": "Enter 0 to disable the limit.",
    "enterFileExt": "Separated by semi-colon commas, leave blank to allow all file extensions.",
    "extList": "Allowed file extensions",
    "chunkSizeDes": "Specify the chunk size for chunked uploads. A value of 0 means no chunked uploads are used, but the maximum upload size may be limited by the web server.",
    "chunkSizeDesSuffix": "{{prefix}} With chunked upload, the files uploaded by users will be sliced into chunks and uploaded to the storage side one by one. After the upload is interrupted, users can choose to continue uploading from the last uploaded chunk.",
    "chunkSize": "Chunk size",
    "policyName": "The display name of the storage policy, also used to be presented to users.",
    "magicVar": {
      "fileNameMagicVar": "File name magic variables",
      "pathMagicVar": "Path magic variables",
      "variable": "Variable",
      "description": "Description",
      "example": "Example",
      "16digitsRandomString": "16 digits random string",
      "8digitsRandomString": "8 digits random string",
      "secondTimestamp": "Timestamp",
      "nanoTimestamp": "Nano timestamp",
      "uid": "User ID",
      "originalFileName": "Original file name",
      "originFileNameNoext": "Original file name without ext",
      "extension": "File extension name",
      "uuidV4": "UUID V4",
      "date": "Date",
      "dateAndTime": "Date and time",
      "randomNumber": "Random number within range",
      "year": "Year",
      "month": "Month",
      "day": "Day",
      "hour": "Hour",
      "minute": "Minute",
      "second": "Second",
      "path": "The initial path while user uploads the file"
    },
    "storageBucket": "Storage bucket",
    "editQiniuStoragePolicy": "Edit Qiniu storage policy",
    "addQiniuStoragePolicy": "Add Qiniu storage policy",
    "wanSiteURLDes": "Before using this policy, please make sure that the address you entered in Basic Settings - Site Information - Site URL matches the actual address and <0>can be accessed properly by WAN</0>.",
    "enterQiniuBucket": "Go to <0>Qiniu dashboard</0> to create a storage bucket. Enter the \"Bucket name\" you just created.",
    "aclType": "Access control type",
    "accessTypePulic": "Public read private write",
    "accessTypePrivate": "Private read/write",
    "accessType": "Access type",
    "qiniuBucketName": "Bucket name",
    "cosObsBucketName": "Bucket name",
    "bucketType": "Bucket ACL",
    "bucketTypeDes": "Select the type of ACL for the bucket you just created.",
    "privateBucket": "Private",
    "privateDes": "Cloudreve will sign the file URL.",
    "publicBucket": "Public read",
    "publicStorage": "Public",
    "publicDes": "Not recommended, Cloudreve will directly return the file's direct link, which cannot effectively control the access of files.",
    "bucketCDNDes": "Fill in the CDN-accelerated domain name you have bound for the storage bucket.",
    "bucketCDNDomain": "CDN domain",
    "qiniuCredentialDes": "Go to Personal Center - Credential Management in the Qiniu dashboard and fill in the obtained AK, SK.",
    "ak": "AK",
    "sk": "SK",
    "cannotEnableForPrivateBucket": "If this feature is enabled for private bucket, you need to enable \"Use redirected source link\" for user groups.",
    "chunkSizeLabelQiniu": "Specify the chunk size for resumable uploads. Allowed range is 1 MB - 1 GB.",
    "corsSettingStep": "CORS policy",
    "corsPolicyAdded": "CORS policy is added.",
    "editOSSStoragePolicy": "Edit Alibaba Cloud OSS storage policy",
    "addOSSStoragePolicy": "Add Alibaba Cloud OSS storage policy",
    "createOSSBucketDes": "Go to <0>OSS Dashboard</0> to create a Bucket. Only <1>Standard</1> and <2>IA</2> storage classes are supported.",
    "ossBucketNameDes": "Enter the your specified <0>Bucket name</0>:",
    "bucketName": "Bucket name",
    "publicReadBucket": "Public read",
    "ossEndpointDes": "Go to Bucket summary page, enter the <2>Port</2> under <1>Access Over Internet</1> section, in <0>Endpoint</0> page.",
    "ossEndpointDesInternalHint": "If you need to configure Intranet or custom domain endpoint, you can set it after creating the storage policy.",
    "obsEndpointCnameHint": "If you need to configure custom domain endpoint, you can set it after creating the storage policy.",
    "endpoint": "EndPoint",
    "ossLANEndpointDes": "Leave blank means not use it. If your Cloudreve is deployed in Alibaba Cloud compute related services which are under the same availability zone as the OSS bucket, you can additionally specify a intranet endpoint, Cloudreve will try to use this endpoint on server side to reduce traffic cost.",
    "intranetEndPoint": "Intranet endpoint",
    "ossCDNDes": "Do you want to use Alibaba Cloud CDN to speed up file access?",
    "createOSSCDNDes": "Go to <0>Alibaba Cloud CDN Dashboard</0> to create a CDN domain, the source of the CDN should be your OSS bucket. Enter the CDN domain and select if you want to use HTTPS:",
    "ossAKDes": "Obtain your AccessKey in <0>Security Information Management</0> page. You can also create an AccessKey with <1>AliyunOSSFullAccess</1> permission in <2>RAM Access Control</2>.",
    "shouldNotContainSpace": "This cannot contain spaces.",
    "nameThePolicyFirst": "Name the storage policy:",
    "chunkSizeLabelOSS": "Specify the chunk size for resumable uploads. Allowed range is 100 KB - 5 GB.",
    "ossCORSDes": "This storage policy requires a CORS policy to enable uploading from browser. Cloudreve can set it up automatically for you, or you can set it up manually by following the steps in the documentation. If you have already set the CORS policy for this Bucket, this step can be skipped.",
    "letCloudreveHelpMe": "Let Cloudreve set it for me",
    "skip": "Skip",
    "editUpyunStoragePolicy": "Edit Upyun storage policy",
    "addUpyunStoragePolicy": "Add Upyun storage policy",
    "createUpyunBucketDes": "Fill in the name of the storage service you created in <0>Upyun Dashboard</0>.",
    "storageServiceName": "Service name",
    "operatorName": "Operator name",
    "operatorPassword": "Operator password",
    "tokenStatus": "Token anti-hotlinking",
    "upyunTokenDes": "It is strongly recommended to enable Token Anti-Hotlinking, go to the <0>Feature Configuration</0> panel of the created storage service, go to the <1>Access Control</1> tab, enable Token Anti-Hotlinking and set a secret.",
    "tokenEnabled": "Enable Token Anti-Hotlinking",
    "tokenDisabled": "Not use Token Anti-Hotlinking",
    "upyunTokenSecretDes": "Enter the secret of the Token Anti-Hotlinking.",
    "upyunTokenSecret": "Token Anti-Hotlinking secret",
    "editCOSStoragePolicy": "Edit COS storage policy",
    "addCOSStoragePolicy": "Add COS storage policy",
    "createCOSBucketDes": "Go to <0>COS Dashboard</0> to create a storage bucket. Go to the basic configuration page of the created bucket, and copy the <1>Bucket name</1> to above.",
    "obsBucketDes": "Go to <0>OBS Dashboard</0> to create a storage bucket. Enter the <1>Bucket name</1> you just created. Storage class only supports <2>Standard</2> or <3>Infrequent Access</3>.",
    "cosPrivateRW": "Private Read/Write",
    "cosPublicRW": "Public Read and Private Write",
    "cosAccessDomainDes": "On the overview page of the created Bucket, fill in the <1>Access Domain</1> given under the <0>Domain Information</0> section. You can also use your CNAME domain or CDN acceleration domain.",
    "obsEndpointDes": "On the overview page of the created Bucket, fill in the <1>Endpoint</1> given under the <0>Domain Information</0> section.",
    "accessDomain": "Access domain",
    "cosCDNDomainDes": "Go to <0>Tencent Cloud CDN Management Console</0> to create a CDN acceleration domain and set the source site to the COS bucket you just created. Fill in the CDN domain name below and select whether to use HTTPS.",
    "cosCredentialDes": "Fill in the access keys obtained from the <0>Access Keys</0> page of Tencent Cloud. Please make sure the pair of keys has access permission to COS services. You can also create a <2>sub-user</2> with <1>Programmatic Access</1> permission and grant it access to COS service.",
    "obsCredentialDes": "Fill in the access keys obtained from the <0>Access Keys</0> page of Huawei Cloud. You can also create a <2>IAM user</2> with <1>Programmatic Access</1> permission and grant it <3>OBS OperateAccess</3> permission.",
    "grantAccess": "Grant access",
    "grantAccessLater": "After creating the storage policy, you need to sigin in and grant access in the storage policy settings page.",
    "odHttpsWarning": "You must enable HTTPS to use OneDrive/SharePoint storage policies; after enabled, make sure to change Settings - Basic - Site Information - Site URL.",
    "editOdStoragePolicy": "Edit OneDrive/SharePoint storage policy",
    "addOdStoragePolicy": "Add OneDrive/SharePoint storage policy",
    "creatAadAppDes": "Go to <0>Microsoft Entra ID Dashboard</0>, after logging in, go to the <1>Microsoft Entra ID</1> admin panel, you can optionally use an account different from the one used to store files to login.",
    "createAadAppDes2": "Go to the <0>App Registrations</0> menu on the left and click the <1>New registration</1> button. Fill out the application registration form. Make sure <2>Supported account types</2> is selected as <3>Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)</3>; <4>Redirect URI (optional)</4> is selected as <5>Web</5> and fill in <6>{{url}}</6>; For other fields, just leave it as default.",
    "entraIdApp": "Entra ID app information",
    "aadAppIDDes": "Go to the <0>Overview</0> page in Application Management, the value of <1>Application (Client) ID</1>.",
    "aadAppID": "Application (Client) ID",
    "addAppSecretDes": "The way to create client secret: Go to the <0>Certificates & secrets</0> menu on the left side, click the <1>New client secret</1> button, and select the longest time for the <2>Expires</2>. You need to create a new client secret after the old one expires, and update the new one in the storage policy settings.",
    "aadAppSecret": "Client secret",
    "aadAccountCloud": "Microsoft Graph endpoint",
    "aadAccountCloudDes": "Please select the endpoint according to the Microsoft 365 account type you are using.",
    "multiTenant": "Worldwide public cloud",
    "gallatin": "21V Chinese cloud",
    "sharePointDes": "Do you want to store files in SharePoint?",
    "saveToOneDrive": "Store files to default OneDrive",
    "spSiteURL": "SharePoint Site URL",
    "odReverseProxyURLDes": "Do you want to use custom reverse proxy server for file downloading？",
    "odReverseProxyURL": "URL of reverse proxy server",
    "chunkSizeLabelOd": "Allowed range: 5 MB ~ 5GB, OneDrive requires it must be an integer multiple of 320 KiB (327,680 bytes).",
    "limitOdTPSDes": "Limit OneDrive API request frequency",
    "tps": "TPS limit",
    "tpsDes": "Leave blank to indicate no limit. Limit this storage policy the maximum number of API requests sent to OneDrive per second. Requests that exceed this frequency will be rate-limited. When multiple Cloudreve nodes transferring files, they each use their own token bucket, so please scale this number down as appropriate in this condition.",
    "tpsBurst": "TPS burst",
    "tpsBurstDes": "When requested is idle, Cloudreve can reserve a specified number of slots for future bursts of traffic.",
    "odOauthDes": "However, you will need to click the button below and authorize with Microsoft account login to complete the initialization before you can use it. You can re-authorize later on the Storage Policy List page.",
    "editS3StoragePolicy": "Edit AWS S3 storage policy",
    "addS3StoragePolicy": "Add AWS S3 storage policy",
    "s3BucketDes": "Go to AWS S3 dashboard to create a bucket, enter the <0>Bucket name</0> you just created:",
    "s3EndpointDes": "Specify the EndPoint (geographical node) of the storage bucket in full URL format, e.g. <0>https://bucket.region.example.com</0>.",
    "selectRegionDes": "Enter the region code of the storage bucket, e.g. <0>us-east-1</0>. For non-AWS S3 compatible storage providers, please refer to their documentation for how to fill this field.",
    "chunkSizeLabelS3": "Specify the chunk size for resumable uploads. Allowed range is 5 MB - 5 GB.",
    "policyEndpoint": "Endpoint.",
    "s3Region": "Region",
    "s3EndpointPathStyle": "Select the format of the S3 Endpoint address. Some third-party S3-compatible storage policies may require this option to work. When turned on, we will force to use of path-like format addresses, such as <0>http://s3.amazonaws.com/BUCKET/KEY</0>.",
    "usePathEndpoint": "Force path style",
    "thumbExt": "Extensions that supports thumbnails",
    "thumbExtDes": "Leave blank to indicate that the storage policy predefined set is used. Not valid for local, S3 storage policies.",
    "driverRoot": "Driver Root",
    "driverRootDes": "Choose where to save files in your OneDrive account. Changing this option will make existing files in the storage policy inaccessible.",
    "saveToDefaultOneDrive": "Save files to default OneDrive driver",
    "saveToSharePoint": "Save files to SharePoint",
    "sharePointUrlDes": "Enter the SharePoint site URL. After losing focus, the system will automatically convert it to the correct driver identifier."
  },
  "node": {
    "slave": "slave",
    "master": "master",
    "noCapabilities": "No capabilities enabled.",
    "active": "Active",
    "suspended": "Suspended",
    "deleteNodeConfirmation": "Are you sure you want to delete node {{name}}?",
    "editNode": "Edit node {{node}}",
    "thisIsMasterNodes": "You are editing a master node, which is serving the current site.",
    "enableNode": "Enable node",
    "enableNodeDes": "After enabled, the node will accept and process the features that have been enabled.",
    "name": "Name",
    "nameNode": "Node name, also used to display to users.",
    "type": "Type",
    "server": "Node endpoint",
    "serverDes": "Endpoint used for node communication. If you want to store files on this node, this address will also be exposed to the user side for file uploads.",
    "loadBalancerRankDes": "Specify a load balancing weight for this node, the value is an integer, the higher the value, the higher the probability of being selected.",
    "loadBalancerRank": "Load balancing weight",
    "slaveSecret": "Slave secret",
    "slaveSecretDes": "Secret used for slave node communication with master node. It needs to be consistent with <1>Secret</1> in the <1>Slave</1> section of the slave node configuration file.",
    "testNode": "Test node communication",
    "testNodeSuccess": "Node comminucate successfully.",
    "createArchiveDes": "Accept create archive task requests.",
    "extractArchiveDes": "Accept extract archive task requests.",
    "remoteDownloadDes": "Accept remote download task requests. After enabled, you also need to configure the remote download related information below.",
    "downloader": "Downloader",
    "aria2Des": "Start Aria2 as the same user/access level running Cloudreve on the target node server, enable the RPC service in the Aria2 config file, for more information and guidelines, refer the \"Remote download\" section of the documentation.",
    "qbittorrentDes": "Start qBittorrent as the same user running Cloudreve on the target node server, enable the Web UI service in the qBittorrent settings, for more information and guidelines, refer the \"Remote download\" section of the documentation.",
    "rpcServer": "RPC Server",
    "rpcServerHelpDes": "RPC server address contain full port number, e.g. <0>http://127.0.0.1:6800/</0>.",
    "rpcToken": "RPC Token",
    "rpcTokenDes": "Consistent with <0>rpc-secret</0> in the Aria2 configuration file; leave blank if not set.",
    "downloaderOptionDes": "Additional downloader configuration when creating a download task, written in JSON key-value format, see the <0>downloader official documentation</0> for available parameters.",
    "refreshInterval": "Status refresh interval (seconds)",
    "refreshIntervalDes": "The interval at which Cloudreve requests a refresh of the task state from the downloader. The actual refresh interval also depends on the configuration of the \"Remote download\" queue and the busyness of the downloader.",
    "waitForSeeding": "Wait for seeding",
    "waitForSeedingDes": "After enabled, when the remote download task is completed, the node will keep the task in the seeding state until the seeding completion condition in the downloader configuration is met. This feature only takes effect after the remote download task is completed, and will not affect the user's use of the downloaded files.",
    "webUIEndpoint": "Web UI endpoint",
    "webUIEndpointDes": "The endpoint of the qBittorrent Web UI, e.g. <0>http://127.0.0.1:8080/</0>.",
    "tempPath": "Temporary download directory",
    "tempPathDes": "The directory on the node that Aria2 uses as a temporary download directory. The Cloudreve process on the node needs read, write, and execute permissions on this directory, and the downloader also needs to be able to access this directory. Leave blank to use the default temporary file path.",
    "webUIUsername": "Web UI username",
    "webUIPassword": "Web UI password",
    "webUICredDes": "Leave blank if authentication is not enabled.",
    "downloaderTestPass": "Successfully connected to downloader, version: {{version}}",
    "testDownloader": "Test downloader communication",
    "addNewNode": "New node",
    "nameTheNode": "Name the node:",
    "copyBinary": "",
    "runCrSlave": "Run Cloudreve on the node with the same version as the master, and start it with the following configuration file:",
    "keepIfUpload": "If you need to use this node for storage policies in the future, please keep the following CORS configuration.",
    "storeFiles": "Store files",
    "storeFilesDes": "Use this node to store user files.",
    "storeFilesHint": "If you want to use this node for storage policies, please create a slave storage policy and select this node.",
    "runCrWithConfig": "Save the above file as <0>config.ini</0> file, and start Cloudreve with this file: <0>./cloudreve -c config.ini</0>. A slave Cloudreve instance can serve multiple Cloudreve master nodes; simply add this slave node to all master nodes and keep the secret same.",
    "inputServer": "Enter the node endpoint:",
    "testButton": "You can click the button below to test if the communication is successful.",
    "hostHeaderHint": "If there is a signature error, please check if the reverse proxy in front of the node is passing the <0>Host</0> header.",
    "features": "Enabled features",
    "remoteDownload": "Remote download",
    "refresh": "Refresh"
  },
  "group": {
    "countUser": "Count",
    "anonymous": "Anonymous user group",
    "sysGroup": "System user group",
    "adminGroup": "Admin user group",
    "#": "#",
    "name": "Name",
    "type": "Storage policy",
    "count": "Child users",
    "size": "Storage quota",
    "nameOfGroup": "Name",
    "nameOfGroupDes": "Name of the group, used to display to users.",
    "availablePolicies": "Available storage policies",
    "availablePoliciesDes": "Select the storage policies that this group can use. Modifying this setting will not affect the files uploaded by users.",
    "availablePolicyDesPro": "Multi-selectable, users can freely switch storage policies within the selected range.",
    "initialStorageQuota": "Initial storage quota",
    "initialStorageQuotaDes": "Max storage can used by single user under this group.",
    "isAdmin": "Admin group",
    "isAdminDes": "When enabled, users under this group will have admin permissions.",
    "share": "Share",
    "allowCreateShareLink": "Create share link",
    "allowCreateShareLinkDes": "If disabled, users cannot create sharing links.",
    "shareFree": "Free share link",
    "shareFreeDes": "When enabled, users can access all paid sharing links without purchasing.",
    "fileManagement": "File management",
    "allowWabDAV": "WebDAV",
    "allowWabDAVDes": "If disabled, users cannot connect to the storage via the WebDAV protocol",
    "allowWabDAVProxy": "WebDAV Proxy",
    "allowWabDAVProxyDes": "If enabled, users can configure the WebDAV to be proxyed by Cloudreve when downloading files.",
    "allowCompressTask": "Compression/Decompression tasks",
    "allowCompressTaskDes": "If enabled, users can create compression/decompression tasks.",
    "compressTask": "Compression/Decompression tasks",
    "compressTaskDes": "If enabled, users can do compression/decompression for files online.",
    "compressSize": "Maximum file size to be compressed",
    "compressSizeDes": "The maximum total file size of compression jobs that can be created by the user, fill in 0 to indicate no limit. This limit is not checked when creating compression tasks, and if the total size of the original files exceeds this limit when executing, the task will fail.",
    "decompressSize": "Maximum file size to be decompressed",
    "decompressSizeDes": "The maximum total file size of decompression jobs that can be created by the user, fill in 0 to indicate no limit.",
    "allowRemoteDownload": "Remote download",
    "allowRemoteDownloadDes": "Whether to allow users to create remote download tasks. If you need to use remote download, you also need to have nodes with remote download enabled in the <0>Node List</0>.",
    "aria2Options": "Downloader job options",
    "aria2OptionsDes": "Extra parameters for downloaders (qBittorrent or Aria2), written in JSON key-value format, see the downloader official documentation for available parameters.",
    "aria2BatchSize": "Max batch size of remote download tasks",
    "aria2BatchSizeDes": "Max number for submiting batched remote download tasks, fill in 0 to indicate no limit.",
    "migratePolicy": "Relocate storage policy",
    "migratePolicyDes": "Whether the user creates a storage policy relocation task.",
    "advanceDelete": "Advanced file deletion options",
    "advanceDeleteDes": "Once enabled, users can choose whether to keep physical files when deleting files. Please only enable this option for trusted user groups.",
    "allowSelectNode": "Allow select node",
    "allowSelectNodeDes": "When enabled, user can select preferred node before creating tasks. When disabled, the node will be load-balanced by system within the allowed nodes for the group.",
    "allowedNodes": "Allowed nodes",
    "allowedNodesDes": "Specify the nodes that this group can use to create tasks. Empty list means all nodes are available. Users can only select or be assigned nodes within this list by load balancer. Currently, the tasks covered are: remote download, file compression/decompression. Other tasks will be assigned to the master node.",
    "allNodes": "All nodes",
    "esclateAnonymity": "Escalate anonymity",
    "esclateAnonymityDes": "When enabled, users can assign higher permissions for anonymous users (write/delete/create). When disabled, users can only assign read-only permission for anonymous users. Changing this setting will not affect existing sharing links or files.",
    "allowDownloadShare": "Access shared links",
    "allowDownloadShareDes": "When disabled, users cannot view others' shared links. This setting takes precedence over the sharing link permission settings.",
    "deletedNode": "Deleted node #{{id}}",
    "maxWalkedFiles": "Max walked files",
    "maxWalkedFilesDes": "In some operations that require deep traversal of files, the maximum number of files allowed to be traversed.",
    "trashBinDuration": "Trash bin duration (seconds)",
    "trashBinDurationDes": "The retention time of files in the trash bin, files will be permanently deleted after the expiration time. Changing this setting will not affect files already in the trash bin.",
    "serverSideBatchDownload": "Serverside batch download",
    "serverSideBatchDownloadDes": "Whether to allow users to select multiple files to use the server-side relay batch download, after disabled, users can still use the pure browser based batch download feature.",
    "uploadDownload": "Upload and download",
    "getDirectLink": "Get direct link",
    "getDirectLinkDes": "Whether to allow users to get the direct link of the file.",
    "bathSourceLinkLimit": "Max size of batch direct links",
    "bathSourceLinkLimitDes": "The maximum number of files allowed for users to obtain direct links in a single batch, fill in 0 means no batch generation of direct links is allowed.",
    "redirectedSource": "Use redirected direct link",
    "redirectedSourceDes": "Recommended to enable. commended to enable. When enabled, the direct link to the file obtained by the user will be redirected by Cloudreve with a shorter link. When disabled, the direct link to the file obtained by the user becomes the ori, and is bound to the file versionginal URL to the file, and is bound to the file version. Some policies produce non-redirected direct links that do not remain persistent, see Cloudreve documents for detials.",
    "downloadSpeedLimit": "Max download speed",
    "downloadSpeedLimitDes": "Fill in 0 to indicate no limit. When the restriction is turned on, the maximum download speed will be limited when users download all files under the storage policy that supports the speed limit.",
    "anonymousHint": "This user group corresponds to the anonymous visitor who is not signed in.",
    "create": "Create",
    "copyFromExisting": "Copy from existing group?",
    "notCopy": "Not copy",
    "confirmDelete": "Are you sure you want to delete group {{group}}?",
    "new": "New group",
    "editGroup": "Edit {{group}}"
  },
  "user": {
    "createdAt": "Created at",
    "originUserGroup": "Original user group",
    "originUserGroupDes": "User group that the user belongs to before purchasing the current group, the current group will revert to this group after expiration.",
    "noOriginUserGroup": "No",
    "groupExpired": "Group expired date",
    "groupExpiredDes": "ISO8601 format group expired date, leave blank means the group is permanent.",
    "openUserFiles": "Open user files",
    "id": "ID",
    "idValue": "{{id}} ({{hash_id}})",
    "avatar": "Profile picture",
    "removeAvatar": "Remove profile picture",
    "userDialogTitle": "User details",
    "2FAEnabled": "2FA enabled",
    "qqEnabled": "QQ enabled",
    "logtoEnabled": "Logto enabled",
    "deleted": "User deleted.",
    "new": "New user",
    "filter": "Filter",
    "emptyNoFilter": "Leave blank means no filter.",
    "selectedObjects": "{{num}} objects selected.",
    "nick": "Display name",
    "email": "Email",
    "group": "Group",
    "status": "Status",
    "usedStorage": "Used storage",
    "status_active": "Active",
    "status_inactive": "Inactive",
    "status_manual_banned": "Manual blocked",
    "status_sys_banned": "System blocked",
    "toggleBan": "Block/Unblock",
    "filterCondition": "Filter conditions",
    "all": "All",
    "userStatus": "User status",
    "apply": "Apply",
    "editUser": "Edit {{nick}}",
    "password": "Password",
    "passwordDes": "Leave blank means no modification.",
    "groupDes": "Group that the user belongs to.",
    "2FA": "2FA",
    "notEnabled": "Not enabled",
    "reset2Fa": "Disable",
    "reset": "Reset",
    "confirmDelete": "Are you sure you want to delete user {{user}}?",
    "deleteXUsers": "Delete {{num}} users",
    "confirmBatchDelete": "Are you sure you want to delete {{num}} users?",
    "calibrateStorage": "Calibrate storage",
    "calibrateStorageSuccess": "Storage calibrated successfully."
  },
  "file": {
    "deleteXFiles": "Delete {{num}} files",
    "confirmBatchDelete": "Are you sure you want to delete {{num}} files?",
    "confirmDelete": "Are you sure you want to delete file {{file}}?",
    "haveShares": "Shared",
    "haveDirectLinks": "Have redirected direct links",
    "directLinkId": "Link identifier",
    "directLinks": "Redirected direct links",
    "noRecords": "No records",
    "speed": "Speed limit",
    "downloads": "Downloads",
    "shareLink": "Share links",
    "shareLinkNum": "{{num}} (<0>View</0>)",
    "blobType": "Type",
    "noEntities": "No Blobs",
    "blobs": "Blobs",
    "creator": "Creator",
    "source": "Source",
    "key": "Key",
    "value": "Value",
    "isPublic": "Public",
    "noMetadata": "No metadata",
    "metadata": "Metadata",
    "id": "ID",
    "primaryStoragePolicy": "Primary storage policy",
    "fileDialogTitle": "File details",
    "name": "File name",
    "deleteAsync": "Delete task will be executed in background.",
    "forceDelete": "Force delete",
    "size": "Size",
    "sizeUsed": "Used storage",
    "uploader": "Owner",
    "createdAt": "Created at",
    "uploading": "Uploading",
    "unknownUploader": "Unknown",
    "uploaderID": "Owner ID",
    "searchFileName": "Search file name",
    "storagePolicy": "Storage policy",
    "selectTargetUser": "Select target user",
    "importTaskCreated": "Import task created, you can view its status in the Tasks - General.",
    "manuallyPathOnly": "The selected storage policy only supports manually inputting path.",
    "selectFolder": "Select folder",
    "importExternalFolder": "Import external folders",
    "importExternalFolderDes": "You can import existing files and directory structures from your storage policy into Cloudreve. The import operation will not take up additional physical storage, but will still deduct the user's used storage quota as normal. The import will be halted when there is not enough quota.",
    "storagePolicyDes": "Select the storage policy where the files to be imported are currently stored.",
    "targetUser": "Target user",
    "targetUserDes": "Select which user's file system you want to import the files to, you can search users by nickname or email.",
    "srcFolderPath": "Source folder path",
    "select": "Select",
    "selectSrcDes": "The path of the directory to be imported on the storage side.",
    "dstFolderPath": "Destination folder path",
    "dstFolderPathDes": "Path in the user's file system to hold all imported files.",
    "recursivelyImport": "Recursively import",
    "recursivelyImportDes": "Whether to import all subdirectories under the directory recursively.",
    "createImportTask": "Create import task",
    "unlink": "Unlink (Keep physical file)"
  },
  "entity": {
    "refenenceCount": "Reference count",
    "waitForRecycle": "Waiting for recycle",
    "entityDialogTitle": "Blob details",
    "uploadSessionID": "Upload session ID",
    "referredFiles": "Referred files",
    "confirmBatchDelete": "Are you sure you want to delete {{num}} Blobs?",
    "deleteXEntities": "Delete {{num}} Blobs",
    "forceDelete": "Force delete",
    "forceDeleteDes": "Whether to delete the Blob record regardless of whether the physical file is deleted."
  },
  "event": {
    "initiator": "Initiator",
    "event": "Event",
    "userID": "User ID",
    "ip": "IP",
    "type": "Type",
    "correlationId": "Correlation ID",
    "fileID": "File ID",
    "emailSend": "Send email \"{{title}}\" to {{email}}",
    "emailFailed": "Email queue failed to start",
    "signinFailed": "Sign in failed: {{reason}}",
    "createDavAccount": "Create WebDAV account: {{account}}",
    "updateDavAccount": "Update WebDAV account: {{account}}",
    "deleteDavAccount": "Delete WebDAV account: {{account}}",
    "pointsChange": "Points change: {{points}}",
    "storageAdded": "Purchased {{size}} storage",
    "nickChange": "Display name changed from {{old}} to {{new}}",
    "eventDialogTitle": "Event details",
    "userAgent": "User agent",
    "linkedUser": "Linked user",
    "datetime": "Time",
    "linkedFile": "Linked file",
    "linkedEntity": "Linked Blob",
    "linkedShare": "Linked share",
    "rawContent": "Raw content",
    "confirmDelete": "Are you sure you want to delete this event?",
    "deleteXEvents": "Delete {{num}} events",
    "confirmBatchDelete": "Are you sure you want to delete {{num}} events?"
  },
  "share": {
    "confirmBatchDelete": "Are you sure you want to delete {{num}} shares?",
    "confirmDelete": "Are you sure you want to delete this share?",
    "deleteXShares": "Delete {{num}} shares",
    "shareDialogTitle": "Share details",
    "shareLink": "Share link",
    "deleted": "File deleted",
    "srcFileName": "Source file",
    "views": "Views",
    "downloads": "Downloads",
    "price": "Price",
    "autoExpire": "Auto expire",
    "owner": "Owner",
    "createdAt": "Created at",
    "private": "Hide from profile page",
    "yes": "Yes",
    "no": "No",
    "afterNDownloads": "After {{num}} download(s).",
    "none": "None",
    "srcType": "Source object type",
    "folder": "Folder",
    "file": "File"
  },
  "task": {
    "confirmDelete": "Are you sure you want to delete this task?",
    "confirmBatchDelete": "Are you sure you want to delete {{num}} tasks?",
    "deleteXTasks": "Delete {{num}} tasks",
    "blobID": "Blob ID",
    "retryIndex": "Retry index",
    "entityError": "Blobs that failed to recycle",
    "updatedAt": "Updated at",
    "taskDialogTitle": "Task details",
    "explicitEntityRecycle": "Explicitly recycle files Blobs: {{blobs}}",
    "entityRecycleRoutine": "Scan and recycle files Blob",
    "mediaMetadata": "Extract media meta of Blob <0>#{{entityID}}</0>",
    "uploadSentinelCheck": "Check status of upload session {{uploadSessionID}}",
    "remoteDownload": "Remote download: ",
    "owner": "Owner",
    "content": "Content",
    "status": "Status",
    "create_archive": "Create archive",
    "extract_archive": "Extract archive",
    "relocate": "Relocate",
    "remote_download": "Remote download",
    "media_meta": "Media metadata",
    "entity_recycle_routine": "Entity recycle routine",
    "explicit_entity_recycle": "Explicit entity recycle",
    "upload_sentinel_check": "Upload sentinel check",
    "type": "Type",
    "node": "Distributed node",
    "createdBy": "Created by",
    "ready": "Ready",
    "downloading": "Downloading",
    "paused": "Paused",
    "seeding": "Seeding",
    "error": "Error",
    "finished": "Finished",
    "canceled": "Canceled/Stopped",
    "unknown": "Unknown",
    "errorMsg": "Error message"
  },
  "payment": {
    "tradeNo": "Trade No.",
    "productType": "Product type",
    "providerID": "Provider ID",
    "status": "Status",
    "deleteXPayments": "Delete {{num}} payments"
  },
  "vas": {
    "confirmDelete": "Are you sure you want to delete these orders?",
    "vas": "VAS",
    "reports": "Reports",
    "orders": "Payments",
    "initialFiles": "Initial files",
    "initialFilesDes": "Specify the files that the user initially owns after signups. Enter a file ID to search existing files.",
    "filterEmailProvider": "Filter email provider",
    "filterEmailProviderDisabled": "Disabled",
    "filterEmailProviderWhitelist": "Whitelist",
    "filterEmailProviderBlacklist": "Blacklist",
    "filterEmailProviderDes": "Restrict the email provider for registration, third-party SSO login is not restricted.",
    "filterEmailProviderRule": "Email domain filter rules",
    "filterEmailProviderRuleDes": "Separate multiple fields with a semi-colon comma.",
    "qqConnect": "QQ Connect",
    "qqConnectHint": "When creating the application, please fill in the callback URL: {{url}}",
    "enableQQConnect": "Enable QQ Connect",
    "enableQQConnectDes": "Whether to allow binding QQ, use QQ to login website.",
    "loginWithoutBinding": "Login without registration",
    "loginWithoutBindingDes": "After enabled, if a user sign-in from the 3rd-party but does not have a linked account, the system will create an account for them. Users sign-in  this way will only be able to sign in using this 3rd-party in the future.",
    "appid": "APP ID",
    "appidDes": "The APP ID obtained from the application management page.",
    "appKey": "APP KEY",
    "appKeyDes": "The APP KEY obtained from the application management page.",
    "overuseReminder": "Overuse reminder",
    "overuseReminderDes": "Reminder email template sent to users after their capacity exceeds the limit due to expired VAS.",
    "vasSetting": "VAS settings",
    "storagePack": "Storage packs",
    "purchasableGroups": "Memberships",
    "giftCodes": "Gift codes",
    "enable": "Enable",
    "appID": "App- ID",
    "appIDDes": "APPID of payment application.",
    "rsaPrivate": "RSA application private key",
    "rsaPrivateDes": "The RSA2 (SHA256) private key for the payment application, typically generated by you. For details, refer to <0>Generating RSA Keys</0>.",
    "alipayPublicKey": "Alipay public key",
    "alipayPublicKeyDes": "Provided by Alipay, available in Application Management - Application Information - API Signing Method.",
    "wechatPay": "WeChat Pay",
    "applicationID": "Application ID",
    "applicationIDDes": "Public number or mobile application appid applied by merchants.",
    "merchantID": "Merchant number",
    "merchantIDDes": "The merchant number generated and issued by WeChat Pay.",
    "apiV3Secret": "API v3 secret",
    "apiV3SecretDes": "The merchant needs to set the secret in [Merchant Platform] - [API Security] before the request WeChat Pay. The length of the key is 32 bytes.",
    "mcCertificateSerial": "Merchant certificate serial number",
    "mcCertificateSerialDes": "Navigate to [API Security] - [API Certificate] - [View Certificate] to view the merchant API certificate serial number.",
    "mcAPISecret": "Merchant API Secrey",
    "mcAPISecretDes": "Content of the secret file apiclient_key.pem.",
    "payjs": "PAYJS",
    "payjsWarning": "This service is provided by <0>PAYJS</0>, a third-party platform, and any disputes arising from it are not the responsibility of Cloudreve developers.",
    "mcNumber": "Merchant number",
    "mcNumberDes": "Available in the PAYJS admin panel home page.",
    "communicationSecret": "Communication key",
    "otherSettings": "Other Settings",
    "banBufferPeriod": "Suspend buffer period (seconds)",
    "banBufferPeriodDes": "The maximum length of time that a user can maintain the capacity overage status, beyond which the user will be suspend by the system.",
    "allowSellShares": "Allow pricing for shares",
    "allowSellSharesDes": "Once enabled users can set a credit price for sharing and credit will be deducted for downloading.",
    "creditPriceRatio": "Credit arrival rate (%)",
    "creditPriceRatioDes": "The rate of credits actually arriving to the sharer for the purchase of a share with a set price for download.",
    "creditPrice": "Credit price (penny)",
    "creditPriceDes": "Price when recharging credits",
    "add": "Add",
    "name": "Name",
    "price": "Price",
    "duration": "Duration",
    "size": "Size",
    "actions": "Actions",
    "orCredits": " Or {{num}} credits",
    "highlight": "Highlight",
    "yes": "Yes",
    "no": "No",
    "productName": "Product name",
    "qyt": "Qyt.",
    "code": "Code",
    "status": "Status",
    "invalidProduct": "Invalid product",
    "used": "Used",
    "notUsed": "Not used",
    "generatingResult": "Result",
    "addStoragePack": "Add storage pack",
    "editStoragePack": "Edit storage pack",
    "productNameDes": "Product display name",
    "packSizeDes": "Size of storage pack",
    "durationDay": "Duration (day)",
    "durationDayDes": "Valid duration of each storage pack.",
    "priceYuan": "Price (Yuan)",
    "packPriceDes": "Price of storage pack.",
    "priceCredits": "Price (Credits)",
    "priceCreditsDes": "The price when using credits to buy, fill in 0 means you can't use credits to buy.",
    "editMembership": "Edit membership",
    "addMembership": "Add membership",
    "group": "Group",
    "groupDes": "User groups upgraded after purchase.",
    "durationGroupDes": "The validity of the purchase time of the user group unit upgraded after the purchase.",
    "groupPriceDes": "Membership price",
    "productDescription": "Product description (Once per line)",
    "productDescriptionDes": "Description of the product displayed on the purchase page.",
    "highlightDes": "After enabled, it will be highlighted on the product selection page.",
    "generateGiftCode": "Generate gift codes",
    "numberOfCodes": "Number of codes",
    "numberOfCodesDes": "Number of gift codes to generate.",
    "linkedProduct": "Linked product",
    "productQyt": "Product qyt.",
    "productQytDes": "For credit products, this is the number of points and other products are multiples of durations.",
    "freeDownload": "Download shared files for free",
    "freeDownloadDes": "After enabled, user can download paid shares for free.",
    "credits": "Credits",
    "markSuccessful": "Marked successfully.",
    "markAsResolved": "Mark as resolved",
    "reportedContent": "Reported content",
    "reason": "Reason",
    "description": "Description",
    "reportTime": "Reported at",
    "invalid": "[Invalid]",
    "deleteShare": "Delete share link",
    "orderDeleted": "Order deleted.",
    "orderName": "Name",
    "product": "Product",
    "orderNumber": "Trade No.",
    "amount": "Amount",
    "paidBy": "Paid with",
    "orderOwner": "Created by",
    "unpaid": "Unpaid",
    "paid": "Paid",
    "shareLink": "Shared link",
    "mobileApp": "Mobile application",
    "showAppPromotion": "Show promotion page",
    "showAppPromotionDes": "After enabled, user can see the guidance page for mobile application in \"Connect & Mount\" page.",
    "customPaymentName": "Payment method name",
    "customPaymentNameDes": "Name of the payment method used to display to the user.",
    "customPaymentSecretDes": "Secret key for signing payment requests.",
    "customPaymentEndpoint": "Payment API URL",
    "customPaymentEndpointDes": "URL to be requested when creating a payment order.",
    "appFeedback": "Feedback URL",
    "appForum": "User forum URL",
    "appLinkDes": "Will be displayed in mobile client, leave empty to hide menu item, This setting will take effect only if VOL license is valid."
  },
  "pro": {
    "title": "Pro edition exclusive features",
    "description": "The feature you are trying to access is only available in the Cloudreve Pro edition, upgrade to unlock all advanced features.",
    "proInclude": "Pro edition includes:",
    "shareLinkCollabration": "Collaboration via share links",
    "filePermission": "File permission management",
    "multipleStoragePolicy": "Multiple storage policies and directory storage policy switching",
    "auditAndActivity": "File and system activity logs",
    "vasService": "VAS service and credit system",
    "sso": "SSO single sign-on",
    "more": "......",
    "later": "Maybe later",
    "learnMore": "Learn more"
  }
}