{"en":{"a11y":{"language":"Language","loading":"Loading","coverImage":"Cover image"},"common":{"email":"Email","password":"Password","name":"Name","cancel":"Cancel","signIn":"Sign in","signOut":"Sign out","signUp":"Sign up","goHome":"Go to Home","edit":"Edit","delete":"Delete","save":"Save","anonymous":"Anonymous","theme":{"label":"Theme","auto":"Auto","light":"Light","dark":"Dark"}},"status":{"open":"Open","planned":"Planned","in_progress":"In Progress","done":"Completed"},"time":{"justNow":"just now","minutesAgo":"{n}m ago","hoursAgo":"{n}h ago","daysAgo":"{n}d ago","monthsAgo":"{n}mo ago","yearsAgo":"{n}y ago"},"nav":{"feedback":"Feedback","roadmap":"Roadmap","changelog":"Changelog","board":"Board","members":"Members","portal":"Portal","workspace":"Workspace","sso":"Single Sign-On","dashboard":"Dashboard","changePassword":"Change Password","widget":"Widget"},"board":{"boards":"Boards","allFeedback":"All Feedback","topRequests":"Top Requests","recentRequests":"Recent Requests","sortTop":"Top","sortRecent":"Recent","search":"Search","searchPlaceholder":"Search feedback…","clearSearch":"Clear search","closeSearch":"Close search","newRequest":"New Request","noFeedback":"No feedback yet","noMatches":"No matches for “{query}”","noMatchesHint":"Nobody’s raised this yet — be the first.","comments":"{n} comments","loading":"Loading...","loadMore":"Load More","poweredBy":"Powered by "},"roadmap":{"title":"Roadmap","subtitle":"Our current strategic roadmap and development status.","loading":"Loading...","loadMore":"Load more","emptyColumn":"No items in {status} yet.","addItem":"Add item"},"changelog":{"title":"Changelog","subtitle":"Product updates, fixes, and improvements.","empty":"No updates yet","emptyHint":"Check back soon for product updates.","loading":"Loading...","loadMore":"Load more","notFound":"This changelog entry was not found","notFoundHint":"It may have been removed or the link is outdated.","back":"Back to Changelog","showFull":"Show full update","openFull":"Open full page","expand":"Expand update","addReaction":"Add reaction","reactWith":"React with {emoji}","category":{"new":"New","improved":"Improved","fixed":"Fixed"},"admin":{"title":"Changelogs","subtitle":"Manage product updates","create":"Create Log","filterStatus":"Status","searchPlaceholder":"Search logs...","noImage":"No featured image","noEntries":"No changelog entries match the current filters.","showing":"Showing {from} to {to} of {total} entries","entriesShort":"{total} entries","status":{"all":"All Status","published":"Published","draft":"Draft","needs_update":"Needs update"}},"editor":{"back":"Back","view":"View","publish":"Publish","details":"Details","featuredImage":"Featured Image","uploading":"Uploading...","clickReplace":"Click to replace","clickUpload":"Click to upload cover image","coverHint":"Recommended: 1200 × 480 px (2.5:1)","titleLabel":"Title","titlePlaceholder":"e.g. What's new in our latest release","types":"Types","content":"Content","contentPlaceholder":"Write your changelog here...","aiWrite":"AI Write","loadFailed":"Failed to load changelog","titleContentRequired":"Title and content are required","titleContentRequiredPublish":"Title and content are required to publish","saveFailed":"Failed to save","publishSuccess":"Changelog published successfully","publishFailed":"Failed to publish","deleteTitle":"Delete this changelog?","deleteDescription":"This action cannot be undone. This will permanently delete this changelog entry and all its reactions.","deleteFailed":"Failed to delete","unsavedTitle":"Unsaved changes","unsavedDescription":"You have unsaved changes. Are you sure you want to leave?","leave":"Leave","stay":"Stay"},"ai":{"title":"Changelog AI Assistant","subtitle":"Generate a draft from your feedback and changes","selectFeedback":"Select related feedback","optional":"(Optional)","pickTooltip":"Search for other posts to include","pickFeedback":"Pick Feedback","remove":"Remove","stylePreset":"Style Preset","viewExample":"View style example","describeUpdates":"Describe your updates","describePlaceholder":"What did you change? (e.g. Added GitHub login, fixed the markdown list bug...)","provideOne":"Please provide either linked feedback or a description of your updates.","examplePreview":"Example Preview","generating":"Generating...","generate":"Generate","generateFailed":"AI generation failed","styles":{"concise":{"name":"Concise","desc":"Direct and clear tone — good for daily or minor updates"},"structured":{"name":"Structured","desc":"Categorized and scannable tone — good for large releases with multiple changes"},"benefitLed":{"name":"Benefit-led","desc":"Value-focused tone — good for major features you want to highlight"},"witty":{"name":"Witty","desc":"Playful and light tone — good for routine maintenance or bug fixes"}}},"picker":{"title":"Pick Feedback","subtitle":"Select related posts to include in your changelog.","searchPlaceholder":"Search by title...","noResults":"No feedback found","selectedSuffix":"selected","limitReached":"(limit reached)","confirm":"Confirm Selection"}},"post":{"submit":{"selectBoard":"Select Board","titlePlaceholder":"What's on your mind?","bodyPlaceholder":"Explain your thoughts in detail...","submitting":"Submitting...","submit":"Post Feedback","dialogTitle":"Submit Feedback","dialogDescription":"Submit new feedback","errors":{"selectBoard":"Please select a board","titleRequired":"Title is required","contentRequired":"Content is required","submitFailed":"Failed to submit"}},"similar":{"finding":"Finding Similar Posts","found":"Found {count} Similar Posts","panelTitle":"Similar Posts","empty":"No similar posts found","expandAll":"Expand All Similar Posts"},"detail":{"upvotes":"Upvotes","titlePlaceholder":"Title","editPlaceholder":"Edit your post...","saving":"Saving...","saveChanges":"Save Changes","deleteTitle":"Delete this post?","deleteDescription":"This action cannot be undone. This will permanently delete the post and all its comments.","linkCopied":"Link copied to clipboard","linkCopyFailed":"Failed to copy link","discussion":"Discussion ({count})","noComments":"No comments yet","noCommentsHint":"Be the first to share your thoughts","loadingMore":"Loading...","viewMoreComments":"View more comments","board":"Board","status":"Status","author":"Author","none":"None","shareRequest":"Share Request","modalTitle":"Feedback Detail","modalDescription":"Post detail modal","openInPage":"Open in new page","sort":{"newest":"Newest","oldest":"Oldest","top":"Top"},"errors":{"titleRequired":"Title is required","contentRequired":"Content is required","saveFailed":"Failed to save","deleteFailed":"Failed to delete"}},"merge":{"tooltip":"Merge","toThis":"Merge to this post","thisInto":"Merge this post into...","intoCurrent":"Merge into current","currentInto":"Merge current into this","dialogTitle":"Merge Feedback","dialogSubtitle":"Consolidate similar requests into a single post to streamline your roadmap.","searchPlaceholder":"Search for feedback to merge...","searching":"Searching...","noResults":"No posts found","merging":"Merging...","action":"Merge","failed":"Merge failed","dialogDescription":"Search and select a post to merge","banner":"This post was merged into","mergedPostBy":"Merged post by {name}","mergedPost":"Merged post","unmerge":"Unmerge","loadMoreComments":"Load more comments","loadComments":"Load {count} comments"},"comment":{"edited":"(edited)","reply":"Reply","comment":"Comment","editPlaceholder":"Edit your comment...","replyPlaceholder":"Write a reply...","addPlaceholder":"Add a comment or feedback...","viewMoreReplies":"View {count} more replies","deleteTitle":"Delete this comment?","deleteDescription":"This action cannot be undone. This will permanently delete the comment and all its replies.","notifyUpvoters":"Notify upvoters","notifyUpvotersHint":"Also email upvoters. The author and subscribers always get it.","emailUpvoters":"Email upvoters"},"statusNotify":{"title":"Notify upvoters by email?","desc":"Send an automatic email update to notify upvoters about the status change.","customize":"Customize email","send":"Notify voters","dismiss":"Don't notify","messagePlaceholder":"Write a custom message for the upvoters…","sendDefault":"Send default email","sendCustom":"Send customized email"},"subscribe":{"title":"Subscribe to post","desc":"Get notified by email when there are changes.","subscribe":"Subscribe","unsubscribe":"Unsubscribe"}},"auth":{"emailPlaceholder":"you{'@'}example.com","passwordMinHint":"At least 8 characters","checkEmail":"Check your email","backToSignIn":"← Back to sign in","signingIn":"Signing in...","fields":{"current":"Current Password","new":"New Password","confirm":"Confirm Password"},"signIn":{"title":"Sign in to FeedLog","subtitle":"Sign in to submit feedback, vote, and comment","google":"Continue with Google","github":"Continue with GitHub","or":"or","withEmail":"Sign in with email","noAccount":"Don't have an account?","otherOptions":"Other sign in options"},"signInEmail":{"title":"Sign in with email","passwordPlaceholder":"Enter your password"},"signUp":{"title":"Sign up with email","namePlaceholder":"Your name","haveAccount":"Already have an account?"},"verifyEmail":{"sentTo":"We've sent a verification link to","instruction":"Please check your inbox and click the verification link to continue.","verified":"I've verified my email","didntReceive":"Didn't receive it?","resend":"Resend"},"forgot":{"title":"Forgot Password?","subtitle":"Enter your email to receive a password reset link.","submit":"Send Reset Link"},"resetSent":{"sentTo":"We've sent a password reset link to","instruction":"Click the link in the email to reset your password. The link expires in 1 hour."},"changePassword":{"title":"Change Password","setTitle":"Set Password","subtitle":"Update your account password","setSubtitle":"Add a password to your account","submit":"Update Password"},"resetPage":{"successTitle":"Password Reset","successBody":"Your password has been reset successfully.","expiredTitle":"Link Expired","expiredBody":"This password reset link has expired or is invalid. Please request a new one.","title":"Reset Your Password","subtitle":"Enter your new password below.","submit":"Reset Password","backHome":"← Back to home"},"verified":{"title":"Email Verified","body":"Your email has been verified successfully.","redirecting":"Redirecting..."},"commentPrompt":{"text":"Sign in to join the conversation"},"invite":{"loading":"Loading…","unavailableTitle":"Invitation unavailable","unavailableBody":"This invitation is no longer available.","goToApp":"Go to FeedLog","joinTitle":"Join FeedLog","joinTeam":"Join {org}'s team on FeedLog","signInToContinue":"Sign in to continue","anonymousHint":"You'll sign in or create a FeedLog account along the way.","joining":"Joining…","joinOrg":"Join {org}","notYou":"Not you?","signOut":"Sign out","sentToEmail":"This invitation was sent to {email}.","switchAccount":"Switch account"},"sso":{"pageTitle":"Sign-in unavailable","title":"We couldn't sign you in","body":"Single sign-on didn't complete — the sign-in link may have expired or been misconfigured. If this keeps happening, please contact your administrator.","continuingIn":"Continuing in {seconds}s…","continueNow":"Continue now"},"errors":{"emailNotVerified":"Please verify your email before signing in","invalidCredentials":"Invalid email or password","signInFailed":"Sign in failed","passwordTooShort":"Password must be at least 8 characters","signUpFailed":"Sign up failed","notYetVerified":"Email not yet verified, please check your inbox","enterEmail":"Please enter your email","sendResetFailed":"Failed to send reset email","resendFailed":"Failed to resend verification email","passwordsMismatch":"Passwords do not match","changeFailed":"Failed to change password","setFailed":"Failed to set password","resetFailed":"Failed to reset password"},"success":{"verificationResent":"Verification email resent","passwordUpdated":"Password updated","passwordSet":"Password set successfully"}},"dashboard":{"all":"All","allBoards":"All Boards","backToSite":"Back to site","filter":{"status":"Status","board":"Board","merged":"Merged"},"nav":{"srTitle":"Navigation","srDescription":"Dashboard navigation menu","main":"Main","settings":"Settings","developer":"Developer"},"roadmap":{"title":"Roadmap","subtitle":"Feedback by status"},"boards":{"title":"Boards","subtitle":"Organize feedback by category","create":"Create Board","empty":"No boards yet","noResults":"No boards found","emptyHint":"Create your first board to start organizing feedback","posts":"{count} posts","noDescription":"No description","deleteTitle":"Delete board “{name}”?","deleteDescription":"This action cannot be undone. Posts in this board will become uncategorized.","editTitle":"Edit Board","nameLabel":"Board Name","descLabel":"Board Description","nameRequired":"Board name is required","saveFailed":"Failed to save board","saving":"Saving...","saveChanges":"Save Changes"},"feedback":{"title":"Feedback","subtitle":"All submissions","filtersBtn":"Filters","create":"Create Feedback","activeFilters":"Active Filters:","clearAll":"Clear all","canonicalOnly":"Canonical Only","mergedOnly":"Merged Only","noResults":"No feedback found","noResultsHint":"Try adjusting your filters","searchNoMatch":"No matches for “{query}”","searchNoMatchHint":"Try a different term, or clear the search.","unknownBoard":"Unknown","colUpvotes":"Upvotes","colTitle":"Title","colBoard":"Board","colAuthor":"Author","colComments":"Comments","colCreated":"Created","colStatus":"Status","showing":"Showing {from} to {to} of {total} entries","entriesShort":"{total} entries","searchPlaceholder":"Search feedback…","searchAria":"Search feedback","clearSearch":"Clear search"},"sso":{"title":"Single Sign-On","subtitle":"Let users from your product sign in without a second login","createSecret":"Create secret","limitReached":"Limit of {limit} secrets reached","signingSecrets":"Signing secrets","integrationGuide":"Integration guide","ownersOnly":"Owners only","ownersOnlyHint":"Only workspace owners can manage SSO signing secrets. Ask an owner if you need access.","secretsDesc":"Shared JWT secrets your backend uses to sign SSO tokens.","usedCount":"{used} of {limit} used","loading":"Loading…","empty":"No signing secrets yet","emptyHint":"Create a secret, then use it on your backend to sign SSO tokens for your users.","rotationLabel":"Rotating a secret:","rotationMid":" create a new one, switch your product to it, then ","rotationDisable":"disable","rotationEnd":" the old one (re-enable if something breaks). Delete it once you're sure. Tokens are verified against every enabled secret.","deleteTitle":"Delete this secret?","untitled":"Untitled","deleteDescription":" will be permanently deleted. Any tokens signed with it stop working immediately. This can't be undone — if you only want to pause it, disable it instead.","deletePermanently":"Delete permanently","createFailed":"Failed to create secret","renameFailed":"Failed to rename secret","updateFailed":"Failed to update secret","deleteFailed":"Failed to delete secret","renameTitle":"Rename secret","renameDesc":"Update the label used to tell this secret apart. The key itself is unchanged.","createTitle":"Create signing secret","createDesc":"A new HS256 secret your backend uses to sign SSO tokens. You can reveal and copy it again any time.","labelLabel":"Label","labelOptional":"(optional)","labelPlaceholder":"e.g. Production, EU region, mobile app","labelHint":"Helps you tell multiple secrets apart when rotating.","created":"Created {date}","new":"New","reveal":"Reveal","hide":"Hide","copy":"Copy","copied":"Copied","active":"Active","disabled":"Disabled","rename":"Rename","enable":"Enable","disable":"Disable","guideEndpoint":"Endpoint","guideEndpointDesc":"Redirect signed-in users from your product to this URL.","guideQueryParams":"Query parameters","required":"Required","optional":"Optional","guideParamJwt":"HS256-signed token (see payload below).","guideParamReturnTo":"Where to land after sign-in. Same-host path or URL only (host-whitelisted). Defaults to /.","guideJwtPayload":"JWT payload","guideJwtPayloadDesc":"The signed-in user's info, carried in the token. FeedLog reads only these fields — any other claims are ignored.","guidePayloadEmail":"Identity key (globally unique) + notifications.","guidePayloadName":"Display name.","guidePayloadPicture":"Avatar URL.","guidePayloadExp":"Expiry (Unix seconds). Required — see TTL below.","guideSignTitle":"Sign & redirect (Node.js)","guideSignDesc":"Build the link on your backend.","guideTtlPre":"Token expiry (","guideTtlPost":") is required","guideTtlBody":"Recommended ~1 hour; hard cap 24 hours (±60s clock tolerance). Pre-sign tokens when you render the page — not when the user clicks — to avoid an extra round-trip.","guideMatchedByPre":"Users are matched by ","guideMatchedByEmail":"email","guideMatchedByPost":". A first-time email creates an end-user account (no extra login screen); changing a user's email creates a new account and does not migrate history."}},"settings":{"loading":"Loading…","reset":"Reset","saving":"Saving…","saveChanges":"Save changes","unsavedChanges":"You have unsaved changes","preview":"Preview","workspace":{"title":"Workspace","subtitle":"Your workspace's identity","general":"General","generalDesc":"How your workspace appears to members and in invitation emails.","nameLabel":"Workspace name","namePlaceholder":"Acme Corp","nameHint":"Your team or company name. Shown to members and in invitation emails."},"branding":{"title":"Branding","subtitle":"How your public feedback portal looks to visitors.","logo":"Logo","removeLogo":"Remove","logoHint":"PNG, JPG or SVG · recommended 256x256","brandColor":"Brand color","brandColorHint":"Drives buttons, links and accents.","defaultTheme":"Default theme","defaultThemeHint":"Default theme shown to visitors.","uploadFailed":"Failed to upload logo.","saveFailed":"Failed to save branding.","theme":{"system":"System","light":"Light","dark":"Dark"}},"portal":{"title":"Portal","subtitle":"Content shown on your public feedback portal","saveFailed":"Failed to save portal settings.","welcomeSection":"Welcome message","welcomeDesc":"The heading and intro shown at the top of your public portal.","titleLabel":"Title","titlePlaceholder":"Submit feedback for {name}","titleHint":"Shown as the main heading on your feedback portal.","descriptionLabel":"Description","descriptionPlaceholder":"Any bug reports and feature requests are welcome...","loadingEditor":"Loading editor...","descriptionHint":"Shown below the title to provide more context for visitors. Markdown supported."},"members":{"title":"Members","subtitle":"Manage who can access this workspace","invite":"Invite","pending":"Pending invitations","invitedAs":"Invited as","expiresIn":"expires in {time}","expired":"expired","copyLink":"Copy invitation link","revoke":"Revoke","membersSection":"Members","total":"{count} total","you":"You","remove":"Remove from org","lastOwnerNote":"The last owner of a workspace cannot be demoted or removed. Transfer ownership first.","inviteTitle":"Invite members","inviteDesc":"Send an email invitation. Invitations expire in 7 days.","emailNotConfigured":"Email not configured","emailNotConfiguredHint":"No Resend API key set. The invitation will be created but no email is sent — copy the link from the list and share it manually.","emailLabel":"Email addresses","emailPlaceholder":"alice{'@'}acme.com, bob{'@'}acme.com","emailHint":"Comma or newline separated","roleLabel":"Role","ownerWarning":"Owners have full administrative access — managing members, settings, and ownership. Only invite people you fully trust.","sending":"Sending…","creating":"Creating…","sendInvites":"Send invitations","createInvites":"Create invitations","invitationCreated":"Invitation created","invitationsCreated":"{count} invitations created","inviteToastEmailOn":"If the email doesn't arrive, copy the link from the list to share it manually.","inviteToastEmailOff":"No email was sent — copy the link from the list to share it manually.","roles":{"contributor":{"label":"Contributor","desc":"View feedback from inside the dashboard and join discussions."},"manager":{"label":"Manager","desc":"Manage feedback, changelogs, and the roadmap."},"owner":{"label":"Owner","desc":"Full access. Can manage members, settings, and ownership."}}},"widget":{"title":"Widget","subtitle":"The in-app feedback widget embedded in your product","loadFailed":"Failed to load widget settings.","saveFailed":"Failed to save.","saved":"Saved","installSection":"Installation","installDesc":"Install the SDK in your product, then initialise it with your workspace URL.","baseUrlLabel":"Workspace URL","baseUrlHint":"Pass this as baseUrl when initialising the SDK.","serverLabel":"On your server","serverHint":"The widget trusts whoever this endpoint says the visitor is, so keep it behind your own sign-in. Get the secret from Developer → SSO.","snippetLabel":"Install","copy":"Copy","copied":"Copied","enabledLabel":"Enable widget","enabledHint":"When off, the SDK renders nothing on your site.","supportSection":"Contact support","supportDesc":"When a message matches a rule below, the assistant points the visitor to support instead of creating public feedback.","emailLabel":"Support email","emailPlaceholder":"support{'@'}example.com","emailHint":"Without an address the assistant still suggests contacting support, just without naming one.","save":"Save","rulesLabel":"Rules","rulesHint":"Each enabled rule is added to the assistant instructions verbatim.","builtinBadge":"Built-in","addRule":"Add rule","editRule":"Edit rule","ruleLabel":"Redirect to support when…","rulePlaceholder":"user asks about enterprise contracts or custom pricing","ruleHint":"Complete the sentence above. Describe the situation, not the wording.","activeCount":"{count} of {max} rules enabled","limitTitle":"Rule limit reached","limitDesc":"At most {max} rules can be enabled at once. Turn one off before enabling another.","gotIt":"Got it","deleteTitle":"Delete this rule?","deleteDesc":"The assistant will stop redirecting to support for this situation.","deleteConfirm":"Delete","cancel":"Cancel","ownerOnly":"Only workspace owners and managers can change widget settings."}},"seo":{"portalTitle":"{name} Feedback","roadmapTitle":"{name} Roadmap","changelogTitle":"{name} Changelog","postFallback":"Feedback","changelogFallback":"Changelog","titleWithOrg":"{title} - {name}"},"widget":{"title":"Feedback","subtitle":"Help us make {product} better — share problems and ideas","allFeedback":"All feedback","seeOthers":"See what others have suggested","thisProduct":"this product","greeting":"Hi, I'm the feedback assistant — an AI, not a human agent 👋 Describe what's broken or missing, and I'll file it for the {product} team.","placeholder":"Describe your feedback…","send":"Send","thinking":"Reading your message…","close":"Close","back":"Back","myFeedback":"My feedback","viewAll":"View all feedback","noFeedback":"You haven't submitted any feedback yet.","postCount":"{count} post | {count} posts","withUpdates":"{count} with updates","viewOnBoard":"View on board","loading":"Loading…","loginTitle":"Sign in to send feedback","loginDesc":"Sign in to your account to share feedback and follow its progress.","login":"Sign in","sendFailed":"Could not send that. Please try again.","loadFailed":"Could not load your feedback.","attachImage":"Attach image","uploadFailed":"Could not upload that image. Please try again.","uploadTooLarge":"Images must be smaller than {size}MB."}},"zh":{"a11y":{"language":"语言","loading":"加载中","coverImage":"封面图片"},"common":{"email":"邮箱","password":"密码","name":"姓名","cancel":"取消","signIn":"登录","signOut":"退出登录","signUp":"注册","goHome":"返回首页","edit":"编辑","delete":"删除","save":"保存","anonymous":"匿名","theme":{"label":"主题","auto":"自动","light":"浅色","dark":"深色"}},"status":{"open":"开放","planned":"计划中","in_progress":"进行中","done":"已完成"},"time":{"justNow":"刚刚","minutesAgo":"{n} 分钟前","hoursAgo":"{n} 小时前","daysAgo":"{n} 天前","monthsAgo":"{n} 个月前","yearsAgo":"{n} 年前"},"nav":{"feedback":"反馈","roadmap":"路线图","changelog":"更新日志","board":"看板","members":"成员","portal":"门户","workspace":"工作区","sso":"单点登录","dashboard":"控制台","changePassword":"修改密码","widget":"反馈组件"},"board":{"boards":"看板","allFeedback":"全部反馈","topRequests":"热门请求","recentRequests":"最新请求","sortTop":"热门","sortRecent":"最新","search":"搜索","searchPlaceholder":"搜索反馈…","clearSearch":"清除搜索","closeSearch":"关闭搜索","newRequest":"新建反馈","noFeedback":"还没有反馈","noMatches":"没有匹配“{query}”的结果","noMatchesHint":"还没有人提过 —— 来做第一个吧。","comments":"{n} 条评论","loading":"加载中……","loadMore":"加载更多","poweredBy":"技术支持 "},"roadmap":{"title":"路线图","subtitle":"我们当前的战略路线图与开发进度。","loading":"加载中……","loadMore":"加载更多","emptyColumn":"还没有{status}的条目。","addItem":"添加条目"},"changelog":{"title":"更新日志","subtitle":"产品更新、修复与改进。","empty":"还没有更新","emptyHint":"稍后再来看看产品更新吧。","loading":"加载中……","loadMore":"加载更多","notFound":"未找到该更新日志","notFoundHint":"它可能已被删除,或链接已失效。","back":"返回更新日志","showFull":"查看完整更新","openFull":"打开完整页面","expand":"展开更新","addReaction":"添加回应","reactWith":"用 {emoji} 回应","category":{"new":"新增","improved":"改进","fixed":"修复"},"admin":{"title":"更新日志","subtitle":"管理产品更新","create":"新建日志","filterStatus":"状态","searchPlaceholder":"搜索日志……","noImage":"暂无封面图","noEntries":"没有符合当前筛选条件的更新日志。","showing":"显示第 {from}–{to} 条,共 {total} 条","entriesShort":"共 {total} 条","status":{"all":"全部状态","published":"已发布","draft":"草稿","needs_update":"待更新"}},"editor":{"back":"返回","view":"查看","publish":"发布","details":"详情","featuredImage":"封面图","uploading":"上传中……","clickReplace":"点击替换","clickUpload":"点击上传封面图","coverHint":"推荐尺寸:1200 × 480 px(2.5:1)","titleLabel":"标题","titlePlaceholder":"例如:我们最新版本的新功能","types":"类型","content":"正文","contentPlaceholder":"在此撰写更新日志……","aiWrite":"AI 撰写","loadFailed":"加载更新日志失败","titleContentRequired":"标题和内容不能为空","titleContentRequiredPublish":"发布前必须填写标题和内容","saveFailed":"保存失败","publishSuccess":"更新日志发布成功","publishFailed":"发布失败","deleteTitle":"删除这条更新日志?","deleteDescription":"此操作无法撤销,将永久删除该更新日志及其所有回应。","deleteFailed":"删除失败","unsavedTitle":"有未保存的更改","unsavedDescription":"你有未保存的更改。确定要离开吗?","leave":"离开","stay":"留下"},"ai":{"title":"更新日志 AI 助手","subtitle":"根据你的反馈和改动生成草稿","selectFeedback":"选择相关反馈","optional":"(可选)","pickTooltip":"搜索要加入的其他反馈","pickFeedback":"选择反馈","remove":"移除","stylePreset":"风格预设","viewExample":"查看风格示例","describeUpdates":"描述你的更新","describePlaceholder":"你改了什么?(例如:新增 GitHub 登录,修复 Markdown 列表的 bug……)","provideOne":"请至少提供关联反馈或更新描述其中之一。","examplePreview":"示例预览","generating":"生成中……","generate":"生成","generateFailed":"AI 生成失败","styles":{"concise":{"name":"简洁","desc":"直接清晰的语气——适合日常或小改动"},"structured":{"name":"结构化","desc":"分类清晰、便于浏览——适合包含多项改动的大版本"},"benefitLed":{"name":"价值导向","desc":"聚焦价值的语气——适合想重点突出的重要功能"},"witty":{"name":"俏皮","desc":"轻松活泼的语气——适合日常维护或 bug 修复"}}},"picker":{"title":"选择反馈","subtitle":"选择要加入更新日志的相关反馈。","searchPlaceholder":"按标题搜索……","noResults":"没有找到反馈","selectedSuffix":"已选","limitReached":"(已达上限)","confirm":"确认选择"}},"post":{"submit":{"selectBoard":"选择看板","titlePlaceholder":"你在想什么?","bodyPlaceholder":"详细描述你的想法……","submitting":"提交中……","submit":"发布反馈","dialogTitle":"提交反馈","dialogDescription":"提交新反馈","errors":{"selectBoard":"请选择一个看板","titleRequired":"请填写标题","contentRequired":"请填写内容","submitFailed":"提交失败"}},"similar":{"finding":"正在查找相似反馈","found":"找到 {count} 条相似反馈","panelTitle":"相似反馈","empty":"没有找到相似反馈","expandAll":"展开全部相似反馈"},"detail":{"upvotes":"赞成票","titlePlaceholder":"标题","editPlaceholder":"编辑你的反馈……","saving":"保存中……","saveChanges":"保存修改","deleteTitle":"删除这条反馈?","deleteDescription":"此操作无法撤销,将永久删除该反馈及其所有评论。","linkCopied":"链接已复制到剪贴板","linkCopyFailed":"复制链接失败","discussion":"讨论({count})","noComments":"还没有评论","noCommentsHint":"来发表第一条评论吧","loadingMore":"加载中……","viewMoreComments":"查看更多评论","board":"看板","status":"状态","author":"作者","none":"无","shareRequest":"分享反馈","modalTitle":"反馈详情","modalDescription":"反馈详情弹窗","openInPage":"在新页面打开","sort":{"newest":"最新","oldest":"最早","top":"最热"},"errors":{"titleRequired":"请填写标题","contentRequired":"请填写内容","saveFailed":"保存失败","deleteFailed":"删除失败"}},"merge":{"tooltip":"合并","toThis":"合并到这条反馈","thisInto":"将这条反馈合并到……","intoCurrent":"合并到当前反馈","currentInto":"将当前反馈合并到此","dialogTitle":"合并反馈","dialogSubtitle":"将相似的反馈合并为一条,让路线图更清晰。","searchPlaceholder":"搜索要合并的反馈……","searching":"搜索中……","noResults":"没有找到反馈","merging":"合并中……","action":"合并","failed":"合并失败","dialogDescription":"搜索并选择要合并的反馈","banner":"这条反馈已被合并到","mergedPostBy":"由 {name} 合并的反馈","mergedPost":"合并的反馈","unmerge":"取消合并","loadMoreComments":"加载更多评论","loadComments":"加载 {count} 条评论"},"comment":{"edited":"(已编辑)","reply":"回复","comment":"评论","editPlaceholder":"编辑你的评论……","replyPlaceholder":"写下回复……","addPlaceholder":"添加评论或反馈……","viewMoreReplies":"查看另外 {count} 条回复","deleteTitle":"删除这条评论?","deleteDescription":"此操作无法撤销,将永久删除该评论及其所有回复。","notifyUpvoters":"通知点赞者","notifyUpvotersHint":"额外通知点赞过的人。作者和已订阅的人始终会收到。","emailUpvoters":"邮件通知点赞者"},"statusNotify":{"title":"要给点赞者发邮件通知吗？","desc":"自动发一封邮件，告知点赞过这条反馈的人状态已变更。","customize":"自定义邮件","send":"通知点赞者","dismiss":"不通知","messagePlaceholder":"给点赞者写一段自定义消息…","sendDefault":"发送默认邮件","sendCustom":"发送自定义邮件"},"subscribe":{"title":"订阅这条反馈","desc":"有变更时通过邮件通知你。","subscribe":"订阅","unsubscribe":"取消订阅"}},"auth":{"emailPlaceholder":"you{'@'}example.com","passwordMinHint":"至少 8 个字符","checkEmail":"查收邮件","backToSignIn":"← 返回登录","signingIn":"登录中……","fields":{"current":"当前密码","new":"新密码","confirm":"确认密码"},"signIn":{"title":"登录 FeedLog","subtitle":"登录后即可提交反馈、投票和评论","google":"使用 Google 登录","github":"使用 GitHub 登录","or":"或","withEmail":"使用邮箱登录","noAccount":"还没有账号?","otherOptions":"其他登录方式"},"signInEmail":{"title":"使用邮箱登录","passwordPlaceholder":"输入密码"},"signUp":{"title":"使用邮箱注册","namePlaceholder":"你的名字","haveAccount":"已有账号?"},"verifyEmail":{"sentTo":"我们已发送验证链接至","instruction":"请查收邮件并点击验证链接以继续。","verified":"我已验证邮箱","didntReceive":"没收到?","resend":"重新发送"},"forgot":{"title":"忘记密码?","subtitle":"输入你的邮箱以接收密码重置链接。","submit":"发送重置链接"},"resetSent":{"sentTo":"我们已发送密码重置链接至","instruction":"点击邮件中的链接以重置密码。链接 1 小时后失效。"},"changePassword":{"title":"修改密码","setTitle":"设置密码","subtitle":"更新你的账号密码","setSubtitle":"为你的账号添加密码","submit":"更新密码"},"resetPage":{"successTitle":"密码已重置","successBody":"你的密码已成功重置。","expiredTitle":"链接已失效","expiredBody":"该密码重置链接已失效或无效。请重新申请。","title":"重置密码","subtitle":"在下方输入你的新密码。","submit":"重置密码","backHome":"← 返回首页"},"verified":{"title":"邮箱已验证","body":"你的邮箱已成功验证。","redirecting":"跳转中……"},"commentPrompt":{"text":"登录以参与讨论"},"invite":{"loading":"加载中……","unavailableTitle":"邀请不可用","unavailableBody":"该邀请已不可用。","goToApp":"前往 FeedLog","joinTitle":"加入 FeedLog","joinTeam":"加入 {org} 在 FeedLog 的团队","signInToContinue":"登录以继续","anonymousHint":"过程中你将登录或创建一个 FeedLog 账号。","joining":"加入中……","joinOrg":"加入 {org}","notYou":"不是你?","signOut":"退出登录","sentToEmail":"该邀请发送至 {email}。","switchAccount":"切换账号"},"sso":{"pageTitle":"无法登录","title":"我们无法为你登录","body":"单点登录未完成——登录链接可能已过期或配置有误。若持续出现,请联系你的管理员。","continuingIn":"{seconds} 秒后继续……","continueNow":"立即继续"},"errors":{"emailNotVerified":"请先验证邮箱再登录","invalidCredentials":"邮箱或密码错误","signInFailed":"登录失败","passwordTooShort":"密码至少需 8 个字符","signUpFailed":"注册失败","notYetVerified":"邮箱尚未验证,请查收邮件","enterEmail":"请输入邮箱","sendResetFailed":"重置邮件发送失败","resendFailed":"验证邮件重发失败","passwordsMismatch":"两次密码不一致","changeFailed":"修改密码失败","setFailed":"设置密码失败","resetFailed":"重置密码失败"},"success":{"verificationResent":"验证邮件已重新发送","passwordUpdated":"密码已更新","passwordSet":"密码设置成功"}},"dashboard":{"all":"全部","allBoards":"全部看板","backToSite":"返回站点","filter":{"status":"状态","board":"看板","merged":"合并"},"nav":{"srTitle":"导航","srDescription":"控制台导航菜单","main":"主要","settings":"设置","developer":"开发者"},"roadmap":{"title":"路线图","subtitle":"按状态查看反馈"},"boards":{"title":"看板","subtitle":"按分类整理反馈","create":"新建看板","empty":"还没有看板","noResults":"没有找到看板","emptyHint":"创建第一个看板,开始整理反馈","posts":"{count} 条反馈","noDescription":"暂无描述","deleteTitle":"删除看板“{name}”?","deleteDescription":"此操作无法撤销。该看板下的反馈将变为未分类。","editTitle":"编辑看板","nameLabel":"看板名称","descLabel":"看板描述","nameRequired":"请输入看板名称","saveFailed":"保存看板失败","saving":"保存中……","saveChanges":"保存更改"},"feedback":{"title":"反馈","subtitle":"全部提交","filtersBtn":"筛选","create":"新建反馈","activeFilters":"当前筛选:","clearAll":"清除全部","canonicalOnly":"仅主反馈","mergedOnly":"仅合并项","noResults":"没有找到反馈","noResultsHint":"试试调整筛选条件","searchNoMatch":"没有匹配“{query}”的结果","searchNoMatchHint":"换个关键词,或清除搜索。","unknownBoard":"未知","colUpvotes":"赞成票","colTitle":"标题","colBoard":"看板","colAuthor":"作者","colComments":"评论","colCreated":"创建时间","colStatus":"状态","showing":"显示第 {from}–{to} 条,共 {total} 条","entriesShort":"共 {total} 条","searchPlaceholder":"搜索反馈…","searchAria":"搜索反馈","clearSearch":"清除搜索"},"sso":{"title":"单点登录","subtitle":"让来自你产品的用户无需二次登录即可进入","createSecret":"新建密钥","limitReached":"已达到 {limit} 个密钥的上限","signingSecrets":"签名密钥","integrationGuide":"接入指南","ownersOnly":"仅限所有者","ownersOnlyHint":"只有工作区所有者才能管理 SSO 签名密钥。如需权限,请联系所有者。","secretsDesc":"你的后端用来签发 SSO 令牌的共享 JWT 密钥。","usedCount":"已用 {used} / {limit}","loading":"加载中……","empty":"还没有签名密钥","emptyHint":"创建一个密钥,然后在你的后端用它为用户签发 SSO 令牌。","rotationLabel":"轮换密钥:","rotationMid":"先创建一个新密钥,把你的产品切换过去,然后","rotationDisable":"停用","rotationEnd":"旧密钥(若出问题可重新启用)。确认无误后再删除。令牌会针对每个启用中的密钥进行校验。","deleteTitle":"删除这个密钥?","untitled":"未命名","deleteDescription":"将被永久删除。用它签发的所有令牌会立即失效。此操作无法撤销——如果只是想暂停,请改为停用。","deletePermanently":"永久删除","createFailed":"创建密钥失败","renameFailed":"重命名密钥失败","updateFailed":"更新密钥失败","deleteFailed":"删除密钥失败","renameTitle":"重命名密钥","renameDesc":"更新用于区分此密钥的标签。密钥本身不会改变。","createTitle":"创建签名密钥","createDesc":"一个新的 HS256 密钥,供你的后端签发 SSO 令牌。你可以随时再次查看并复制。","labelLabel":"标签","labelOptional":"(可选)","labelPlaceholder":"例如:生产环境、欧洲区、移动应用","labelHint":"在轮换密钥时帮助你区分多个密钥。","created":"创建于 {date}","new":"新","reveal":"显示","hide":"隐藏","copy":"复制","copied":"已复制","active":"已启用","disabled":"已停用","rename":"重命名","enable":"启用","disable":"停用","guideEndpoint":"接入地址","guideEndpointDesc":"将你产品中已登录的用户重定向到此 URL。","guideQueryParams":"查询参数","required":"必填","optional":"可选","guideParamJwt":"HS256 签名的令牌(见下方 payload)。","guideParamReturnTo":"登录后跳转的位置。仅限同域路径或 URL(受主机白名单限制)。默认为 /。","guideJwtPayload":"JWT 载荷","guideJwtPayloadDesc":"已登录用户的信息,包含在令牌中。FeedLog 仅读取这些字段——其他声明将被忽略。","guidePayloadEmail":"身份标识(全局唯一)+ 通知。","guidePayloadName":"显示名称。","guidePayloadPicture":"头像 URL。","guidePayloadExp":"过期时间(Unix 秒)。必填——见下方 TTL 说明。","guideSignTitle":"签名并跳转(Node.js)","guideSignDesc":"在你的后端构建此链接。","guideTtlPre":"令牌有效期(","guideTtlPost":")为必填","guideTtlBody":"建议约 1 小时;上限 24 小时(±60 秒时钟容差)。在渲染页面时预先签名令牌——而非用户点击时——以避免额外的往返请求。","guideMatchedByPre":"用户通过","guideMatchedByEmail":"邮箱","guideMatchedByPost":"匹配。首次使用的邮箱会创建终端用户账户(无需额外登录界面);更改用户邮箱会创建新账户,且不会迁移历史记录。"}},"settings":{"loading":"加载中……","reset":"重置","saving":"保存中……","saveChanges":"保存更改","unsavedChanges":"你有未保存的更改","preview":"预览","workspace":{"title":"工作区","subtitle":"你的工作区标识","general":"常规","generalDesc":"你的工作区在成员和邀请邮件中的呈现方式。","nameLabel":"工作区名称","namePlaceholder":"Acme Corp","nameHint":"你的团队或公司名称。会展示给成员并出现在邀请邮件中。"},"branding":{"title":"品牌","subtitle":"你的公开反馈门户对访客的呈现效果。","logo":"Logo","removeLogo":"移除","logoHint":"PNG、JPG 或 SVG · 推荐 256x256","brandColor":"品牌色","brandColorHint":"用于按钮、链接和强调色。","defaultTheme":"默认主题","defaultThemeHint":"向访客展示的默认主题。","uploadFailed":"Logo 上传失败。","saveFailed":"保存品牌设置失败。","theme":{"system":"跟随系统","light":"浅色","dark":"深色"}},"portal":{"title":"门户","subtitle":"展示在你的公开反馈门户上的内容","saveFailed":"保存门户设置失败。","welcomeSection":"欢迎语","welcomeDesc":"显示在你公开门户顶部的标题和简介。","titleLabel":"标题","titlePlaceholder":"向 {name} 提交反馈","titleHint":"作为你反馈门户的主标题显示。","descriptionLabel":"描述","descriptionPlaceholder":"欢迎提交任何 bug 反馈和功能建议……","loadingEditor":"编辑器加载中……","descriptionHint":"显示在标题下方,为访客提供更多背景信息。支持 Markdown。"},"members":{"title":"成员","subtitle":"管理谁可以访问此工作区","invite":"邀请","pending":"待处理的邀请","invitedAs":"受邀为","expiresIn":"有效期 {time}","expired":"已过期","copyLink":"复制邀请链接","revoke":"撤销","membersSection":"成员","total":"共 {count} 人","you":"你","remove":"从组织移除","lastOwnerNote":"工作区的最后一位所有者不能被降级或移除。请先转移所有权。","inviteTitle":"邀请成员","inviteDesc":"发送邮件邀请。邀请将在 7 天后过期。","emailNotConfigured":"邮件未配置","emailNotConfiguredHint":"未设置 Resend API 密钥。邀请仍会创建,但不会发送邮件——请从列表中复制链接手动分享。","emailLabel":"邮箱地址","emailPlaceholder":"alice{'@'}acme.com, bob{'@'}acme.com","emailHint":"用逗号或换行分隔","roleLabel":"角色","ownerWarning":"所有者拥有完全的管理权限——可管理成员、设置和所有权。请只邀请你完全信任的人。","sending":"发送中……","creating":"创建中……","sendInvites":"发送邀请","createInvites":"创建邀请","invitationCreated":"邀请已创建","invitationsCreated":"已创建 {count} 个邀请","inviteToastEmailOn":"如果没收到邮件,可从列表中复制链接手动分享。","inviteToastEmailOff":"未发送邮件——请从列表中复制链接手动分享。","roles":{"contributor":{"label":"贡献者","desc":"在控制台内查看反馈并参与讨论。"},"manager":{"label":"管理员","desc":"管理反馈、更新日志和路线图。"},"owner":{"label":"所有者","desc":"完全访问权限。可管理成员、设置和所有权。"}}},"widget":{"title":"反馈组件","subtitle":"嵌入你产品内的反馈组件","loadFailed":"加载组件设置失败。","saveFailed":"保存失败。","saved":"已保存","installSection":"安装","installDesc":"在你的产品中安装 SDK,并用工作区地址完成初始化。","baseUrlLabel":"工作区地址","baseUrlHint":"初始化 SDK 时作为 baseUrl 传入。","serverLabel":"在你的服务器上","serverHint":"widget 完全信任这个接口给出的身份,务必放在你自己的登录校验之后。密钥在 Developer → SSO 获取。","snippetLabel":"安装","copy":"复制","copied":"已复制","enabledLabel":"启用组件","enabledHint":"关闭后,SDK 不会在你的站点上渲染任何内容。","supportSection":"联系客服","supportDesc":"当用户消息命中下方规则时,助手会引导他联系客服,而不是创建公开反馈。","emailLabel":"客服邮箱","emailPlaceholder":"support{'@'}example.com","emailHint":"未填写时助手仍会引导用户联系客服,只是不给出具体邮箱。","save":"保存","rulesLabel":"规则","rulesHint":"每条启用的规则都会原样写入助手的系统提示词。","builtinBadge":"内置","addRule":"添加规则","editRule":"编辑规则","ruleLabel":"在以下情况引导联系客服……","rulePlaceholder":"用户咨询企业合同或定制报价","ruleHint":"补全上面这句话。描述场景,而不是具体措辞。","activeCount":"已启用 {count} / {max} 条规则","limitTitle":"已达规则上限","limitDesc":"最多同时启用 {max} 条规则。请先关闭一条再启用新的。","gotIt":"知道了","deleteTitle":"删除这条规则?","deleteDesc":"助手将不再针对这个场景引导用户联系客服。","deleteConfirm":"删除","cancel":"取消","ownerOnly":"只有工作区所有者和管理员可以修改组件设置。"}},"seo":{"portalTitle":"{name} 反馈","roadmapTitle":"{name} 路线图","changelogTitle":"{name} 更新日志","postFallback":"反馈","changelogFallback":"更新日志","titleWithOrg":"{title} - {name}"},"widget":{"title":"反馈","subtitle":"帮我们把 {product} 做得更好 —— 说说问题和想法","allFeedback":"全部反馈","seeOthers":"看看其他人提了什么","thisProduct":"这个产品","greeting":"你好,我是反馈助手 —— AI,不是人工客服 👋 说说哪里有问题、或者你希望有什么,我会帮你提交给 {product} 团队。","placeholder":"描述你的反馈……","send":"发送","thinking":"正在读你的消息……","close":"关闭","back":"返回","myFeedback":"我的反馈","viewAll":"查看全部反馈","noFeedback":"你还没有提交过反馈。","postCount":"{count} 条反馈","withUpdates":"{count} 条有更新","viewOnBoard":"在反馈板查看","loading":"加载中……","loginTitle":"登录后提交反馈","loginDesc":"登录你的账号,即可提交反馈并跟进处理进展。","login":"登录","sendFailed":"发送失败,请重试。","loadFailed":"加载反馈失败。","attachImage":"添加图片","uploadFailed":"图片上传失败,请重试。","uploadTooLarge":"图片不能超过 {size}MB。"}}}