{"en":{"blogkit":{"plugin":{"readingTime":"{n} min read","words":"{n} words","toc":"On this page","share":"Share","copyLink":"Copy link","copied":"Link copied","author":"Written by","authorPosts":"{n} posts","morePosts":"More posts","popular":"Popular posts","tag":"Tag: {tag}","category":"Category: {name}","authorArchive":"Posts by {name}","noPosts":"No posts yet.","views":"{n} views"},"comments":{"title":"Comments","count":"No comments | 1 comment | {n} comments","empty":"Be the first to comment.","name":"Name","email":"E-mail (not published)","url":"Website (optional)","content":"Your comment","submit":"Post comment","reply":"Reply","replyingTo":"Replying to {name}","cancelReply":"Cancel","pending":"Thanks! Your comment is awaiting moderation.","posted":"Comment posted.","closed":"Comments are closed.","postNotFound":"This post does not accept comments.","parentMissing":"The comment you replied to is no longer available.","author":"Author","remember":"Remember me on this device"},"newsletter":{"title":"Get new posts by e-mail","hint":"No spam. Unsubscribe any time.","email":"Your e-mail","submit":"Subscribe","pending":"Almost done: check your inbox and confirm the subscription.","active":"You are subscribed. Thank you!","confirmed":"Subscription confirmed. Thank you!","unsubscribed":"You have been unsubscribed.","invalidLink":"This link is invalid or has expired.","working":"One moment…","resubscribed":"Your subscription is back on. Thank you!","unsubscribe":"Unsubscribe","resubscribe":"Subscribe again","unsubscribedHint":"You will not get new posts by e-mail any more. Changed your mind? Turn it back on with one click."},"admin":{"menu":"Comments","subscribers":"Subscribers","notActive":"The blog plugin is not active (enable it in Plugins).","status":{"pending":"Pending","approved":"Approved","spam":"Spam","trash":"Trash","all":"All","active":"Active","unsubscribed":"Unsubscribed"},"approve":"Approve","unapprove":"Unapprove","spam":"Spam","trash":"Trash","delete":"Delete permanently","reply":"Reply","send":"Send","confirmDelete":"Delete the selected comments permanently?","search":"Search comments","empty":"Nothing here.","on":"on","selected":"{n} selected","subscribersHint":"Sign-ups from the newsletter form. Double opt-in addresses stay pending until confirmed.","import":"Import","importHint":"Paste addresses, one per line or comma separated. They are added as active.","imported":"{added} added, {skipped} skipped","export":"Export CSV","mailings":"Newsletters","sendPost":"Send a post","postId":"Post ID","queued":"Queued; it is sent in batches by the scheduled task.","mailingStatus":{"queued":"Queued","sending":"Sending","done":"Sent","failed":"Failed"},"sent":"{sent} sent, {failed} failed","settings":"Blog settings"}},"admin":{"login":{"email":"Email","failed":"Login failed","password":"Password","submit":"Sign in","title":"Admin Login","verifyLabel":"I am not a robot","verifyRequired":"Please complete the verification","invalidCredentials":"Invalid email or password, please try again","tooManyAttempts":"You’ve tried signing in a few times. Please wait about 5 minutes and try again — thank you.","networkError":"Network error, please check your connection","forgot":"Forgot password?"},"nav":{"cases":"Cases","categories":"Categories","contacts":"Contacts","dashboard":"Dashboard","i18n":"Languages","logout":"Sign out","media":"Media","pages":"Pages","posts":"Posts","productCategories":"Product Categories","products":"Products","settings":"Settings","users":"Users","viewSite":"View site","translations":"Translations","languages":"Languages","email":"Email","tasks":"Scheduled Tasks","seo":"SEO","cache":"Cache","plugins":"Plugins","tools":"Tools","security":"Security","redirects":"Redirects","audit":"Audit log","account":"Account security","menu":"Menu","menus":"Menus","backups":"Backups","collections":"Content types","forms":"Forms","signIn":"Sign-in methods","home":"Homepage"},"seo":{"title":"SEO & AI GEO","perLocale":"Per-language SEO","global":"Global settings","tabSeo":"SEO","tabGeo":"AI GEO","perLocaleHint":"Title, description and keywords per language; hreflang and canonical tags are emitted automatically.","sitemap":"Sitemap","sitemapHint":"/sitemap.xml is a multilingual index pointing at /__sitemap__/LANG.xml. Every entry carries a last-modified time that follows your content.","matomo":{"title":"Analytics (Matomo)","hint":"With the Matomo URL and site ID set, the public site reports page views (client-side navigation too), referrers, site search, outlinks and downloads, 404 pages, JavaScript errors, time on page and load timings, and events such as forms and orders; server 5xx errors are recorded as events. Admin pages are not tracked.","url":"Matomo URL","siteId":"Site ID","cookieless":"Cookieless","cookielessHint":"No cookies (no consent banner needed for EU visitors); visitors are counted per day.","open":"Open reports"},"preconnect":{"title":"Preconnect","hint":"Public pages open these connections early (<link rel=\"preconnect\">), saving the 100-300 ms of DNS and TLS before the first request. The Matomo server is included automatically once Matomo is set up. Other origins (an image CDN, a font service): one per line, https only, 6 at most."},"geoIntro":"AI summary","geoIntroHint":"How the site introduces itself to AI search and answer engines (ChatGPT, Claude, Perplexity, Gemini). Served in /llms.txt and /api/public/ai-summary.","organization":"Organization (structured data)","organizationHint":"Generates schema.org Organization / WebSite JSON-LD so search engines and AI recognize the entity behind the site.","llms":"llms.txt","llmsHint":"Publishes an llmstxt.org index and a full-text dump that language models can read directly.","crawlers":"AI crawler policy","crawlersHint":"Written to robots.txt. Allowing answer engines helps the site get cited; training-only crawlers can be blocked separately.","allowAll":"Allow all","blockTraining":"Block training","blockAll":"Block all","allow":"Allow","disallow":"Disallow","preview":"Preview URLs","purpose":{"training":"model training","search":"AI search / answers","both":"training + search"},"fields":{"siteName":"Site name","siteTitle":"SEO title","siteDescription":"Meta description","siteKeywords":"Meta keywords","ogImage":"Default share image","googleVerification":"Google verification","bingSiteVerification":"Bing verification","baiduVerification":"Baidu verification","robotsTxt":"Extra robots rules","orgType":"Organization type","orgLogo":"Logo URL","orgSameAs":"Official profiles","geoSummary":"AI summary","geoAudience":"Audience and service area","geoLlmsTxt":"Publish /llms.txt","geoLlmsFull":"Publish /llms-full.txt (full text)"},"hints":{"siteName":"Site name shown for this language; empty falls back to the global name.","siteTitle":"Browser tab and search result title.","siteDescription":"Search snippet, 150-160 characters recommended.","siteKeywords":"Comma separated.","ogImage":"Default social share image URL.","robotsTxt":"Custom rules appended to robots.txt.","orgLogo":"PNG/SVG, at least 512x512 recommended.","orgSameAs":"One per line: LinkedIn, GitHub, X, WeChat page, etc.","geoSummary":"In 2-5 sentences: who you are, what you do, why you are different. AI engines quote this directly.","geoAudience":"e.g. Manufacturing and retail companies in China and Southeast Asia."}},"email":"Email","tasks":{"title":"Scheduled Tasks","newTask":"New Task","editTask":"Edit Task","empty":"No scheduled tasks yet","enabled":"Enabled","disabled":"Disabled","lastRun":"Last run","run":"Run now","logs":"Logs","noLogs":"No execution logs","executed":"Task executed","headers":"Headers","body":"Request Body"},"dashboard":"Dashboard","writePost":"Write Post","recentUpdates":"Recent Updates","noContent":"No content yet","posts":"Posts","pages":"Pages","published":"Published","drafts":"Drafts","categories":"Categories","media":"Media","status":"Status","noCategories":"No categories yet","noContacts":"No contact records","noProducts":"No products yet","noSettings":"No settings yet","noTranslations":"No translations yet","noLanguages":"No languages configured","confirmDelete":"Delete \"{name}\"? This action cannot be undone.","categoryDeletedHint":"Posts in this category will become uncategorized.","confirmDeleteLanguage":"Delete language \"{name}\" ({code})? Translation data will not be deleted.","name":"Name","slug":"Slug","description":"Description","actions":"Actions","edit":"Edit","delete":"Delete","cancel":"Cancel","create":"Create","update":{"available":"NuxtCMS v{latest} is available (you run v{current})","hint":"Run the upgrade command in the site project: it installs, migrates the database, builds and deploys.","copy":"Copy upgrade command","changelog":"Changelog"},"refresh":"Refresh","searchNameEmail":"Search name/email/content…","allStatuses":"All statuses","statusNew":"New","statusRead":"Read","statusReplied":"Replied","message":"Message","time":"Time","languageCode":"Language code","languageName":"Language name","languageAdded":"Language updated","languageAddFailed":"Add failed","languageUpdateFailed":"Update failed","languageDeleted":"Delete failed","fillAllFields":"Please fill in all fields","serverRestarting":"Server restarting…page will auto-refresh in a few seconds","loadFailed":"Load failed","slugHint":"Leave empty to auto-generate","operationFailed":"Operation failed","deleteFailed":"Delete failed","password":"Password","role":"Role","roleAdmin":"Admin","roleEditor":"Editor","passwordHint":"Leave empty to keep unchanged","passwordMinLength":"At least 6 characters","me":"(me)","updated":"Updated","created":"Created","deleted":"Deleted","confirmDeleteUser":"Delete user \"{name}\"?","editUser":"Edit User","newUser":"New User","mediaLibrary":"Media Library","uploadImage":"Upload Image","searchFilename":"Search filename…","mediaStorageHint":"Files stored in R2 (local filesystem in dev). Max 5MB per file.","uploadComplete":"Upload complete","midCopies":{"button":"Make medium-quality copies","progress":"Working {done}/{total}","done":"{done} images checked, {made} medium-quality copies made, {failed} failed","failed":"Could not make the medium-quality copies"},"uploadFailed":"Upload failed","linkCopied":"Link copied","copyFailed":"Copy failed","confirmDeleteMedia":"Delete this media file?","mediaEmpty":"Media library is empty","mediaEmptyHint":"Click upload button to add images.","fileTooLarge":"{name} is too large","maxFileSize":"Please upload images under 5MB","upload":"Upload file","loadMore":"Load more","mediaPickerHint":"Click an image to insert it; a new upload is inserted right away.","mediaNoMatch":"No matching files.","mediaEmptyPicker":"The media library is empty. Upload an image first.","insertFromLibrary":"Insert image from media library","productManagement":"Products","newProduct":"New Product","searchName":"Search name…","allLanguages":"All languages","language":"Language","category":"Category","updatedAt":"Updated","siteSettings":"Site Settings","newSetting":"New","searchKeyOrValue":"Search key or value…","all":"All","globalSettings":"Global","localizedSettings":"Localized","keyName":"Key","currentValue":"Value","localizedBadge":"Localized","emptyValue":"(empty)","translationManagement":"Translations","translated":"Translated","untranslated":"Untranslated","translationKey":"Translation Key","notTranslated":"(Not translated)","languageManagement":"Languages","generatePacks":"Generate Packs","addLanguage":"Add Language","noteTitle":"Note","languageHintRestart":"After adding or removing languages, restart the dev server (or redeploy) for new URL routes to take effect.","languageHintGenerate":"After editing translations, click \"Generate Packs\" to write database translations to i18n/locales/*.json files.","bcp47Tag":"BCP47 Tag","displayName":"Display Name","defaultBadge":"Default","fallbackBadge":"Fallback","setDefault":"Set as default","editLanguage":"Edit Language","quickSelect":"Quick select:","langCodeDesc":"Short code for URL, e.g. ja, ko, vi","bcp47Desc":"Full language tag, e.g. ja-JP, ko-KR","displayNameDesc":"Name shown in language switcher","add":"Add","save":"Save","configUpdated":"Config updated, page will auto-refresh","packGenerated":"Language packs generated","generateFailed":"Generation failed","loading":"Loading…","emailCfg":{"title":"Email Configuration","smtpSettings":"SMTP Settings","smtpHost":"SMTP Host","smtpPort":"SMTP Port","smtpUser":"Username","smtpPass":"Password","fromAddress":"From Address","fromName":"From Name","testTitle":"Send Test Email","sendTest":"Send Test","testSent":"Test email sent successfully","testFailed":"Failed to send test email"},"cache":{"title":"API Cache","settings":"Cache Settings","description":"When enabled, frontend GET responses matching the \"Cached API paths\" rules are stored as file cache (Cloudflare Cache API in production). The default scope is /api/public/* with a 12 hour TTL. Publishing posts, products, or settings invalidates the cache automatically; you can also clear it manually.","enabled":"Enable cache","enabledHint":"Cache public frontend API responses","ttlHours":"TTL (hours)","ttlHint":"1–168 hours, default 12","clear":"Clear cache","confirmClear":"Clear the public API cache? The next visit will rebuild it from the database.","cleared":"Cache cleared","status":"Status","driver":"Driver","driverFs":"Local files (.data/cache/public-api)","driverCf":"Cloudflare Cache API","version":"Cache version","clearedAt":"Last cleared","never":"Never","keyCount":"Entries","keyCountCf":"Edge cache cannot be listed; clearing bumps the version","recentKeys":"Keys in current version","excludes":"Excluded APIs","excludesHint":"Matching /api/public GET requests skip the cache and always hit the origin. Supports exact path, prefix, wildcards (* ?), substring, and regex. Paths without a leading / are prefixed with /api/public/.","excludesEmpty":"No exclude rules yet. All public frontend APIs are cached.","addExclude":"Add rule","quickAdd":"Quick add","modeExact":"Exact","modePrefix":"Prefix","modeWildcard":"Wildcard","modeContains":"Contains","modeRegex":"Regex","includes":"Cached API paths","includesHint":"Only GET requests matching these rules are cached. Leave empty (or keep the default) to cache everything under /api/public/**. Paths must live under /api/; /api/admin, /api/auth, /api/setup, /api/docs and /api/media are never cached. Changing the scope clears the existing cache.","includesEmpty":"No path rules yet. The default scope /api/public/** will be cached.","addInclude":"Add path","includesDefaultActive":"Using the default scope: /api/public/**","includesCustomActive":"Using a custom cache scope","includesReset":"Reset to default"},"plugins":{"title":"Plugins","tabInstalled":"Installed","tabMarket":"Marketplace","tabAccount":"Account & licenses","tabDeveloper":"Developer","domain":"Licensed domain","cronMissing":"NUXT_CRON_SECRET is not set","cronMissingHint":"Plugins with scheduled tasks (e-mail notifications, search push) and the daily license re-check need the cron dispatcher. Set NUXT_CRON_SECRET and deploy the cron Worker.","emptyInstalled":"No plugins installed yet","browseMarket":"Browse the marketplace","free":"Free","credits":"{n} credits","source_official":"Official","source_local":"Local","source_package":"Package","license_active":"Licensed","license_none":"Unlicensed","license_expired":"Expired","license_revoked":"Revoked","license_invalid":"Invalid","license_domain_mismatch":"Domain mismatch","license_unknown":"Unknown","license_missing":"Not installed","capInject":"{n} snippet(s)","configure":"Settings","verify":"Verify license","uninstall":"Uninstall","confirmUninstall":"Uninstall \"{name}\"? Its scheduled tasks are removed too.","uninstalled":"Uninstalled","licenseValid":"License is valid","licenseInvalid":"License is not valid","required":"\"{name}\" is required","secretKept":"Saved. Leave blank to keep it","licenseKey":"License key","licenseKeyHelp":"A key bought on the website or issued by an administrator, bound to this domain","licenseKeyCurrent":"Current: {key}. Enter a new key to replace it","offline":"The plugin hub is unreachable","offlineHint":"Showing the official plugins bundled with the framework. Free plugins install normally; paid plugins need the hub for licensing","offlineInstall":"Installed from the bundled copy","search":"Search plugins","openHub":"Open the plugin hub","emptyMarket":"No matching plugins","packageKind":"Package (redeploy)","installedVersion":"Installed v{version}","contactLicense":"Request a license","installTrial":"Install","buy":"Buy for {n} credits","update":"Update to v{version}","install":"Install","confirmPurchase":"Spend {credits} credits on \"{name}\" and license it to this domain?","updatedTo":"Updated to v{version}","installed":"Installed","needsLicenseHint":"Paid plugins only run once licensed: buy it, or enter a license key in its settings","bindToBuy":"To buy plugins and see credits and licenses, bind your website account first:","requestSent":"Sent. We will get back to you soon","requestHint":"Tell us what you need (your domain {domain} is included) and we will issue a license or a quote.","requestPlaceholder":"e.g. licenses for 3 sites / a 7-day trial","send":"Send","bindTitle":"Bind your website account","bindStep1":"Create an account:","bindStep2":"Sign in and create an API token under Account → API tokens:","bindStep3":"Paste the token below. It is stored on the server only and never sent to browsers.","bind":"Bind","bound":"Account bound","boundAs":"Bound account","balance":"Credits","rechargeHint":"Credits are topped up by an administrator (no online payment yet). Once added you can buy plugins here directly.","contactAdmin":"Contact us to top up","manageAccount":"Manage account","unbind":"Unbind","confirmUnbind":"After unbinding you cannot buy plugins; existing licenses keep working. Continue?","licenses":"My licenses","noLicenses":"No licenses yet","plugin":"Plugin","importTitle":"Import a manifest","importHint":"Paste or choose a nuxtcms.plugin.json (runtime plugin). Meant for development and private plugins; paid plugins come from the hub.","useSample":"Use sample","invalidJson":"Invalid JSON","devTitle":"Plugin development","devRuntime":"A runtime plugin is a JSON manifest declaring settings, injected snippets, CSP sources, event webhooks and scheduled tasks. Installed online, no rebuild.","devPackage":"A package plugin is a Nuxt layer (pages, components, APIs). Install it with the CLI, then rebuild and deploy:","devEvents":"Events you can listen to:","devDocs":"Plugin developer docs","packageTitle":"This is a package plugin","packageHint":"Package plugins change the build. Run this in the project directory (or CI), then rebuild and deploy:","copy":"Copy command","cat_analytics":"Analytics","cat_marketing":"Marketing & chat","cat_notification":"Notifications","cat_seo":"SEO","cat_developer":"Developer","cat_content":"Content","cat_commerce":"Commerce","cat_security":"Security","cat_other":"Other","planUntil":"until {date}"},"scheduled":"Scheduled","revisions":{"button":"History","title":"Revisions","hint":"(saved before every update, last 30 kept)","loading":"Loading…","empty":"No revisions yet","pick":"Pick a revision on the left","close":"Close","restore":"Restore this revision","confirmRestore":"Replace the current content with this revision? The current content is kept as a revision first.","restored":"Revision restored","restoreFailed":"Restore failed"},"security":{"title":"Security verification","intro":"Choose the human check for admin login, contact form, comments, newsletter and checkout. Every submission is verified on the server.","current":"Active: {provider}","scenesOn":"on {scenes}","forced":"Forced to \"{provider}\" by the NUXT_CAPTCHA_PROVIDER environment variable; the choice below applies once it is removed.","provider":"Method","providers":{"auto":"Site default","none":"Off","local":"Built-in image captcha","turnstile":"Cloudflare Turnstile","recaptcha":"Google reCAPTCHA"},"providerHints":{"auto":"Used while nothing is saved here: Turnstile when its keys are configured, otherwise the built-in captcha.","none":"No human check; rate limits still apply.","local":"No third-party service or keys; works everywhere, including mainland China.","turnstile":"Most visitors pass without a puzzle. Needs Cloudflare keys.","recaptcha":"v2 checkbox or v3 invisible score. Use recaptcha.net for visitors in mainland China."},"sources":{"env":"Source: environment variable","admin":"Source: admin setting","site-default":"Source: site default","auto":"Source: automatic (configured keys)"},"localMode":"Captcha type","localModes":{"chars":"Letters and digits","math":"Arithmetic"},"localLength":"Characters","turnstileHelp":"Create a Turnstile widget in the Cloudflare dashboard and add the site domain to its hostnames.","recaptchaHelp":"Create keys in the reCAPTCHA admin console (same version as below) and add the site domain.","recaptchaVersion":"Version","recaptchaVersions":{"v2":"v2 \"I'm not a robot\" checkbox","v3":"v3 invisible score"},"recaptchaHost":"Script domain","chinaOk":"reachable from mainland China","minScore":"Minimum score","minScoreHint":"0.1 to 1; submissions scoring lower are rejected (default 0.5)","envKeys":"Leave blank to use the keys from the environment.","secretKept":"Saved; leave blank to keep it","keysRequired":"This method needs both the site key and the secret key","scenesTitle":"Protected forms","scenes":{"login":"Admin login","contact":"Contact form","comment":"Blog comments","subscribe":"Newsletter","checkout":"Shop checkout"},"scenesHint":"Unchecked forms submit without a human check. Site forms built on useTurnstile() / useCaptcha() follow the active method too.","testTitle":"Test and save","testHelp":"The new settings must pass one check before they are saved, so a wrong key cannot lock you out of the admin.","test":"Test new settings","saveTested":"Passed — save","widgetFailed":"The widget failed to load: check the site key, the allowed domains, or whether the site CSP allows the provider.","saved":"Security settings saved","cspNote":"If the site sets its own Content Security Policy, allow in script-src and frame-src: challenges.cloudflare.com for Turnstile; www.google.com, www.gstatic.com and www.recaptcha.net for reCAPTCHA.","lockoutNote":"Locked out? Set NUXT_CAPTCHA_PROVIDER=none, redeploy, sign in and change it here.","unsupported":"This site uses its own form code for {scenes}, which does not render the verification widget yet, so this setting does not apply there."},"verify":{"title":"Two-factor sign-in","hint":"Open your authenticator app and enter the 6-digit code.","recoveryHint":"Enter one of your recovery codes (each works once).","submit":"Verify and sign in","useRecovery":"No phone at hand? Use a recovery code","useApp":"Use a code from the authenticator app","back":"Back to sign-in","failed":"Verification failed","invalid":"Wrong code, try again","expired":"The sign-in expired, please start again"},"account":{"title":"Account security","mfa":"Two-factor sign-in","on":"On","off":"Off","mfaIntro":"Signing in also asks for a code from an authenticator app (Google Authenticator, Microsoft Authenticator, 1Password, Authy...), so a leaked password alone is not enough.","mfaSetup":"Turn on two-factor sign-in","mfaScan":"Scan the QR code with your authenticator app, then enter the 6-digit code it shows.","mfaKey":"Cannot scan? Enter this key:","mfaConfirm":"Turn on","mfaOn":"Two-factor sign-in is on","mfaOff":"Two-factor sign-in is off","mfaEnabledAt":"On since {date}","recoveryLeft":"{n} recovery codes left","recoverySave":"Save these recovery codes now (shown once). If you lose your phone, each one signs you in once instead of a code.","copy":"Copy","copied":"Copied","saved":"I saved them","recoveryNew":"New recovery codes","mfaDisable":"Turn off two-factor sign-in","mfaDisableConfirm":"Turn off","codeOrRecovery":"Code or recovery code","currentPassword":"Current password","devices":"Signed-in devices","signOutOthers":"Sign out all other devices","signOut":"Sign out","signedOut":"Signed out","thisDevice":"This device","signedIn":"signed in","lastActive":"last active","noDevices":"Nothing recorded yet (sign-ins from before the upgrade are not listed; \"Sign out all other devices\" covers them).","devicesHint":"A device you do not know? Sign it out and change your password.","unknownDevice":"Unknown device","password":"Change password","newPassword":"New password","confirmPassword":"Repeat new password","passwordHint":"At least 8 characters; other devices are signed out","passwordMismatch":"The new passwords do not match","passwordChanged":"Password changed, other devices signed out","changePassword":"Change password","signOutAll":"Sign out all their devices","signOutAllConfirm":"Sign {name} out on every device?","mfaReset":"Reset two-factor sign-in","mfaResetConfirm":"Turn off two-factor sign-in for {name}? They are signed out and set it up again.","done":"Done"},"audit":{"title":"Audit log","subtitle":"Sign-ins and every change in the admin, kept for {days} days.","all":"All actions","signIns":"Sign-ins and security","search":"Search user, item, IP...","time":"Time","user":"User","action":"Action","detail":"Details","empty":"Nothing yet","actions":{"auth_login":"Signed in","auth_login_failed":"Failed sign-in","auth_logout":"Signed out","auth_token":"API token issued","auth_mfa_failed":"Wrong two-factor code","auth_mfa_enabled":"Two-factor on","auth_mfa_disabled":"Two-factor off","auth_recovery_used":"Signed in with a recovery code","auth_recovery_regenerated":"New recovery codes","auth_password_changed":"Password changed","auth_sessions_revoked":"Devices signed out"}},"redirects":{"title":"Redirects","subtitle":"Send old addresses and extra domains to their new home, keeping rankings and inbound links. Changes apply within about a minute, no deploy.","tabPath":"URL redirects","tabDomain":"Domains","tab404":"404 log","pathHelp":"Source: a site path like /old-page; a trailing * matches a whole folder (/blog/* -> /us/posts/*); a query matches old WordPress links (/?p=12). Target: a /path or a full URL; 410 means removed for good.","domainHelp":"Alias domains (old domains, other TLDs) redirect to the primary domain with path and query. Source * means every domain except the primary one (local development, pages.dev previews and IP addresses excluded), e.g. to settle on www or the bare domain. The domains must point at this site.","add":"Add rule","import":"Bulk import","search":"Search...","source":"Source","target":"Target","sourceDomain":"Source domain","targetDomain":"Primary domain","sourceHint":"e.g. /old-page, /blog/*, /?p=12","sourceDomainHint":"e.g. old.com (www.old.com included); * = every other domain","targetHint":"e.g. /us/new-page or https://...","status":"Status","s301":"permanent (recommended)","s302":"temporary","s410":"gone","note":"Note","hits":"Hits","saved":"Saved","empty":"No rules yet","confirmDelete":"Click again to delete","importHelp":"One rule per line: source target [status], separated by spaces, tabs or commas; a CSV export of another redirect plugin works when its first columns are source and target. Existing sources are skipped.","importDomainHelp":"One rule per line: source-domain primary-domain [status].","importRun":"Import","imported":"{added} added, {skipped} skipped","test":"Test","testPlaceholder":"Test a URL or path, e.g. /old-page or https://old.com/x","testNone":"No rule matches (the page shows normally)","log404":"Log 404s","log404Help":"Records page paths that answered 404 (no IP addresses); common bot probes are ignored. Sort by hits to find old links that need a redirect. Entries unseen for 90 days are removed.","byHits":"Most hits","byRecent":"Most recent","clear404":"Clear log","path":"Path","lastSeen":"Last seen","addRedirect":"Add redirect","empty404":"No 404s logged"},"navGroups":{"content":"Content","products":"Products","users":"Users & members","growth":"SEO & marketing","extensions":"Extensions","system":"System","overview":"Overview"},"menus":{"title":"Menus","subtitle":"Header, footer and other navigation, without code changes. One per language; saving applies at once.","new":"New menu","key":"Location","keyHint":"primary = header, footer = footer; sites can use their own locations","keyPrimary":"header navigation","keyFooter":"footer links","name":"Name","locale":"Language","copyFrom":"Copy from","empty":"Empty menu","none":"No menus yet. Once a primary menu exists it drives the header (until then the site's built-in navigation is used).","add":"Add items","addItem":"Add","search":"Search...","nothing":"Nothing to add","label":"Label (blank: the content title)","newTab":"Open in a new tab","up":"Move up","down":"Move down","indent":"Make a sub-item of the item above","outdent":"Move out of the sub-menu","saved":"Menu saved","confirmDelete":"Confirm delete","emptyTree":"Add items from the left","treeHint":"Drag items to reorder; up to three levels. Items whose page, post or product is not published are hidden.","types":{"custom":"Custom link","page":"Page","post":"Post","product":"Product","category":"Post category","productCategory":"Product category"},"unpublished":"unpublished"},"preview":{"button":"Preview link","title":"Share a preview","hint":"A link that shows this unpublished item with the site's real pages to anyone, no account needed. It stops working when it expires.","days":"valid {n} day(s)","create":"Create link","copy":"Copy","copied":"Preview link copied","until":"valid until {date}"},"backups":{"title":"Backups","subtitle":"Back up the site content on a schedule, to the attachment storage or to an FTP server of your choice, keeping the newest few.","runNow":"Back up now","enabled":"Scheduled backups","frequency":"Frequency","daily":"Daily","weekly":"Weekly","hour":"Time (site time zone)","keep":"Keep","storage":"Save to the attachment storage ({driver})","storageHint":"Kept in private/backups/, never public; download them below.","ftp":"Upload to an FTP server","ftpHost":"Host","ftpPort":"Port","ftpUser":"User","ftpPassword":"Password","passwordKept":"stored; leave blank to keep","ftpDir":"Directory (created when missing)","ftpSecure":"Use FTPS (AUTH TLS)","test":"Test connection","ftpOk":"Connected; {n} file(s) in the directory","ftpFailed":"FTP connection failed","contents":"A backup holds what Tools → Export holds: posts, pages, products, categories, translations, public settings and the media list (.json.gz), restorable in Tools → Import. No accounts, secrets or the media files themselves; back up plugin data (orders etc.) with the database (Cloudflare D1 has 30-day point-in-time recovery).","noCron":"Scheduled backups need the cron worker (NUXT_CRON_SECRET is not set): only manual backups work now.","saved":"Backup settings saved","done":"Backup done","notAll":"Backup not fully done","history":"History","none":"No backups yet","removed":"rotated out","status":{"ok":"OK","partial":"Partly done","failed":"Failed","running":"Running"},"trigger":{"manual":"manual","schedule":"scheduled"},"bucket":"Storage bucket (R2 / S3 / OSS / COS)","bucketHint":"Backups in a bucket of their own, apart from the site's files: Cloudflare R2, AWS S3, Alibaba OSS, Tencent COS or any S3-compatible storage. Use an access key limited to this bucket.","bucketProvider":"Provider","bucketName":"Bucket name","bucketRegion":"Region","bucketAccountId":"Cloudflare account ID","bucketEndpoint":"Endpoint (optional)","bucketEndpointHint":"Usually blank (derived from the provider); for self-hosted or other compatible storage","bucketKeyId":"Access key ID","bucketSecret":"Secret access key","bucketDir":"Directory","bucketOk":"Bucket works ({n} files in the directory)","bucketFailed":"Bucket connection failed","providers":{"r2":"Cloudflare R2","s3":"AWS S3","oss":"Alibaba Cloud OSS","cos":"Tencent Cloud COS","custom":"Other S3-compatible"}},"mediaAlt":"Alt text","mediaAltHint":"Describe the image for search engines and screen readers; click to edit","searchIndex":{"title":"Site search index","text":"Published posts, pages and products enter the search index by themselves (now {n} entries); visitors search at /search. Content from before the upgrade is added by the cron over time, or rebuild it here now.","rebuild":"Rebuild index","running":"Working… {n}","rebuilt":"Index updated ({n} processed)"},"collections":{"title":"Content types","subtitle":"Case studies, team members, FAQs, events and more without code: define the fields, the admin builds the form and the site gets list and detail pages.","new":"New content type","presets":{"cases":"Case studies","team":"Team members","faq":"FAQ","events":"Events"},"presetHint":"start from a template · {n} fields","name":"Name","key":"Key","keyHint":"lowercase letters, digits and dashes, used in URLs; fixed once created","icon":"Icon","description":"Description (shown on the list page)","sortLabel":"Order","sort":{"newest":"Newest first","manual":"Manual","title":"By title"},"public":"Public (list page {path}, in site search and the sitemap)","fields":"Fields","fieldsHint":"Every entry already has a title, slug, language, status and cover image.","fieldLabel":"Field name","fieldKey":"Field key","required":"Required","options":"Choices, one per line","addField":"Add field","types":{"text":"Text","textarea":"Long text","richtext":"Rich text","number":"Number","boolean":"Yes / no","date":"Date","image":"Image","images":"Images","url":"Link","select":"Choice","list":"List (one per line)"},"saved":"Content type saved","count":"{n} entries","fieldCount":"{n} fields","isPublic":"Public","isPrivate":"Admin only","entries":"Entries","edit":"Fields","deleteWarn":"Its {n} entries are deleted with it, for good. Type {key} to confirm.","newEntry":"New entry","searchEntries":"Search titles...","noEntries":"No entries yet","status":{"draft":"Draft","published":"Published","scheduled":"Scheduled"},"entrySaved":"Saved","confirmDelete":"Confirm delete","entryTitle":"Title","locale":"Language","publishedAt":"Publish date","sortOrder":"Order (smaller first)","cover":"Cover image","choose":"Choose image","addImage":"Add image","onePerLine":"One per line"},"roleAuthor":"Author","roleContributor":"Contributor","roleHelp":{"admin":"Everything, including settings, users, plugins and security","editor":"All posts, pages, products, content types and media","author":"Writes and publishes their own posts, uploads images","contributor":"Writes their own drafts for an editor to publish; uses existing images only"},"forms":{"title":"Forms","subtitle":"Quote requests, sign-ups, surveys... copy the embed code into any page; submissions are kept here and can be e-mailed to you.","new":"New form","name":"Name","key":"Key","keyHint":"Lowercase letters, digits and dashes; cannot be changed later","statusLabel":"Status","open":"Open","closed":"Closed","fields":"Fields","fieldKey":"Field key, e.g. company","fieldLabel":"Label","required":"Required","options":"Options, one per line","addField":"Add field","notify":"Notification e-mail","notifyHint":"E-mailed on each new submission; separate several addresses with commas; blank: no e-mail","captcha":"Use captcha (the \"contact form\" scene in Security)","success":"Success message","submit":"Submit button text","saved":"Form saved","copied":"Embed code copied","confirmDelete":"Click again to delete the form and all its submissions","none":"No forms yet. Try a quote request or a sign-up form.","submissions":"Submissions","unread":"{n} new","count":"{n} submissions","fieldCount":"{n} fields","noSubmissions":"No submissions yet","markRead":"Mark read","archive":"Archive","subStatus":{"new":"New","read":"Read","archived":"Archived"},"types":{"text":"Text","email":"E-mail","tel":"Phone","textarea":"Long text","number":"Number","select":"Drop-down","radio":"Single choice","checkbox":"Multiple choice","date":"Date","consent":"Consent checkbox"}},"forgot":{"title":"Reset your password","text":"Enter the e-mail address of your admin account and we will send a link to set a new password (valid for 1 hour).","submit":"Send reset e-mail","sentTitle":"E-mail sent","sentText":"If {email} belongs to an admin account here, a reset e-mail arrives within a few minutes.","noMail":"Nothing arrived? Check your spam folder, or ask an administrator to send you a reset e-mail from Users.","failed":"Could not send, please try again later","back":"Back to sign-in"},"reset":{"title":"Set a new password","text":"Set a new admin password for {email}. Every device will have to sign in again.","password":"New password","confirm":"New password again","rule":"At least 8 characters","mismatch":"The passwords do not match","submit":"Save new password","doneTitle":"Password updated","doneText":"Sign in with your new password.","invalidTitle":"This link has expired","invalidText":"The reset link expired or was already used. Ask for a new reset e-mail.","again":"Ask again","failed":"Could not save, please try again later"},"users":{"invite":"Send an invitation so the user sets their own password","inviteHelp":"Needs the mail settings (Email); the link is valid for 3 days","invited":"Created; invitation sent to {email}","inviteFailed":"User created, but the invitation e-mail failed","sendReset":"Send password reset e-mail","sendResetConfirm":"Send a password reset e-mail to {email}?","resetSent":"Password reset e-mail sent to {email}"}},"blog":{"count":"{count} articles","empty":"No articles yet","title":"News","subtitle":"Company news, product releases and engineering insights.","anonymous":"Anonymous","article":"Article","prev":"Previous","next":"Next","related":"Related articles"},"categories":{"belt":"Belt Conveyor","chain":"Chain Conveyor","lift":"Elevator","roller":"Roller Conveyor"},"common":{"all":"All","backToBlog":"Back to Blog","backToHome":"Back to Home","contactUs":"Contact Us","freeQuote":"Free Quote","language":"Language","loading":"Loading…","readMore":"Read more","search":"Search","by":"Anonymous","noCases":"No cases yet","noPosts":"No posts yet","noProducts":"No products yet","getQuote":"Free Quote","tooManyRequests":"You're going a little fast — please wait a moment and try again. Thank you for your patience.","toggleTheme":"Toggle theme","views":"{n} views","verifyHuman":"Please complete the human check"},"docs":{"empty":"No documents yet","intro":"Guides and deployment instructions","title":"Documentation"},"error":{"generic":"Something went wrong","notFound":"Page not found","tooManyRequests":"You’ve been a little busy just now. Please wait a moment and try again — thank you for your patience.","notFoundTitle":"Page Not Found","notFoundMessage":"The page you are looking for does not exist or may have been moved.","genericTitle":"Something went wrong","genericMessage":"An unexpected error occurred. Please try again later.","redirectIn":"Redirecting to homepage in {seconds} seconds…","goHome":"Go to Homepage"},"products":{"category":"Categories","description":"Covering roller conveyors, belt conveyors, chain conveyors, and elevators. Custom solutions available.","empty":"No products in this category","heading":"Our Products","inquiry":"Inquiry","specs":"Specifications","subtitle":"Three product lines: cloud platform, AI solutions and smart devices.","title":"Products","viewDetails":"View details","related":"Related products","inquiryHint":"Need a quote or a custom solution? Tell us what you are building."},"search":{"button":"Search","hot":"Hot Keywords","placeholder":"Enter keywords","title":"Search","results":"{n} result(s) for \"{q}\"","empty":"Nothing found. Try other words.","more":"Load more","kinds":{"all":"All","post":"Posts","page":"Pages","product":"Products","item":"Entries"}},"setup":{"title":"Install NuxtCMS","subtitle":"Create an admin account and initialize the site","siteName":"Site Name","siteDescription":"Site Description","adminName":"Admin Name","adminEmail":"Admin Email","adminPassword":"Admin Password","passwordHint":"At least 6 characters","install":"Complete Setup","success":"Setup Complete","successDesc":"Welcome to NuxtCMS!","failed":"Setup Failed","demoContent":"Import demo content","demoContentHint":"Seeds sample products, posts and an About page (Chinese + English) so you can preview the site right away.","token":"Setup token","tokenHint":"the NUXT_SETUP_TOKEN set at deploy time"},"nav":{"home":"Home","products":"Products","blog":"Blog","about":"About","contact":"Contact","docs":"Docs","admin":"Admin","getStarted":"Book a demo","menu":"Menu"},"home":{"heroKicker":"Digital platform for modern enterprises","heroTitle":"Grow your business with cloud-native and AI","heroSubtitle":"We deliver integrated cloud, AI and smart-hardware solutions that help teams ship faster and run more reliably.","heroCta":"Explore products","heroSecondary":"Talk to us","statsProjects":"Projects delivered","statsClients":"Enterprise clients","statsUptime":"Service uptime","statsCountries":"Countries","featuresTitle":"Why teams choose us","featuresSubtitle":"From infrastructure to intelligent applications, one partner for the whole lifecycle.","feature1Title":"Cloud-native architecture","feature1Desc":"Elastic container and serverless foundations that scale on demand and keep costs predictable.","feature2Title":"AI built in","feature2Desc":"Large language models woven into your workflows: support, knowledge bases and data insights.","feature3Title":"Enterprise security","feature3Desc":"End-to-end encryption, fine-grained permissions and audit logs for compliance.","feature4Title":"Rapid delivery","feature4Desc":"Mature component libraries and automated pipelines put new features live within days.","productsTitle":"Core products","productsSubtitle":"Three product lines: cloud platform, AI solutions and smart devices.","newsTitle":"Latest updates","newsSubtitle":"Company news, product releases and engineering insights.","viewAll":"View all","ctaTitle":"Ready to get started?","ctaSubtitle":"Tell us about your project and a consultant will reach out within one business day.","ctaButton":"Contact us"},"contact":{"title":"Contact us","subtitle":"Product questions, partnerships or technical support: we would love to hear from you.","name":"Name","email":"Email","phone":"Phone","message":"Message","submit":"Send message","success":"Message sent. We will get back to you shortly.","failed":"Sending failed, please try again later.","infoTitle":"Get in touch","emailLabel":"Email","phoneLabel":"Phone","addressLabel":"Address"},"footer":{"tagline":"A modern content management system built with Nuxt 4.","company":"Company","contact":"Contact","poweredBy":"Powered by NuxtCMS"},"captcha":{"placeholder":"Code in the image","mathPlaceholder":"Result","refresh":"Hard to read? New image","recaptchaNotice":"This site is protected by reCAPTCHA"},"demo":{"banner":"This is the NuxtCMS demo: data is restored daily, payments are simulated, please do not enter real personal data.","enterAdmin":"Try the admin","adminNotice":"Demo mode: accounts, e-mail, plugins, settings and uploads are disabled; data is restored daily.","login":"Enter the demo admin","loginHint":"No password needed: you sign in with the shared demo account.","checkoutNotice":"Demo site: sample details are filled in and payments are simulated, nothing is charged.","simulatePay":"Simulate a successful payment","simulated":"Payments are simulated in the demo; nothing is charged.","close":"Close"},"preview":{"bar":"Preview mode: you may be seeing unpublished content","exit":"Exit preview"},"collection":{"empty":"Nothing here yet","notFound":"Not found","yes":"Yes","no":"No"},"cmsForm":{"thanks":"Thank you! We will get back to you soon.","failed":"Could not send, please try again later","submit":"Send"},"aiAudit":{"title":"AI search check","adminHint":"Can AI search (ChatGPT, Perplexity, Claude) and search engines read this site? Checks llms.txt, AI crawler access, structured data, language tags, the sitemap and response time. Leave the address blank to check this site.","ownSite":"Blank: this site, or an address such as example.com","run":"Run check","failed":"Check failed","responseTime":"{ms} ms from the checking server","crawlers":"AI crawlers in robots.txt","allowed":"allowed","blocked":"blocked","grade":{"good":"Easy for AI search to read","fair":"Room for improvement","poor":"Hard for AI search to read"},"checks":{"llms":{"title":"llms.txt (a site guide for AI)","pass":"llms.txt is there: AI assistants see what the site is about and which pages matter.","fail":"No /llms.txt: AI assistants have to guess what matters, so they cite and recommend the site less."},"aiCrawlers":{"title":"AI search crawlers","pass":"robots.txt lets the main AI search crawlers read the home page ({value}).","fail":"robots.txt lets only {value} of the main AI search crawlers read the home page; blocked AI search will not cite the site."},"speed":{"title":"Response time","pass":"The home page answered within {value} ms.","fail":"The home page took {value} ms; visitors and crawlers may give up."},"structuredData":{"title":"Structured data (JSON-LD)","pass":"Structured data on the home page: {value}.","fail":"No JSON-LD on the home page: AI and search engines cannot confirm the company, products and other key facts."},"hreflang":{"title":"Language tags (hreflang)","pass":"{value} language versions are tagged, so each country's search shows the right language.","fail":"No hreflang language tags ({value}): visitors abroad may land on the wrong language. Single-language sites can ignore this."},"sitemap":{"title":"Sitemap","pass":"A sitemap was found, so new pages get indexed sooner.","fail":"No sitemap found (Sitemap in robots.txt or /sitemap.xml)."},"meta":{"title":"Title and description","pass":"The home page has a title and a useful description ({value} characters).","fail":"The home page lacks a title or its description is short ({value} characters): AI summaries and results show it poorly."},"https":{"title":"HTTPS","pass":"The site uses HTTPS.","fail":"The site does not use HTTPS; browsers flag it as not secure."},"canonical":{"title":"Canonical link","pass":"The home page declares its canonical address.","fail":"No canonical link: several addresses for the same page split its ranking."}}},"localeSuggest":{"text":"This page is also available in {language}.","switch":"Switch to {language}","dismiss":"No thanks"},"oauth":{"continueWith":"Continue with {provider}","or":"or","providers":{"wechat":"WeChat","qq":"QQ","dingtalk":"DingTalk","feishu":"Feishu / Lark","microsoft":"Microsoft"},"errors":{"state":"The sign-in expired, please try again.","denied":"Authorization was cancelled.","provider":"Sign-in with the provider failed, please try again later.","notLinked":"This account is not connected to an admin account. Sign in with e-mail and password first and connect it under Account security.","taken":"This account is already connected to another user.","disabled":"This account is disabled.","signup":"New sign-ups are closed.","signin":"Sign in to the admin first, then connect the account.","rate":"Too many attempts, please try again later."},"account":{"title":"Sign-in providers","hint":"Connected accounts can sign in to the admin directly; e-mail and password keep working.","connect":"Connect {provider}","unlink":"Disconnect","unlinkConfirm":"Disconnect {provider}?","linked":"Account connected","lastUsed":"Last used","notMigrated":"The database is not upgraded yet (table user_identities is missing): apply the migrations first."},"admin":{"title":"Sign-in methods","intro":"Sign in with Google, GitHub, Microsoft, WeChat, DingTalk, Feishu or any OpenID Connect / OAuth 2.0 service, for the admin and for site member accounts (e.g. the SaaS kit). E-mail and password sign-in always stays.","adminRules":"Admin sign-in rules","linkByEmail":"Link by e-mail","linkByEmailHint":"On the first sign-in, connect the admin account with the same address when the provider verified it (Microsoft multi-tenant addresses are never trusted).","autoCreateDomains":"Create accounts for these e-mail domains","autoCreateDomainsHint":"Verified addresses of these domains get an admin account on their first sign-in. Empty: nobody is created, only connected or matching accounts get in.","autoCreateRole":"Role of new accounts","optional":"optional","passwordStays":"Providers are an extra way in: e-mail + password, password reset and two-factor sign-in keep working; accounts with two-factor sign-in still enter their code after a provider sign-in.","enabled":"On","forAdmin":"Admin sign-in","forSite":"Site member sign-in","buttonLabel":"Button label","providerId":"Id","providerIdHint":"Starts with custom-, up to 16 characters; fixed once saved (it is part of the callback URL).","custom":"custom","fromEnv":"from environment","ready":"Ready","incomplete":"Incomplete","secretKept":"Saved; leave blank to keep","trustEmail":"Trust e-mail addresses from this service (link by e-mail)","callback":"Callback URL (enter it in the provider's developer console)","copy":"Copy","copied":"Copied","console":"Open developer console","remove":"Remove","removeConfirm":"Remove {provider}? Takes effect on save; connected account records stay.","add":"Add sign-in method","addPlaceholder":"Choose a service…","saved":"Sign-in methods saved","options":{"tenant":"Tenant","baseUrl":"GitLab URL","domain":"Edition (feishu / lark)","issuer":"Issuer URL","scope":"Scope","authorizeUrl":"Authorize URL","tokenUrl":"Token URL","userinfoUrl":"User info URL","idField":"User id field","emailField":"E-mail field","nameField":"Name field","avatarField":"Avatar field","tokenAuth":"Token auth (post / basic)"}}}},"zh":{"blogkit":{"plugin":{"readingTime":"阅读约 {n} 分钟","words":"{n} 字","toc":"本文目录","share":"分享","copyLink":"复制链接","copied":"链接已复制","author":"作者","authorPosts":"{n} 篇文章","morePosts":"更多文章","popular":"热门文章","tag":"标签：{tag}","category":"分类：{name}","authorArchive":"{name} 的文章","noPosts":"暂无文章。","views":"{n} 次阅读"},"comments":{"title":"评论","count":"暂无评论 | 1 条评论 | {n} 条评论","empty":"来抢沙发吧。","name":"昵称","email":"邮箱（不会公开）","url":"网站（选填）","content":"写下你的评论","submit":"发表评论","reply":"回复","replyingTo":"回复 {name}","cancelReply":"取消","pending":"感谢！评论审核通过后显示。","posted":"评论已发表。","closed":"评论已关闭。","postNotFound":"该文章不支持评论。","parentMissing":"你回复的评论已不存在。","author":"作者","remember":"在此设备上记住我"},"newsletter":{"title":"订阅新文章","hint":"不发垃圾邮件，随时可退订。","email":"你的邮箱","submit":"订阅","pending":"就差一步：请到邮箱点击确认链接。","active":"订阅成功，谢谢！","confirmed":"订阅已确认，谢谢！","unsubscribed":"已退订。","invalidLink":"链接无效或已过期。","working":"请稍候…","resubscribed":"已重新开启订阅，谢谢！","unsubscribe":"取消订阅","resubscribe":"重新订阅","unsubscribedHint":"之后不会再收到新文章邮件。点错了？可以一键恢复。"},"admin":{"menu":"评论","subscribers":"订阅者","notActive":"博客插件未启用（请在插件页启用）。","status":{"pending":"待审核","approved":"已通过","spam":"垃圾","trash":"回收站","all":"全部","active":"已订阅","unsubscribed":"已退订"},"approve":"通过","unapprove":"驳回","spam":"标为垃圾","trash":"移到回收站","delete":"永久删除","reply":"回复","send":"发送","confirmDelete":"确定永久删除选中的评论？","search":"搜索评论","empty":"暂无内容。","on":"评论于","selected":"已选 {n} 条","subscribersHint":"来自订阅表单的邮箱。开启双重确认时，确认前为待确认状态。","import":"导入","importHint":"粘贴邮箱，每行一个或用逗号分隔，导入后直接为已订阅。","imported":"新增 {added} 个，跳过 {skipped} 个","export":"导出 CSV","mailings":"推送记录","sendPost":"推送文章","postId":"文章 ID","queued":"已加入队列，由定时任务分批发送。","mailingStatus":{"queued":"排队中","sending":"发送中","done":"已发送","failed":"失败"},"sent":"成功 {sent}，失败 {failed}","settings":"博客设置"}},"admin":{"login":{"email":"邮箱","failed":"登录失败","password":"密码","submit":"登录","title":"登录后台","verifyLabel":"我不是机器人","verifyRequired":"请先完成验证","invalidCredentials":"邮箱或密码错误，请检查后重试","tooManyAttempts":"您已尝试登录几次。请等待大约 5 分钟，然后重试 - 谢谢。","networkError":"网络连接失败，请检查网络后重试","forgot":"忘记密码？"},"nav":{"cases":"案例管理","categories":"分类","dashboard":"仪表盘","i18n":"多语言","logout":"退出登录","media":"媒体","pages":"页面","posts":"文章","productCategories":"产品分类","products":"产品管理","settings":"设置","users":"用户","viewSite":"查看站点","translations":"多语言翻译","languages":"语言管理","email":"邮件配置","tasks":"定时任务","seo":"SEO 设置","cache":"缓存","contacts":"联系记录","plugins":"插件","tools":"工具","security":"安全验证","redirects":"跳转管理","audit":"审计日志","account":"账户安全","menu":"菜单","menus":"导航菜单","backups":"自动备份","collections":"内容类型","forms":"表单","signIn":"登录方式","home":"主页"},"seo":{"title":"SEO 与 AI GEO","perLocale":"多语言 SEO","global":"全局设置","tabSeo":"SEO","tabGeo":"AI GEO","perLocaleHint":"每种语言单独设置标题、描述与关键词；页面会自动输出 hreflang 和 canonical。","sitemap":"站点地图","sitemapHint":"/sitemap.xml 为多语言索引，指向每种语言的 /__sitemap__/LANG.xml，每个条目都带最后修改时间；内容发布或更新后自动变化。","matomo":{"title":"访问统计（Matomo）","hint":"填写 Matomo 地址和站点 ID 后，前台自动统计：页面浏览（含站内跳转）、来源、站内搜索、外链与下载、404 页面、JavaScript 错误、页面停留时间与加载速度、表单与订单等事件；服务器 5xx 错误也会记为事件。后台页面不统计。","url":"Matomo 地址","siteId":"站点 ID","cookieless":"无 Cookie 模式","cookielessHint":"不写 Cookie（欧盟访客无需同意弹窗），访客按天计数。","open":"打开统计报表"},"preconnect":{"title":"预连接","hint":"页面加载时提前和这些服务器建立连接（<link rel=\"preconnect\">），省去 DNS 和 TLS 握手的 100–300 毫秒。已配置 Matomo 时自动包含统计服务器，无需填写。其他域名（如图片 CDN、字体服务）每行一个，只接受 https，最多 6 个。"},"geoIntro":"AI 摘要","geoIntroHint":"提供给 AI 搜索与问答引擎（ChatGPT、Claude、Perplexity、Gemini 等）的自我介绍，会出现在 /llms.txt 与 /api/public/ai-summary 中。","organization":"组织信息（结构化数据）","organizationHint":"生成 schema.org Organization / WebSite JSON-LD，帮助搜索引擎与 AI 识别站点主体。","llms":"llms.txt","llmsHint":"按 llmstxt.org 规范输出站点索引与全文文本，供大模型直接读取。","crawlers":"AI 爬虫策略","crawlersHint":"写入 robots.txt。允许答案引擎抓取有助于被 AI 引用；可单独禁止用于模型训练的爬虫。","allowAll":"全部允许","blockTraining":"禁止训练类","blockAll":"全部禁止","allow":"允许","disallow":"禁止","preview":"预览地址","purpose":{"training":"模型训练","search":"AI 搜索 / 问答","both":"训练 + 搜索"},"fields":{"siteName":"站点名称","siteTitle":"SEO 标题","siteDescription":"Meta 描述","siteKeywords":"Meta 关键词","ogImage":"默认分享图","googleVerification":"Google 验证码","bingSiteVerification":"Bing 验证码","baiduVerification":"百度验证码","robotsTxt":"附加 robots 规则","orgType":"组织类型","orgLogo":"Logo 地址","orgSameAs":"官方账号链接","geoSummary":"AI 摘要","geoAudience":"目标受众与服务范围","geoLlmsTxt":"开放 /llms.txt","geoLlmsFull":"开放 /llms-full.txt（全文）"},"hints":{"siteName":"该语言下显示的站点名称，留空使用全局站点名称。","siteTitle":"浏览器标签与搜索结果标题。","siteDescription":"搜索结果摘要，建议 150–160 字。","siteKeywords":"逗号分隔。","ogImage":"社交分享默认图片地址。","robotsTxt":"追加到 robots.txt 末尾的自定义规则。","orgLogo":"建议 512×512 以上的 PNG/SVG。","orgSameAs":"每行一个：微信公众号页、LinkedIn、GitHub、微博等。","geoSummary":"用 2–5 句话说明你是谁、做什么、优势是什么，AI 会直接引用这段话。","geoAudience":"例如：面向制造业与零售企业，服务中国大陆与东南亚。"}},"email":"邮箱","tasks":{"title":"定时任务","newTask":"新建任务","editTask":"编辑任务","empty":"暂无定时任务","enabled":"启用","disabled":"禁用","lastRun":"上次执行","run":"立即执行","logs":"执行日志","noLogs":"暂无执行日志","executed":"任务已执行","headers":"请求头","body":"请求体"},"dashboard":"仪表盘","writePost":"写文章","recentUpdates":"最近更新","noContent":"暂无内容","posts":"文章","pages":"页面","published":"已发布","drafts":"草稿","categories":"分类","media":"媒体","status":"状态","noCategories":"暂无分类","noContacts":"暂无联系记录","noProducts":"暂无产品","noSettings":"暂无设置项","noTranslations":"暂无翻译","noLanguages":"暂无语言配置","confirmDelete":"确定删除「{name}」？此操作不可恢复。","categoryDeletedHint":"该分类下的文章将变为未分类。","confirmDeleteLanguage":"确定删除语言「{name}」({code})？翻译数据不会被删除。","name":"名称","slug":"别名","description":"描述","actions":"操作","edit":"编辑","delete":"删除","cancel":"取消","create":"创建","update":{"available":"有新版本 NuxtCMS v{latest}（当前 v{current}）","hint":"在站点项目目录执行升级命令：自动安装、执行数据库迁移、构建并部署。","copy":"复制升级命令","changelog":"更新日志"},"refresh":"刷新","searchNameEmail":"搜索姓名/邮箱/内容…","allStatuses":"全部状态","statusNew":"新","statusRead":"已读","statusReplied":"已回复","message":"消息","time":"时间","languageCode":"语言代码","languageName":"语言名称","languageAdded":"语言已更新","languageAddFailed":"添加失败","languageUpdateFailed":"更新失败","languageDeleted":"删除失败","fillAllFields":"请填写所有字段","serverRestarting":"服务器重启中…页面将在几秒后自动刷新","loadFailed":"加载失败","slugHint":"留空自动生成","operationFailed":"操作失败","deleteFailed":"删除失败","password":"密码","role":"角色","roleAdmin":"管理员","roleEditor":"编辑","passwordHint":"留空则不修改","passwordMinLength":"至少 6 位","me":"（我）","updated":"已更新","created":"已创建","deleted":"已删除","confirmDeleteUser":"删除用户「{name}」？","editUser":"编辑用户","newUser":"新建用户","mediaLibrary":"媒体库","uploadImage":"上传图片","searchFilename":"搜索文件名…","mediaStorageHint":"附件存储于 R2（本地存文件系统），单张建议小于 5MB。","uploadComplete":"上传完成","midCopies":{"button":"生成中等清晰度图片","progress":"生成中 {done}/{total}","done":"已处理 {done} 张，生成 {made} 张中等清晰度图片，失败 {failed} 张","failed":"生成中等清晰度图片失败"},"uploadFailed":"上传失败","linkCopied":"已复制链接","copyFailed":"复制失败","confirmDeleteMedia":"删除这个媒体文件？","mediaEmpty":"媒体库为空","mediaEmptyHint":"点击右上角上传图片。","fileTooLarge":"{name} 过大","maxFileSize":"请上传小于 5MB 的图片","upload":"上传文件","loadMore":"加载更多","mediaPickerHint":"点击图片即可插入；上传的新图片会直接插入。","mediaNoMatch":"没有找到匹配的文件。","mediaEmptyPicker":"媒体库为空，先上传一张图片吧。","insertFromLibrary":"从媒体库插入图片","productManagement":"产品管理","newProduct":"新建产品","searchName":"搜索名称…","allLanguages":"全部语言","language":"语言","category":"分类","updatedAt":"更新时间","siteSettings":"站点设置","newSetting":"新建","searchKeyOrValue":"搜索键名或值…","all":"全部","globalSettings":"全局设置","localizedSettings":"本地化设置","keyName":"键名","currentValue":"当前值","localizedBadge":"本地化","emptyValue":"（空）","translationManagement":"多语言翻译","translated":"已翻译","untranslated":"未翻译","translationKey":"翻译键名","notTranslated":"（未翻译）","languageManagement":"语言管理","generatePacks":"生成语言包","addLanguage":"添加语言","noteTitle":"提示","languageHintRestart":"添加或删除语言后，需要重启开发服务器（或重新部署）才能使新的 URL 路由生效。","languageHintGenerate":"在「多语言翻译」页面编辑翻译内容后，点击「生成语言包」将数据库翻译写入 i18n/locales/*.json 文件，供 i18n 系统直接使用。","bcp47Tag":"BCP47 标签","displayName":"显示名称","defaultBadge":"默认","fallbackBadge":"回退","setDefault":"设为默认","editLanguage":"编辑语言","quickSelect":"快速选择：","langCodeDesc":"URL 中使用的短码，如 ja, ko, vi","bcp47Desc":"完整语言标签，如 ja-JP, ko-KR","displayNameDesc":"语言切换器中显示的名称","add":"添加","save":"保存","configUpdated":"配置已更新，页面将自动刷新","packGenerated":"语言包生成成功","generateFailed":"生成失败","loading":"加载中…","emailCfg":{"title":"邮件配置","smtpSettings":"SMTP 设置","smtpHost":"SMTP 服务器","smtpPort":"SMTP 端口","smtpUser":"用户名","smtpPass":"密码","fromAddress":"发件人地址","fromName":"发件人名称","testTitle":"发送测试邮件","sendTest":"发送测试","testSent":"测试邮件已发送","testFailed":"测试邮件发送失败"},"cache":{"title":"API 缓存","settings":"缓存设置","description":"开启后，匹配「缓存的接口路径」的前台 GET 接口会写入文件缓存（Cloudflare 上为边缘 Cache API），默认范围为 /api/public/*，默认 12 小时。后台更新文章、产品、设置等内容后会自动失效，也可手动清空立即重新生成。","enabled":"启用缓存","enabledHint":"缓存前台公共 API 响应","ttlHours":"缓存时长（小时）","ttlHint":"1–168 小时，默认 12 小时","clear":"清空缓存","confirmClear":"确定清空前台 API 缓存？清空后下次访问会重新从数据库生成。","cleared":"缓存已清空","status":"当前状态","driver":"存储驱动","driverFs":"本地文件（.data/cache/public-api）","driverCf":"Cloudflare Cache API","version":"缓存版本","clearedAt":"上次清空","never":"从未清空","keyCount":"缓存条目","keyCountCf":"边缘缓存无法列举，清空后版本号会递增","recentKeys":"当前版本缓存键","excludes":"不缓存的 API","excludesHint":"匹配到的 /api/public GET 会跳过缓存，始终回源。支持精确路径、前缀、通配符（* ?）、包含匹配和正则。未以 / 开头的路径会自动补上 /api/public/。","excludesEmpty":"暂无排除规则，所有前台公共 API 都会缓存。","addExclude":"添加规则","quickAdd":"快速添加","modeExact":"精确","modePrefix":"前缀","modeWildcard":"通配符","modeContains":"包含","modeRegex":"正则","includes":"缓存的接口路径","includesHint":"只有匹配到这些规则的 GET 接口才会被缓存。留空或保持默认即缓存 /api/public/** 全部接口。路径必须在 /api/ 下；/api/admin、/api/auth、/api/setup、/api/docs、/api/media 永远不会被缓存。修改后会自动清空已有缓存。","includesEmpty":"暂无缓存路径规则，将按默认规则缓存 /api/public/** 全部接口。","addInclude":"添加路径","includesDefaultActive":"当前使用默认范围：/api/public/**","includesCustomActive":"当前使用自定义缓存范围","includesReset":"恢复默认"},"plugins":{"title":"插件","tabInstalled":"已安装","tabMarket":"插件市场","tabAccount":"账号与授权","tabDeveloper":"开发者","domain":"授权域名","cronMissing":"未配置 NUXT_CRON_SECRET","cronMissingHint":"带定时任务的插件（邮件通知、搜索推送）以及授权的每日复核都依赖 cron 调度，请在环境变量中设置 NUXT_CRON_SECRET 并部署 cron Worker。","emptyInstalled":"还没有安装插件","browseMarket":"去插件市场看看","free":"免费","credits":"{n} 积分","source_official":"官方","source_local":"本地","source_package":"代码包","license_active":"已授权","license_none":"未授权","license_expired":"已过期","license_revoked":"已吊销","license_invalid":"无效","license_domain_mismatch":"域名不符","license_unknown":"未知","license_missing":"未安装","capInject":"注入 {n} 段代码","configure":"设置","verify":"校验授权","uninstall":"卸载","confirmUninstall":"确定卸载「{name}」？它创建的定时任务也会删除。","uninstalled":"已卸载","licenseValid":"授权有效","licenseInvalid":"授权无效","required":"请填写「{name}」","secretKept":"已保存，留空则不修改","licenseKey":"授权码","licenseKeyHelp":"在官网购买或管理员发放的授权码，绑定到当前域名","licenseKeyCurrent":"当前：{key}，填写新授权码可替换","offline":"官方插件中心暂时连不上","offlineHint":"已切换到框架内置的官方插件，免费插件可直接安装，付费插件需要连上插件中心授权","offlineInstall":"已从内置副本安装","search":"搜索插件","openHub":"打开官方插件中心","emptyMarket":"没有符合条件的插件","packageKind":"代码包（需重新部署）","installedVersion":"已安装 v{version}","contactLicense":"联系授权","installTrial":"先安装","buy":"{n} 积分购买","update":"更新到 v{version}","install":"安装","confirmPurchase":"用 {credits} 积分购买「{name}」并授权给当前域名？","updatedTo":"已更新到 v{version}","installed":"安装成功","needsLicenseHint":"付费插件需授权后才会生效：购买、或在设置中填写授权码","bindToBuy":"购买付费插件、查看积分和授权，请先绑定官网账号：","requestSent":"已提交，我们会尽快联系你","requestHint":"告诉我们你的需求（域名 {domain} 会一并提交），工作人员会联系你发放授权或报价。","requestPlaceholder":"例如：需要 3 个站点的授权 / 想先试用 7 天","send":"发送","bindTitle":"绑定官网账号","bindStep1":"在官网注册账号：","bindStep2":"登录后在「账号 → API 令牌」创建一个令牌：","bindStep3":"把令牌粘贴到下面并绑定。令牌只保存在服务器端，不会下发到浏览器。","bind":"绑定","bound":"绑定成功","boundAs":"已绑定账号","balance":"积分余额","rechargeHint":"积分暂不支持在线支付，请联系管理员充值，到账后即可在插件市场直接购买。","contactAdmin":"联系管理员充值","manageAccount":"管理账号","unbind":"解除绑定","confirmUnbind":"解除绑定后无法购买插件，已有授权不受影响。确定？","licenses":"我的授权","noLicenses":"暂无授权","plugin":"插件","importTitle":"导入插件清单","importHint":"粘贴或选择一个 nuxtcms.plugin.json（运行时插件）。适合开发调试和私有插件，付费插件只能从插件中心安装。","useSample":"填入示例","invalidJson":"JSON 格式不正确","devTitle":"插件开发","devRuntime":"运行时插件是一个 JSON 清单：声明设置项、注入代码、CSP 白名单、事件 Webhook 和定时任务，在线安装、无需重新构建。","devPackage":"代码包插件是一个 Nuxt Layer（可以加页面、组件、API），用 CLI 安装后重新构建部署：","devEvents":"可监听的事件：","devDocs":"插件开发文档","packageTitle":"这是代码包插件","packageHint":"代码包插件会改变构建产物，请在项目目录（或 CI）执行下面的命令，然后重新构建并部署：","copy":"复制命令","cat_analytics":"统计分析","cat_marketing":"营销客服","cat_notification":"消息通知","cat_seo":"SEO","cat_developer":"开发者","cat_content":"内容","cat_commerce":"电商","cat_security":"安全","cat_other":"其他","planUntil":"方案有效期至 {date}"},"scheduled":"定时发布","revisions":{"button":"历史","title":"历史版本","hint":"（每次保存前自动保留，最多 30 个）","loading":"加载中…","empty":"还没有历史版本","pick":"选择左侧一个版本查看","close":"关闭","restore":"恢复此版本","confirmRestore":"用这个版本覆盖当前内容？当前内容会先存为一个历史版本。","restored":"已恢复到所选版本","restoreFailed":"恢复失败"},"security":{"title":"安全验证","intro":"为后台登录、留言表单、评论、订阅和下单选择人机验证方式。服务端会校验每次提交。","current":"当前生效：{provider}","scenesOn":"作用于 {scenes}","forced":"已被环境变量 NUXT_CAPTCHA_PROVIDER 强制为「{provider}」，此处的选择在移除该变量后才生效。","provider":"验证方式","providers":{"auto":"跟随站点默认","none":"关闭","local":"内置图形验证码","turnstile":"Cloudflare Turnstile","recaptcha":"Google reCAPTCHA"},"providerHints":{"auto":"未在此保存选择时使用：配置了 Turnstile 密钥则用 Turnstile，否则用内置图形验证码。","none":"不做人机验证，仅保留频率限制。","local":"无需第三方服务和密钥，国内外均可访问。","turnstile":"大多数访客无感通过，需要 Cloudflare 的站点密钥。","recaptcha":"v2 复选框或 v3 无感评分，国内可改用 recaptcha.net。"},"sources":{"env":"来源：环境变量","admin":"来源：后台设置","site-default":"来源：站点默认配置","auto":"来源：自动（按已配置的密钥）"},"localMode":"验证码类型","localModes":{"chars":"字母数字","math":"算术题"},"localLength":"字符个数","turnstileHelp":"在 Cloudflare 控制台创建 Turnstile 小组件，把站点域名加入主机名列表。","recaptchaHelp":"在 reCAPTCHA 管理后台创建密钥，类型需与下方版本一致，并加入站点域名。","recaptchaVersion":"版本","recaptchaVersions":{"v2":"v2「我不是机器人」复选框","v3":"v3 无感评分"},"recaptchaHost":"脚本域名","chinaOk":"中国大陆可访问","minScore":"最低分数","minScoreHint":"0.1 到 1，低于该分数的提交会被拒绝，默认 0.5","envKeys":"留空则使用环境变量中已配置的密钥。","secretKept":"已保存，留空表示不修改","keysRequired":"该验证方式需要同时填写站点密钥和私钥","scenesTitle":"启用位置","scenes":{"login":"后台登录","contact":"联系表单","comment":"博客评论","subscribe":"邮件订阅","checkout":"商城下单"},"scenesHint":"未勾选的位置不做人机验证。基于 useTurnstile() / useCaptcha() 的站点自定义表单会自动套用当前方式。","testTitle":"测试并保存","testHelp":"保存前需用新设置完成一次验证，防止密钥填错导致无法登录后台。","test":"测试新设置","saveTested":"验证通过，保存","widgetFailed":"验证组件加载失败：请检查站点密钥、域名配置，或站点 CSP 是否放行了对应域名。","saved":"安全验证设置已保存","cspNote":"如果站点自定义了内容安全策略（CSP），需在 script-src 与 frame-src 中放行：Turnstile 为 challenges.cloudflare.com；reCAPTCHA 为 www.google.com、www.gstatic.com、www.recaptcha.net。","lockoutNote":"万一被锁在后台外：设置环境变量 NUXT_CAPTCHA_PROVIDER=none 后重新部署，登录后再改回。","unsupported":"本站的{scenes}使用了站点自己的表单代码，尚未接入这里的验证组件，因此不受此设置控制。"},"verify":{"title":"两步验证","hint":"打开身份验证器 App，输入显示的 6 位验证码。","recoveryHint":"输入一个备用恢复码（每个只能用一次）。","submit":"验证并登录","useRecovery":"手机不在身边？使用恢复码","useApp":"使用验证器 App 的验证码","back":"返回登录","failed":"验证失败","invalid":"验证码不正确，请重试","expired":"验证已过期，请重新登录"},"account":{"title":"账户安全","mfa":"两步验证","on":"已开启","off":"未开启","mfaIntro":"登录时除密码外还需输入手机验证器 App（Google Authenticator、Microsoft Authenticator、1Password、Authy 等）生成的验证码，即使密码泄露也无法登录。","mfaSetup":"开启两步验证","mfaScan":"用验证器 App 扫描二维码，然后输入 App 显示的 6 位验证码完成开启。","mfaKey":"无法扫码？手动输入密钥：","mfaConfirm":"确认开启","mfaOn":"两步验证已开启","mfaOff":"两步验证已关闭","mfaEnabledAt":"开启于 {date}","recoveryLeft":"剩余 {n} 个恢复码","recoverySave":"请立即保存这些恢复码（只显示一次）。手机丢失时，每个恢复码可代替验证码登录一次。","copy":"复制","copied":"已复制","saved":"我已保存","recoveryNew":"重新生成恢复码","mfaDisable":"关闭两步验证","mfaDisableConfirm":"确认关闭","codeOrRecovery":"验证码或恢复码","currentPassword":"当前密码","devices":"登录设备","signOutOthers":"退出其他所有设备","signOut":"退出","signedOut":"已退出登录","thisDevice":"当前设备","signedIn":"登录于","lastActive":"最近活动","noDevices":"暂无记录（升级前的登录不在此列出，可用「退出其他所有设备」统一退出）。","devicesHint":"看到不认识的设备？退出它并立即修改密码。","unknownDevice":"未知设备","password":"修改密码","newPassword":"新密码","confirmPassword":"确认新密码","passwordHint":"至少 8 位；修改后其他设备会自动退出","passwordMismatch":"两次输入的新密码不一致","passwordChanged":"密码已修改，其他设备已退出","changePassword":"修改密码","signOutAll":"退出该用户所有设备","signOutAllConfirm":"确定让「{name}」在所有设备上退出登录？","mfaReset":"重置两步验证","mfaResetConfirm":"确定关闭「{name}」的两步验证？该用户会被退出登录，需要重新设置。","done":"已完成"},"audit":{"title":"审计日志","subtitle":"登录记录和后台的每一次修改，保留 {days} 天。","all":"全部操作","signIns":"登录与安全","search":"搜索用户、对象、IP…","time":"时间","user":"用户","action":"操作","detail":"详情","empty":"暂无记录","actions":{"auth_login":"登录","auth_login_failed":"登录失败","auth_logout":"退出登录","auth_token":"获取 API 令牌","auth_mfa_failed":"两步验证失败","auth_mfa_enabled":"开启两步验证","auth_mfa_disabled":"关闭两步验证","auth_recovery_used":"使用恢复码登录","auth_recovery_regenerated":"重新生成恢复码","auth_password_changed":"修改密码","auth_sessions_revoked":"退出设备"}},"redirects":{"title":"跳转管理","subtitle":"旧网址、多个域名统一跳到新地址，保留搜索排名和外链流量。修改约 1 分钟内生效，无需重新部署。","tabPath":"网址跳转","tabDomain":"域名跳转","tab404":"404 记录","pathHelp":"来源写站内路径，如 /old-page；结尾 * 匹配整个目录（/blog/* → /zh/posts/*）；可带参数匹配旧 WordPress 链接（/?p=12）。目标可以是 /路径 或完整网址；410 表示内容已永久删除。","domainHelp":"让别名域名（如旧域名、.cn/.com 等）访问时跳到主域名，并保留路径和参数。来源填 * 表示「除主域名外的所有域名」（本地开发、pages.dev 预览和 IP 访问除外），常用于把 www 与不带 www 的域名统一。域名需已绑定到本站点。","add":"添加规则","import":"批量导入","search":"搜索…","source":"来源","target":"目标","sourceDomain":"来源域名","targetDomain":"主域名","sourceHint":"如 /old-page、/blog/*、/?p=12","sourceDomainHint":"如 old.com（自动包含 www.old.com）；* = 其他所有域名","targetHint":"如 /zh/new-page 或 https://…","status":"状态码","s301":"永久跳转（推荐）","s302":"临时跳转","s410":"已删除","note":"备注","hits":"命中","saved":"已保存","empty":"暂无规则","confirmDelete":"再点一次删除","importHelp":"每行一条：来源 目标 [状态码]，用空格、Tab 或逗号分隔；可直接粘贴其他跳转插件导出的 CSV（前两列为来源和目标）。已存在的来源会跳过。","importDomainHelp":"每行一条：来源域名 主域名 [状态码]。","importRun":"导入","imported":"已导入 {added} 条，跳过 {skipped} 条","test":"测试","testPlaceholder":"输入网址或路径测试跳转，如 /old-page 或 https://old.com/x","testNone":"没有匹配的规则（正常显示页面）","log404":"记录 404","log404Help":"开启后记录访问出现 404 的页面路径（不记录 IP），常见的扫描探测路径会被忽略。按访问次数找出需要补跳转的旧链接，90 天未再出现的记录自动清理。","byHits":"按次数","byRecent":"按时间","clear404":"清空记录","path":"路径","lastSeen":"最近出现","addRedirect":"添加跳转","empty404":"暂无 404 记录"},"navGroups":{"content":"内容","products":"产品","users":"用户与会员","growth":"SEO 与营销","extensions":"扩展功能","system":"系统","overview":"概览"},"menus":{"title":"导航菜单","subtitle":"维护网站的页头、页脚等导航，不用改代码。每种语言单独一份；保存后立即生效。","new":"新建菜单","key":"位置","keyHint":"primary = 页头，footer = 页脚；站点也可以自定义位置","keyPrimary":"页头主导航","keyFooter":"页脚链接","name":"名称","locale":"语言","copyFrom":"复制自","empty":"空菜单","none":"还没有菜单。新建一个 primary 菜单后，页头导航就由这里决定（没有菜单时使用站点自带的导航）。","add":"添加菜单项","addItem":"添加","search":"搜索…","nothing":"没有可添加的内容","label":"显示文字（留空则用内容标题）","newTab":"新窗口打开","up":"上移","down":"下移","indent":"作为上一项的子菜单","outdent":"移出子菜单","saved":"菜单已保存","confirmDelete":"确认删除","emptyTree":"从左侧添加菜单项","treeHint":"拖动菜单项可以调整顺序；最多三级。指向的页面、文章或产品未发布时，该菜单项不会显示。","types":{"custom":"自定义链接","page":"页面","post":"文章","product":"产品","category":"文章分类","productCategory":"产品分类"},"unpublished":"未发布"},"preview":{"button":"预览链接","title":"分享预览","hint":"生成一个链接，没有后台账号的人也能用网站的正式页面样式查看这篇未发布的内容。链接到期后自动失效。","days":"{n} 天内有效","create":"生成链接","copy":"复制","copied":"预览链接已复制","until":"有效期至 {date}"},"backups":{"title":"自动备份","subtitle":"按时备份网站内容，保存到附件存储或通过 FTP 上传到指定服务器，保留最近若干份。","runNow":"立即备份","enabled":"定时备份","frequency":"频率","daily":"每天","weekly":"每周","hour":"时间（站点时区）","keep":"保留份数","storage":"保存到附件存储（{driver}）","storageHint":"存放在 private/backups/，不会公开访问，可在下方下载。","ftp":"上传到 FTP 服务器","ftpHost":"主机","ftpPort":"端口","ftpUser":"用户名","ftpPassword":"密码","passwordKept":"已保存，留空不修改","ftpDir":"目录（不存在会自动创建）","ftpSecure":"使用 FTPS（AUTH TLS）","test":"测试连接","ftpOk":"连接成功，目录中有 {n} 个文件","ftpFailed":"FTP 连接失败","contents":"备份内容与「工具 → 导出」相同：文章、页面、产品、分类、翻译、公开设置和媒体列表（.json.gz），可在「工具 → 导入」中恢复。不含账号、密钥和附件文件本身；插件数据（订单等）请另行备份数据库（Cloudflare D1 自带 30 天时间点恢复）。","noCron":"定时备份依赖定时任务 Worker（NUXT_CRON_SECRET 未设置），目前只能手动备份。","saved":"备份设置已保存","done":"备份完成","notAll":"备份未全部成功","history":"备份记录","none":"还没有备份","removed":"已轮换删除","status":{"ok":"成功","partial":"部分成功","failed":"失败","running":"进行中"},"trigger":{"manual":"手动","schedule":"定时"},"bucket":"存储桶（R2 / S3 / OSS / COS）","bucketHint":"备份到单独的存储桶，与网站附件分开保存：Cloudflare R2、AWS S3、阿里云 OSS、腾讯云 COS 或任何 S3 兼容存储。建议使用只允许读写这个桶的访问密钥。","bucketProvider":"服务商","bucketName":"存储桶名称","bucketRegion":"地域","bucketAccountId":"Cloudflare 账户 ID","bucketEndpoint":"Endpoint（选填）","bucketEndpointHint":"一般留空，按服务商自动生成；私有部署或其他兼容存储再填写","bucketKeyId":"Access Key ID","bucketSecret":"Secret Access Key","bucketDir":"目录","bucketOk":"存储桶连接正常（目录中已有 {n} 个文件）","bucketFailed":"存储桶连接失败","providers":{"r2":"Cloudflare R2","s3":"AWS S3","oss":"阿里云 OSS","cos":"腾讯云 COS","custom":"其他 S3 兼容存储"}},"mediaAlt":"替代文本（Alt）","mediaAltHint":"描述图片内容，供搜索引擎和读屏软件使用；点击编辑","searchIndex":{"title":"站内搜索索引","text":"已发布的文章、页面和产品会自动进入搜索索引（当前 {n} 条），访客在 /search 页面搜索。升级前的内容由定时任务逐步补齐，也可以在这里立即重建。","rebuild":"重建索引","running":"处理中… {n}","rebuilt":"索引已更新（处理 {n} 条）"},"collections":{"title":"内容类型","subtitle":"自定义案例、团队成员、常见问题、活动等内容，不用写代码：定义字段后，后台自动生成编辑表单，前台自动生成列表页和详情页。","new":"新建内容类型","presets":{"cases":"客户案例","team":"团队成员","faq":"常见问题","events":"活动"},"presetHint":"从模板开始 · {n} 个字段","name":"名称","key":"标识","keyHint":"小写字母、数字和横线，用于网址，创建后不能修改","icon":"图标","description":"说明（显示在列表页）","sortLabel":"排序","sort":{"newest":"最新在前","manual":"手动排序","title":"按标题"},"public":"公开（列表页 {path}，可被站内搜索和 sitemap 收录）","fields":"字段","fieldsHint":"标题、别名、语言、状态和封面图每个内容都有，不需要再加。","fieldLabel":"字段名称","fieldKey":"字段标识（英文）","required":"必填","options":"选项，每行一个","addField":"添加字段","types":{"text":"单行文本","textarea":"多行文本","richtext":"富文本","number":"数字","boolean":"是 / 否","date":"日期","image":"图片","images":"多张图片","url":"链接","select":"单选","list":"列表（每行一项）"},"saved":"内容类型已保存","count":"{n} 条内容","fieldCount":"{n} 个字段","isPublic":"公开","isPrivate":"仅后台","entries":"管理内容","edit":"设置字段","deleteWarn":"删除后其中的 {n} 条内容也会一并删除，无法恢复。请输入标识 {key} 确认。","newEntry":"新建内容","searchEntries":"搜索标题…","noEntries":"还没有内容","status":{"draft":"草稿","published":"已发布","scheduled":"定时发布"},"entrySaved":"已保存","confirmDelete":"确认删除","entryTitle":"标题","locale":"语言","publishedAt":"发布时间","sortOrder":"排序号（小的在前）","cover":"封面图","choose":"选择图片","addImage":"添加图片","onePerLine":"每行一项"},"roleAuthor":"作者","roleContributor":"投稿者","roleHelp":{"admin":"全部权限，包括设置、用户、插件和安全","editor":"管理所有文章、页面、产品、内容类型和媒体","author":"撰写并发布自己的文章，可以上传图片","contributor":"撰写自己的文章草稿，由编辑审核发布；只能选用已有图片"},"forms":{"title":"表单","subtitle":"询价单、报名表、问卷……复制嵌入代码放到任意页面即可显示，提交记录保存在这里并可邮件通知。","new":"新建表单","name":"名称","key":"标识","keyHint":"小写字母、数字和横线，创建后不能修改","statusLabel":"状态","open":"开放","closed":"已关闭","fields":"字段","fieldKey":"字段标识，例如 company","fieldLabel":"名称","required":"必填","options":"选项，每行一个","addField":"添加字段","notify":"通知邮箱","notifyHint":"收到新提交时发邮件，多个地址用逗号分隔；留空不发送","captcha":"使用验证码（安全设置中的“联系表单”场景）","success":"提交成功提示","submit":"提交按钮文字","saved":"表单已保存","copied":"已复制嵌入代码","confirmDelete":"再次点击删除表单及其全部提交","none":"还没有表单。新建一个询价单或报名表试试。","submissions":"提交记录","unread":"{n} 条新提交","count":"{n} 条提交","fieldCount":"{n} 个字段","noSubmissions":"暂无提交记录","markRead":"标为已读","archive":"归档","subStatus":{"new":"新","read":"已读","archived":"已归档"},"types":{"text":"单行文本","email":"邮箱","tel":"电话","textarea":"多行文本","number":"数字","select":"下拉选择","radio":"单选","checkbox":"多选","date":"日期","consent":"同意勾选框"}},"forgot":{"title":"找回密码","text":"输入后台账号的邮箱，我们会发送一封重置密码的邮件，链接 1 小时内有效。","submit":"发送重置邮件","sentTitle":"邮件已发送","sentText":"如果 {email} 是本站的后台账号，几分钟内会收到重置密码的邮件。","noMail":"没有收到？请检查垃圾邮件，或联系站点管理员在「用户」里为你发送重置邮件。","failed":"发送失败，请稍后再试","back":"返回登录"},"reset":{"title":"设置新密码","text":"为 {email} 设置新的后台密码。设置后，所有设备都需要重新登录。","password":"新密码","confirm":"再次输入新密码","rule":"至少 8 位","mismatch":"两次输入的密码不一致","submit":"保存新密码","doneTitle":"密码已更新","doneText":"请用新密码登录后台。","invalidTitle":"链接已失效","invalidText":"重置链接已过期或已经用过。请重新申请一封重置邮件。","again":"重新申请","failed":"保存失败，请稍后再试"},"users":{"invite":"发送邀请邮件，让用户自己设置密码","inviteHelp":"需要先在「邮件设置」里配置发信邮箱；链接 3 天内有效","invited":"已创建并向 {email} 发送邀请邮件","inviteFailed":"用户已创建，但邀请邮件发送失败","sendReset":"发送重置密码邮件","sendResetConfirm":"向 {email} 发送重置密码邮件？","resetSent":"已向 {email} 发送重置密码邮件"}},"blog":{"count":"共 {count} 篇文章","empty":"暂无文章","title":"新闻资讯","subtitle":"公司新闻、产品发布与技术洞察。","anonymous":"匿名","article":"正文","prev":"上一篇","next":"下一篇","related":"相关文章"},"categories":{"belt":"皮带输送机","chain":"链板输送机","lift":"提升机","roller":"滚筒输送机"},"common":{"all":"全部","backToBlog":"返回博客","backToHome":"返回首页","by":"佚名","contactUs":"联系我们","freeQuote":"免费报价","language":"语言","loading":"加载中…","noCases":"暂无案例","noPosts":"暂无文章","noProducts":"暂无产品","readMore":"阅读更多","search":"搜索","getQuote":"免费获取方案","tooManyRequests":"操作有点频繁，请稍等片刻再试一次，谢谢理解。","toggleTheme":"切换主题","views":"{n} 次浏览","verifyHuman":"请完成人机验证"},"docs":{"empty":"暂无文档","intro":"使用指南与部署说明","title":"文档中心"},"error":{"generic":"出错了","notFound":"页面走丢了","tooManyRequests":"你刚才有点忙。请稍等片刻，然后重试 - 感谢您的耐心等待。","notFoundTitle":"找不到页面","notFoundMessage":"您要查找的页面不存在或可能已被移动。","genericTitle":"出了点问题","genericMessage":"发生意外错误。请稍后重试。","redirectIn":"{seconds} 秒后重定向至主页...","goHome":"前往主页"},"products":{"category":"产品分类","description":"涵盖滚筒输送机、皮带输送机、链板输送机、提升机四大系列，支持非标定制。","empty":"该分类暂无产品","heading":"我们的产品","inquiry":"询价咨询","specs":"技术参数","subtitle":"覆盖云平台、AI 解决方案与智能硬件三大产品线。","title":"产品中心","viewDetails":"了解详情","related":"相关产品","inquiryHint":"需要报价或定制方案？告诉我们您的需求。"},"search":{"button":"搜索","hot":"热门关键词","placeholder":"请输入关键词","title":"站内搜索","results":"找到 {n} 条与「{q}」相关的结果","empty":"没有找到相关内容，换个关键词试试。","more":"加载更多","kinds":{"all":"全部","post":"文章","page":"页面","product":"产品","item":"内容"}},"setup":{"title":"安装 NuxtCMS","subtitle":"创建管理员账号并完成站点初始化","siteName":"站点名称","siteDescription":"站点描述","adminName":"管理员姓名","adminEmail":"管理员邮箱","adminPassword":"管理员密码","passwordHint":"至少 6 位","install":"完成安装","success":"安装完成","successDesc":"欢迎使用 NuxtCMS！","failed":"安装失败","demoContent":"导入演示内容","demoContentHint":"写入示例产品、文章与关于页（中英文），方便快速预览站点。","token":"安装令牌","tokenHint":"部署时设置的 NUXT_SETUP_TOKEN"},"nav":{"home":"首页","products":"产品","blog":"资讯","about":"关于我们","contact":"联系我们","docs":"文档","admin":"管理后台","getStarted":"预约演示","menu":"菜单"},"home":{"heroKicker":"面向企业的数字化平台","heroTitle":"用云原生与 AI 驱动业务增长","heroSubtitle":"我们为企业提供云平台、人工智能与智能硬件一体化解决方案，帮助团队更快交付、更稳运行。","heroCta":"查看产品","heroSecondary":"联系我们","statsProjects":"交付项目","statsClients":"企业客户","statsUptime":"服务可用性","statsCountries":"覆盖国家","featuresTitle":"为什么选择我们","featuresSubtitle":"从基础设施到智能应用，一站式的技术能力与全周期服务。","feature1Title":"云原生架构","feature1Desc":"基于容器与 Serverless 的弹性架构，按需伸缩，成本可控。","feature2Title":"AI 深度集成","feature2Desc":"大模型与业务流程融合，覆盖智能客服、知识库与数据洞察。","feature3Title":"企业级安全","feature3Desc":"端到端加密、细粒度权限与审计日志，满足合规要求。","feature4Title":"极速交付","feature4Desc":"成熟的组件库与自动化流水线，让新需求数天内上线。","productsTitle":"核心产品","productsSubtitle":"覆盖云平台、AI 解决方案与智能硬件三大产品线。","newsTitle":"最新动态","newsSubtitle":"公司新闻、产品发布与技术洞察。","viewAll":"查看全部","ctaTitle":"准备好开始了吗？","ctaSubtitle":"留下您的需求，我们的顾问将在一个工作日内与您联系。","ctaButton":"联系我们"},"contact":{"title":"联系我们","subtitle":"无论是产品咨询、合作洽谈还是技术支持，都欢迎与我们联系。","name":"姓名","email":"邮箱","phone":"电话","message":"留言内容","submit":"发送留言","success":"留言已发送，我们会尽快与您联系。","failed":"发送失败，请稍后重试。","infoTitle":"联系方式","emailLabel":"邮箱","phoneLabel":"电话","addressLabel":"地址"},"footer":{"tagline":"基于 Nuxt 4 构建的现代内容管理系统。","company":"公司","contact":"联系","poweredBy":"Powered by NuxtCMS"},"captcha":{"placeholder":"输入图中字符","mathPlaceholder":"输入计算结果","refresh":"看不清？换一张","recaptchaNotice":"本站受 reCAPTCHA 保护"},"demo":{"banner":"这是 NuxtCMS 演示站点：数据每天自动恢复，付款为模拟，请勿填写真实个人信息。","enterAdmin":"进入后台演示","adminNotice":"演示模式：账号、邮件、插件、设置、上传等功能已禁用，数据每天自动恢复。","login":"一键进入演示后台","loginHint":"无需密码，使用共享的演示账号登录。","checkoutNotice":"演示站点：已填好示例信息，付款为模拟，不会产生真实扣款。","simulatePay":"模拟支付成功","simulated":"演示模式下为模拟付款，不会产生真实扣款。","close":"关闭"},"preview":{"bar":"预览模式：你看到的可能是未发布的内容","exit":"退出预览"},"collection":{"empty":"暂无内容","notFound":"内容不存在","yes":"是","no":"否"},"cmsForm":{"thanks":"已收到，谢谢！我们会尽快联系你。","failed":"提交失败，请稍后再试","submit":"提交"},"aiAudit":{"title":"AI 搜索体检","adminHint":"检查 ChatGPT、Perplexity、Claude 等 AI 搜索和传统搜索引擎能否读懂这个网站：llms.txt、AI 爬虫权限、结构化数据、多语言标记、站点地图和响应速度。留空检查本站，也可以填写其他网址。","ownSite":"留空检查本站，或填写网址，例如 example.com","run":"开始体检","failed":"体检失败","responseTime":"体检服务器测得响应 {ms} 毫秒","crawlers":"robots.txt 对 AI 爬虫的设置","allowed":"允许","blocked":"禁止","grade":{"good":"AI 搜索友好","fair":"还有提升空间","poor":"AI 搜索很难读懂这个网站"},"checks":{"llms":{"title":"llms.txt（给 AI 的网站说明）","pass":"已提供 llms.txt，AI 助手可以快速了解网站内容和重点页面。","fail":"没有找到 /llms.txt。AI 助手只能自己猜网站的重点，引用和推荐的机会更少。"},"aiCrawlers":{"title":"AI 搜索爬虫权限","pass":"robots.txt 允许主要 AI 搜索爬虫读取首页（{value}）。","fail":"robots.txt 只允许 {value} 个主要 AI 搜索爬虫读取首页，被禁止的 AI 搜索不会引用这个网站。"},"speed":{"title":"响应速度","pass":"首页 {value} 毫秒内返回。","fail":"首页用了 {value} 毫秒才返回，访客和爬虫都可能等不及。"},"structuredData":{"title":"结构化数据（JSON-LD）","pass":"首页有结构化数据：{value}。","fail":"首页没有 JSON-LD 结构化数据，AI 和搜索引擎难以确认公司、产品等关键信息。"},"hreflang":{"title":"多语言标记（hreflang）","pass":"标记了 {value} 个语言版本，各国搜索引擎会给访客展示对应语言的页面。","fail":"没有 hreflang 多语言标记（{value} 个），海外访客可能看到不是母语的页面。单语言网站可以忽略。"},"sitemap":{"title":"站点地图","pass":"找到站点地图，新页面能更快被收录。","fail":"没有找到站点地图（robots.txt 中的 Sitemap 或 /sitemap.xml）。"},"meta":{"title":"标题与描述","pass":"首页有标题和足够长的描述（{value} 字）。","fail":"首页缺少标题或描述太短（{value} 字），AI 摘要和搜索结果里会显示得不完整。"},"https":{"title":"HTTPS 加密","pass":"网站使用 HTTPS。","fail":"网站没有使用 HTTPS，浏览器会提示不安全。"},"canonical":{"title":"规范链接（canonical）","pass":"首页声明了规范链接。","fail":"首页没有规范链接，同一内容的多个网址会分散权重。"}}},"localeSuggest":{"text":"本页面有{language}版本。","switch":"切换到{language}","dismiss":"不用了"},"oauth":{"continueWith":"使用 {provider} 登录","or":"或","providers":{"wechat":"微信","qq":"QQ","dingtalk":"钉钉","feishu":"飞书","microsoft":"Microsoft"},"errors":{"state":"登录已过期，请重试。","denied":"已取消授权。","provider":"第三方登录失败，请稍后再试。","notLinked":"该第三方账号未绑定后台账户。请先用邮箱密码登录，在「账户安全」中绑定。","taken":"该第三方账号已绑定到其他账户。","disabled":"该账户已被停用。","signup":"暂不开放新用户注册。","signin":"请先登录后台再绑定。","rate":"尝试次数过多，请稍后再试。"},"account":{"title":"第三方登录","hint":"绑定后可直接用这些账号登录后台，邮箱密码登录仍然可用。","connect":"绑定 {provider}","unlink":"解除绑定","unlinkConfirm":"确定解除与 {provider} 的绑定？","linked":"已绑定","lastUsed":"最近使用","notMigrated":"数据库尚未升级（缺少 user_identities 表），请先执行迁移。"},"admin":{"title":"登录方式","intro":"接入 Google、GitHub、微软、微信、钉钉、飞书或任意 OpenID Connect / OAuth 2.0 服务，用于后台登录和网站会员（如 SaaS 账户）登录。邮箱密码登录始终保留。","adminRules":"后台登录规则","linkByEmail":"按邮箱自动绑定","linkByEmailHint":"第三方确认过的邮箱与已有后台账户相同时，首次登录自动绑定（微软多租户应用的邮箱不受信任，不会自动绑定）。","autoCreateDomains":"自动创建账户的邮箱域名","autoCreateDomainsHint":"这些域名下经过验证的邮箱首次登录时自动创建后台账户；留空则不创建，只有已绑定或邮箱匹配的账户能登录。","autoCreateRole":"新账户角色","optional":"可选","passwordStays":"第三方登录只是额外的入口：邮箱 + 密码登录、找回密码和两步验证照常可用；开启两步验证的账户用第三方登录后仍需输入验证码。","enabled":"启用","forAdmin":"后台登录","forSite":"网站会员登录","buttonLabel":"按钮名称","providerId":"标识","providerIdHint":"以 custom- 开头，最多 16 个字符，保存后不可修改（回调地址包含它）。","custom":"自定义","fromEnv":"来自环境变量","ready":"已就绪","incomplete":"未填完整","secretKept":"已保存，留空则不修改","trustEmail":"信任该服务返回的邮箱（用于按邮箱绑定）","callback":"回调地址（在第三方开放平台中填写）","copy":"复制","copied":"已复制","console":"打开开发者后台","remove":"移除","removeConfirm":"移除 {provider}？保存后生效，已绑定的账户记录会保留。","add":"添加登录方式","addPlaceholder":"选择服务…","saved":"登录方式已保存","options":{"tenant":"租户（tenant）","baseUrl":"GitLab 地址","domain":"版本（feishu / lark）","issuer":"Issuer 地址","scope":"Scope","authorizeUrl":"授权地址","tokenUrl":"Token 地址","userinfoUrl":"用户信息地址","idField":"用户 ID 字段","emailField":"邮箱字段","nameField":"名称字段","avatarField":"头像字段","tokenAuth":"Token 认证方式（post / basic）"}}}}}