{"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)"}}}}}