translations and version bump (#5878)

This commit is contained in:
Anthony Stirling
2026-03-06 11:09:18 +00:00
committed by GitHub
parent 7c1eb4183b
commit 456106195e
41 changed files with 24601 additions and 1121 deletions
+615 -28
View File
@@ -96,6 +96,8 @@ pin = "固定文件(在工具运行后保持激活)"
poweredBy = "服务来源:"
pro = "专业版"
processTimeWarning = "警告:此过程可能需要多达一分钟,具体时间取决于文件大小"
processingComplete = "您的文件已就绪。"
processingCompleteMultiple = "{{count}} 个文件已就绪。"
property = "资产"
quickPosition = "快速定位"
red = "红色"
@@ -105,6 +107,7 @@ save = "保存"
saveToBrowser = "保存到浏览器"
saveUnavailable = "此项目无法保存"
seeDockerHub = "查看 Docker Hub"
editSecret = "编辑此值"
selectFillter = "-- 选择--"
size = "大小"
sponsor = "赞助"
@@ -651,6 +654,7 @@ description = "配置 OAuth2 和 SAML 等外部身份验证提供商。"
disconnect = "断开连接"
disconnected = "已成功断开提供商"
disconnectError = "断开提供商失败"
documentation = "查看文档"
imageResolutionFull = "完整(原始尺寸)"
imageResolutionReduced = "压缩(最大 1200px"
linkedServices = "已连接的服务"
@@ -964,6 +968,18 @@ label = "默认语言区域"
description = "最大文件上传大小(例如:100MB、1GB)"
label = "文件上传限制"
[admin.settings.general.hideDisabledTools]
description = "在界面中隐藏已禁用的工具"
label = "隐藏已禁用的工具"
[admin.settings.general.hideDisabledTools.googleDrive]
description = "未启用时隐藏 Google Drive 按钮"
label = "隐藏 Google Drive"
[admin.settings.general.hideDisabledTools.mobileScanner]
description = "未启用时隐藏移动端 QR 扫描按钮"
label = "隐藏移动端扫描器"
[admin.settings.general.frontendUrl]
description = "前端的基础 URL(例如:https://pdf.example.com)。用于邮件邀请链接和手机二维码上传。留空则使用后端 URL。"
label = "前端 URL"
@@ -1148,6 +1164,8 @@ title = "安全"
[admin.settings.security.audit]
label = "审计日志"
showDetails = "显示审计级别详细信息"
hideDetails = "隐藏审计级别详细信息"
[admin.settings.security.audit.enabled]
description = "跟踪用户操作和系统事件以满足合规与安全监控"
@@ -1157,10 +1175,32 @@ label = "启用审计日志"
description = "0=OFF1=BASIC2=STANDARD3=VERBOSE"
label = "审计级别"
[admin.settings.security.audit.levelDetails]
off = "不记录审计日志(关键安全事件除外)"
basic = "PDF 文件操作(压缩、拆分、合并等)和设置更改。捕获:操作状态(成功/失败)、方法参数、时间。最小日志量。"
standard = "在 BASIC 之上:用户登录/登出、账户更改、通用 GET 请求。不包括连续轮询调用(/auth/me、/app-config、/health 等),以减少日志噪声。适合大多数部署。"
verbose = "在 STANDARD 之上:连续轮询调用、所有 GET 请求、详细时间。警告:日志量大且影响性能。"
[admin.settings.security.audit.retentionDays]
description = "审计日志的保留天数"
label = "审计保留(天)"
[admin.settings.security.audit.advancedOptions]
title = "高级选项"
description = "以下选项会增加处理时间和内存占用,仅在确有需要时启用。"
[admin.settings.security.audit.captureFileHash]
description = "提取上传 PDF 文件的 SHA-256 哈希用于完整性验证。独立于审计级别。"
label = "捕获文件哈希(SHA-256"
[admin.settings.security.audit.capturePdfAuthor]
description = "在处理过程中提取 PDF 文档的作者字段。需要解析 PDF,会增加延迟。独立于审计级别。"
label = "捕获 PDF 作者元数据"
[admin.settings.security.audit.captureOperationResults]
description = "捕获方法返回值。不建议:会显著增加日志量和磁盘占用。"
label = "捕获操作结果"
[admin.settings.security.csrfDisabled]
description = "禁用跨站请求伪造保护(不建议)"
label = "禁用CSRF保护"
@@ -1536,72 +1576,152 @@ tags = "嵌入、附件、文件、附加"
title = "添加附件"
[audit]
configureAudit = "配置审计日志"
configureAuditMessage = "在“安全与认证”部分调整审计日志级别、保留期和其他设置。"
disabled = "已禁用审计日志"
disabledMessage = "请在应用配置中启用审计日志以跟踪系统事件。"
enterpriseRequired = "需要企业许可证"
enterpriseRequiredMessage = "审计日志系统是企业功能。请升级到企业许可证以访问审计日志和分析。"
goToSettings = "前往审计设置"
notAvailable = "审计系统不可用"
notAvailableMessage = "审计系统未配置或不可用。"
[audit.charts]
byType = "按类型统计事件"
byUser = "按用户统计事件"
day = "日"
error = "加载图表时出错"
month = "月"
overTime = "事件随时间变化"
title = "审计仪表板"
week = "周"
[audit.error]
title = "加载审计系统时出错"
[audit.events]
actions = "操作"
clearFilters = "清除"
details = "详情"
endDate = "结束日期"
error = "加载事件时出错"
eventDetails = "事件详情"
filterByType = "按类型筛选"
filterByUser = "按用户筛选"
ipAddress = "IP 地址"
noEvents = "未找到事件"
startDate = "开始日期"
timestamp = "时间戳"
title = "审计事件"
type = "类型"
user = "用户"
viewDetails = "查看详情"
[audit.export]
clearFilters = "清除"
description = "将审计事件导出为 CSV 或 JSON 格式。使用筛选器限定导出数据。"
endDate = "结束日期"
error = "导出数据失败"
exportButton = "导出数据"
fieldAuthor = "作者(来自 PDF"
fieldDate = "日期"
fieldDocumentName = "文档名称"
fieldFileHash = "文件哈希(SHA-256"
fieldIpAddress = "IP 地址"
fieldOperationResults = "操作结果"
fieldOutcome = "结果(成功/失败)"
fieldTool = "工具"
fieldUsername = "用户名"
filterByType = "按类型筛选"
filterByUser = "按用户筛选"
filters = "筛选器(可选)"
format = "导出格式"
selectFields = "选择要包含的字段"
startDate = "开始日期"
title = "导出审计数据"
verboseRequired = "需要 VERBOSE 审计级别"
[audit.systemStatus]
autoRefresh = "自动刷新"
autoRefreshLabel = "每30秒自动刷新"
captureBySettings = "在设置中启用"
capturedFields = "已捕获的字段"
date = "日期"
days = "天"
disabled = "已禁用"
documentName = "文档名称"
enabled = "已启用"
fileHash = "文件哈希"
level = "审计级别"
pdfAuthor = "PDF 作者"
retention = "保留期限"
status = "审计日志"
title = "系统状态"
tool = "工具"
totalEvents = "事件总数"
username = "用户名"
verboseOnly = "仅限 VERBOSE"
[audit.stats]
activeUsers = "活跃用户"
attention = "需要关注"
avgLatency = "平均延迟"
error = "加载统计时出错"
errorLoadingStats = "无法加载统计"
excellent = "优秀"
good = "良好"
noData = "无"
successRate = "成功率"
title = "概览"
totalEvents = "事件总数"
vsLastPeriod = "相比上期"
[audit.charts]
byTool = "最常使用的工具"
byType = "按类型统计事件"
byUser = "按用户统计事件"
day = "日"
error = "加载图表时出错"
hourlyActivity = "每小时活动"
month = "月"
noData = "此期间无数据"
overTime = "事件随时间变化"
title = "审计仪表板"
week = "周"
[audit.events]
actions = "操作"
author = "作者"
clearFilters = "清除"
details = "详情"
documentName = "文档"
endDate = "结束日期"
error = "加载事件时出错"
eventDetails = "事件详情"
failure = "失败"
fileHash = "文件哈希"
filterByType = "按类型筛选"
filterByUser = "按用户筛选"
ipAddress = "IP 地址"
noEvents = "未找到事件"
outcome = "状态"
sortAsc = "升序"
sortDesc = "降序"
startDate = "开始日期"
success = "成功"
timestamp = "时间戳"
title = "审计事件"
type = "类型"
user = "用户"
viewDetails = "查看详情"
[audit.filters]
allOutcomes = "全部"
failureOnly = "仅失败"
last7Days = "过去7天"
last30Days = "过去30天"
outcomeFilter = "结果"
quickPresets = "快速筛选"
successOnly = "仅成功"
thisMonth = "本月"
today = "今天"
[audit.tabs]
clearData = "清除数据"
dashboard = "仪表板"
events = "审计事件"
export = "导出"
[audit.clearData]
cancel = "取消"
codeDoesNotMatch = "代码不匹配"
codePlaceholder = "在此输入代码"
confirmationCode = "确认代码"
confirmationRequired = "删除所有审计数据"
confirmMessage = "这将永久移除所有审计日志。请输入下方确认代码以继续。"
confirmTitle = "请确认您要删除"
deleteButton = "删除"
enterCode = "确认代码"
enterCodeBelow = "按上方所示精确输入代码(区分大小写)"
initiateDelete = "删除所有数据"
irreversible = "不可逆"
success = "成功"
successMessage = "已成功清除所有审计数据"
warning1 = "此操作无法撤销"
warning2 = "删除审计数据将永久移除数据库中的所有历史审计日志,包括安全事件、用户活动和文件操作。"
[auth]
accessDenied = "拒绝访问"
insufficientPermissions = "您没有执行此操作的权限。"
@@ -2254,9 +2374,11 @@ copy = "复制"
done = "完成"
error = "错误"
expand = "展开"
learnMore = "了解更多"
lines = "行"
loading = "正在加载..."
next = "下一页"
operation = "此操作"
preview = "预览"
previous = "上一页"
refresh = "刷新"
@@ -2920,6 +3042,7 @@ copyStack = "复制堆栈跟踪"
discordSubmit = "Discord - 提交支持帖子"
dismissAllErrors = "关闭所有错误"
encryptedPdfMustRemovePassword = "此 PDF 已加密或受密码保护。请在转换为 PDF/A 之前将其解锁。"
generic = "发生错误"
github = "在 GitHub 上提交工单"
githubSubmit = "GitHub - 提交工单"
incorrectPasswordProvided = "PDF 密码不正确或未提供。"
@@ -4456,6 +4579,10 @@ upgradeCompleteMessage = "您的订阅已成功升级。现有许可证密钥已
upgradeSuccess = "支付成功!您的订阅已升级。服务器上的许可证已更新。您将很快收到确认 Email。"
upgradeTitle = "升级到 {{planName}}"
yearly = "按年"
checkoutOpened = "已在浏览器中打开结账页面"
checkoutInstructions = "请在刚刚打开的浏览器窗口中完成购买。付款完成后,返回此处并点击下方按钮以刷新您的账单信息。"
refreshBilling = "我已完成付款 - 刷新账单"
closeLater = "稍后再说"
[payment.emailStage]
continue = "继续"
@@ -4679,6 +4806,13 @@ prompt = "选择需要提取表格的页面"
submit = "提取"
title = "PDF 转 CSV"
[PDFToXLSX]
header = "PDF 转 Excel"
prompt = "选择要提取表格的页面"
submit = "转换"
title = "PDF 转 ExcelXLSX"
tags = "电子表格,excel,xlsx,表格,提取,转换"
[PDFToHTML]
credit = "此服务使用 pdftohtml 进行文件转换。"
header = "将 PDF 转换为 HTML"
@@ -4835,6 +4969,7 @@ customPricing = "自定义"
featureComparison = "功能对比"
from = "起"
hideComparison = "隐藏功能对比"
included = "已包含"
includedInCurrent = "您的方案已包含"
licensedSeats = "许可:{{count}} 席位"
manage = "管理"
@@ -4852,9 +4987,11 @@ title = "当前套餐"
[plan.availablePlans]
subtitle = "选择符合您需求的套餐"
loadError = "无法加载方案定价。使用默认值。"
title = "可用套餐"
[plan.enterprise]
siteLicense = "站点许可"
highlight1 = "自定义定价"
highlight2 = "专属支持"
highlight3 = "最新功能"
@@ -4928,6 +5065,81 @@ keyDescription = "粘贴您邮件中的许可证密钥"
success = "许可证已激活!"
successMessage = "您的许可证已成功激活。现在可以关闭此窗口。"
[plan.team]
name = "团队"
siteLicense = "站点许可"
[credits]
enableOverageBilling = "启用超额计费"
maybeLater = "稍后再说"
upgrade = "升级"
[credits.modal]
advancedMonitoring = "高级监控"
allInOneWorkspace = "一体化 PDF 工作空间(查看器、工具与代理)"
apiSandbox = "API 沙盒"
contactSales = "联系销售"
creditsRemaining = "剩余 {{current}} / {{total}}"
creditsThisMonth = "每月额度"
current = "当前方案"
customPricing = "自定义"
customSmartFolders = "自定义智能文件夹"
dedicatedSupportSlas = "专属支持与 SLA"
enterpriseSubscription = "企业版"
everythingInCredits = "包含“额度”中的所有内容,另外:"
everythingInFree = "包含“免费版”中的所有内容,另外:"
fasterThroughput = "吞吐量提升 10 倍"
forRegularWork = "适用于常规 PDF 工作:"
freeTier = "免费版"
fullyPrivateFiles = "完全私密的文件"
largeFileProcessing = "大文件处理"
managedMemberMessage = "您可通过团队无限使用额度。如需帮助,请联系您的团队负责人。"
managedMemberTitle = "无限额度"
meteringBillingNote = "超额额度按月与您的 Team 订阅一并结算。可在账户设置中随时查看用量。"
meteringExplanation = "您的 Team 方案每月包含 {{credits}} 额度。用完后,超额计费会自动提供额外额度,确保不中断工作。"
meteringIncluded = "Team 每月包含 {{credits}} 额度"
meteringNoCommitment = "无绑定,随时可取消"
meteringNeverRunOut = "额度永不断供"
meteringPayAsYouGo = "按量付费"
meteringPrice = "额外额度 {{price}}/额度"
meteringTitle = "按使用量计费的超额结算"
monthlyCredits = "每月额度"
orgWideAccess = "组织范围的访问控制"
overage = "超额"
perMonth = "/月"
popular = "热门"
premiumAiModels = "高级 AI 模型"
prioritySupport = "优先支持"
privateDocCloud = "私有文档云"
ragFineTuning = "RAG + 微调"
secureApiAccess = "安全 API 访问"
selfHostLink = "查看文档与方案"
selfHostPrompt = "想要自托管?"
standardThroughput = "标准吞吐量"
subtitle = "升级到 Team,可获得 10 倍额度与更快的处理速度。"
subtitlePro = "启用自动超额计费,确保额度永不断供。"
teamLeaderOnly = "仅团队负责人可启用超额计费"
teamSubscription = "Team"
titleExhausted = "您已用完免费额度"
titleExhaustedPro = "您的额度已用尽"
unlimitedApiAccess = "无限 API 访问"
unlimitedMonthlyCredits = "站点许可"
unlimitedSeats = "无限席位"
[credits.modal.features]
everythingInCredits = "包含“额度”中的所有内容,另外:"
everythingInFree = "包含“免费版”中的所有内容,另外:"
forRegularWork = "适用于常规 PDF 工作:"
[credits.insufficient]
brief = "额度不足。您需要 {{required}},但只有 {{current}}。"
freeTier = "升级到 Team,额度提升 10 倍并享受无限超额计费。"
managedMember = "请联系您的团队负责人以获取帮助。"
message = "您没有足够的额度来运行 {{tool}}。当前拥有 {{current}} 额度。"
messageWithAmount = "运行 {{tool}} 需要 {{required}} 额度,但您只有 {{current}}。"
teamMember = "启用超额计费,确保额度永不断供。"
title = "额度不足"
[printFile]
header = "使用打印机打印文件"
submit = "打印"
@@ -5565,6 +5777,70 @@ user = "登录身份"
saas = "Stirling Cloud"
selfhosted = "自托管"
[settings.planBilling]
currentPlan = "当前方案"
loading = "正在加载账单信息..."
notAvailable = "连接 Stirling CloudSaaS 模式)后才可使用“方案与账单”。"
title = "方案与账单"
[settings.planBilling.billing]
manageBilling = "管理账单"
nextBillingDate = "下次结算日期"
overageCost = "当前超额费用:{{amount}}{{credits}} 额度)"
[settings.planBilling.credits]
estimatedCost = "预估费用:{{amount}}"
freeTierInfo = "免费方案每月包含 {{freeCredits}} 额度。升级到 Team 可获得每月 {{teamCredits}} 额度并享受按量超额计费。"
included = "已包含 {{count}} 额度/月"
noOverage = "本月无超额费用。您正在使用已包含的 {{count}} 额度。"
overage = "+ {{count}} 超额"
overageInfo = "超额额度按每额度 {{price}} 计费。仅为超出每月配额的部分付费。"
title = "额度使用情况"
[settings.planBilling.errors]
fetchFailed = "无法获取账单数据"
retry = "重试"
[settings.planBilling.status]
active = "有效"
canceled = "已取消"
pastDue = "逾期未付"
trial = "试用"
[settings.planBilling.tier]
enterprise = "企业版"
enterpriseDescription = "自定义企业功能与支持"
free = "免费版"
freeDescription = "每月 50 额度"
team = "Team"
teamBadge = "Team"
teamDescription = "每月包含 500 额度,自动超额计费,服务不中断"
teamTooltipCredits = "Team 方案每月包含 {{credits}} 额度。"
teamTooltipFineprint = "仅为超出包含额度的部分付费。"
teamTooltipOverage = "自动超额计费 {{price}}/额度,确保服务不中断。"
[settings.planBilling.team]
managedByTeam = "由团队管理"
memberCount = "{{count}} 名团队成员"
[settings.planBilling.trial]
daysRemaining = "剩余 {{days}} 天"
daysRemainingFull = "您的试用将在 {{days}} 天后结束"
endDate = "到期时间:{{date}}"
endsOn = "试用结束日期"
title = "试用版已激活"
[settings.planBilling.upgrade]
cta = "升级到 Team"
featureApi = "用于自动化的 API 访问"
featureCredits = "每月 {{teamCredits}} 额度(对比免费版的 {{freeCredits}}"
featureMembers = "无限团队成员"
featureSupport = "优先支持"
featureThroughput = "更快的处理吞吐量"
opensInBrowser = "在浏览器中打开以完成升级"
subtitle = "升级到 Team 可获得:"
title = "升级您的方案"
[settings.developer]
apiKeys = "API 密钥"
title = "开发者"
@@ -5689,6 +5965,9 @@ people = "成员"
teams = "团队"
title = "工作区"
[settings.team]
title = "团队"
[setup]
description = "选择您希望使用 Stirling PDF 的方式开始"
welcome = "欢迎使用 Stirling PDF"
@@ -6011,6 +6290,11 @@ desc = "使用分隔页自动拆分"
name = "分隔页"
tooltip = "扫描时在文档间放置带二维码的分隔页"
[split.methods.byPoster]
name = "可打印分块"
desc = "将大页拆分为可打印尺寸"
tooltip = "将超大页面按标准纸张(A4、Letter 等)分割为更小块,便于打印"
[split.methods.byPages]
desc = "提取特定页面(1,3,5-10"
name = "页码"
@@ -6029,6 +6313,7 @@ tooltip = "指定最大文件大小(如 10MB、500KB"
[split.methods.prefix]
splitAt = "拆分于"
splitBy = "拆分依据"
splitInto = "拆分为"
[split.methodSelection.tooltip]
bullet1 = "点击方法卡片进行选择"
@@ -6048,6 +6333,21 @@ selectMethodFirst = "请先选择一种拆分方式"
chooseMethod = "选择方式"
settings = "设置"
[split.poster]
rightToLeft = "从右到左拆分"
[split.poster.pageSize]
label = "目标页面尺寸"
description = "用于打印的输出页面尺寸"
[split.poster.xFactor]
label = "水平分割数"
description = "每页拆分成的列数"
[split.poster.yFactor]
label = "垂直分割数"
description = "每页拆分成的行数"
[split.tooltip.byChapters]
bullet1 = "书签层级:在第几级书签处拆分(1=顶级)"
bullet2 = "包含元数据:保留文档属性"
@@ -6085,6 +6385,14 @@ bullet5 = "如果扫描分隔页的双面,请启用双工模式"
text = "使用带有 QR 码的实体分隔页自动拆分扫描文档。非常适合处理合并扫描的多份文档。"
title = "按分隔页拆分"
[split.tooltip.byPoster]
bullet1 = "目标页面尺寸:选择输出纸张尺寸(A4、Letter 等)"
bullet2 = "水平/垂直分割数:拆分网格大小"
bullet3 = "从右到左:为 RTL 布局反转列顺序"
bullet4 = "打印并拼接各部分以制作海报"
text = "将大型 PDF 页面拆分为适合标准纸张尺寸打印的更小分块。非常适合把超大页面制作成海报打印。"
title = "用于海报打印的拆分"
[split.tooltip.byPages]
bullet1 = "单一拆分点:3,7(在第 3 与第 7 页后拆分)"
bullet2 = "范围拆分点:3-8(在第 3 页前与第 8 页后拆分)"
@@ -6364,9 +6672,13 @@ tags = "网页捕获、保存网页、网页转文档、归档"
title = "URL 转 PDF"
[usage]
aboutUsageAnalytics = "关于使用分析"
configureSettings = "配置分析设置"
error = "加载使用统计时出错"
noData = "暂无数据"
noDataMessage = "当前暂无使用统计。"
usageAnalyticsExplanation = "使用分析会跟踪端点请求和工具使用模式。结合审计日志仪表盘,您可以全面了解系统活动、性能与安全事件。"
viewAuditLogs = "查看审计日志"
[usage.chart]
title = "端点使用图表"
@@ -6947,3 +7259,278 @@ cancel = "取消"
confirm = "解压"
message = "此 ZIP 包含 {{count}} 个文件。仍要解压?"
title = "大型 ZIP 文件"
[cloudBadge]
tooltip = "此操作将使用您的云额度"
[team]
cancelInviteError = "取消邀请失败"
confirmCancelInvite = "确定要取消此邀请吗?"
confirmLeave = "确定要离开此团队吗?"
confirmLeaveLeader = "作为团队负责人,离开将把您从团队中移除。确定继续吗?"
confirmRemove = "确定要移除此成员吗?"
editName = "编辑团队名称"
inviteCancelled = "已取消邀请"
inviteError = "发送邀请失败"
inviteSent = "邀请已发送"
leader = "负责人"
leaveButton = "离开团队"
leaveError = "离开团队失败"
leaveSuccess = "已成功离开团队"
loading = "正在加载团队信息..."
memberCount = "{{count}} 名成员"
memberRemoved = "成员已成功移除"
namePlaceholder = "输入团队名称"
personal = "个人"
removeError = "移除成员失败"
renameError = "重命名团队失败"
renameSuccess = "团队重命名成功"
[team.invitationBanner]
message = "已邀请您加入"
acceptButton = "接受"
rejectButton = "拒绝"
[team.features]
badge = "团队功能"
subtitle = "与团队协作"
title = "团队协作"
viewPlans = "查看方案"
[team.features.billing]
description = "管理账单与订阅"
title = "账单管理"
[team.features.credits]
description = "所有成员共享的额度池"
title = "共享额度"
[team.features.dashboard]
description = "查看团队活动与使用情况"
title = "团队仪表盘"
[team.features.invite]
description = "向团队添加成员"
title = "邀请成员"
[team.invite]
cancelLabel = "取消"
invalidEmail = "无效的电子邮箱地址"
placeholder = "输入电子邮箱地址"
sendButton = "发送邀请"
title = "邀请团队成员"
[team.members]
emailColumn = "邮箱"
empty = "尚无团队成员"
nameColumn = "姓名"
pending = "待接受"
remove = "移除"
roleColumn = "角色"
title = "团队成员"
[team.upgrade]
button = "升级到 Team"
description = "解锁团队协作功能"
title = "升级到 Team 方案"
[provider.oauth2.google]
scope = "登录认证"
[provider.oauth2.google.clientId]
label = "客户端 ID"
description = "来自 Google Cloud Console 的 OAuth2 客户端 ID"
[provider.oauth2.google.clientSecret]
label = "客户端密钥"
description = "来自 Google Cloud Console 的 OAuth2 客户端密钥"
[provider.oauth2.google.scopes]
label = "范围"
description = "以逗号分隔的 OAuth2 范围"
[provider.oauth2.google.useAsUsername]
label = "用作用户名"
description = "用作用户名的字段(email、name、given_name、family_name"
[provider.oauth2.github]
scope = "登录认证"
[provider.oauth2.github.clientId]
label = "客户端 ID"
description = "来自 GitHub Developer Settings 的 OAuth2 客户端 ID"
[provider.oauth2.github.clientSecret]
label = "客户端密钥"
description = "来自 GitHub Developer Settings 的 OAuth2 客户端密钥"
[provider.oauth2.github.scopes]
label = "范围"
description = "以逗号分隔的 OAuth2 范围"
[provider.oauth2.github.useAsUsername]
label = "用作用户名"
description = "用作用户名的字段(email、login、name"
[provider.oauth2.keycloak]
scope = "SSO"
[provider.oauth2.keycloak.issuer]
label = "发行者 URL"
description = "Keycloak Realm 的 OpenID Connect Discovery 端点的 URL"
[provider.oauth2.keycloak.clientId]
label = "客户端 ID"
description = "来自 Keycloak 的 OAuth2 客户端 ID"
[provider.oauth2.keycloak.clientSecret]
label = "客户端密钥"
description = "来自 Keycloak 的 OAuth2 客户端密钥"
[provider.oauth2.keycloak.scopes]
label = "范围"
description = "以逗号分隔的 OAuth2 范围"
[provider.oauth2.keycloak.useAsUsername]
label = "用作用户名"
description = "用作用户名的字段(email、name、given_name、family_name、preferred_username"
[provider.oauth2.generic]
name = "通用 OAuth2"
scope = "SSO"
[provider.oauth2.generic.enabled]
label = "启用通用 OAuth2"
description = "使用自定义 OAuth2 提供商启用认证"
[provider.oauth2.generic.provider]
label = "提供商名称"
description = "您的 OAuth2 提供商名称(例如 Azure AD、Okta"
[provider.oauth2.generic.issuer]
label = "发行者 URL"
description = "支持 OpenID Connect Discovery/.well-known/openid-configuration)的提供商"
[provider.oauth2.generic.clientId]
label = "客户端 ID"
description = "来自您的提供商的 OAuth2 客户端 ID"
[provider.oauth2.generic.clientSecret]
label = "客户端密钥"
description = "来自您的提供商的 OAuth2 客户端密钥"
[provider.oauth2.generic.scopes]
label = "范围"
description = "以逗号分隔的 OAuth2 范围"
[provider.oauth2.generic.useAsUsername]
label = "用作用户名"
description = "用作用户名的字段"
[provider.oauth2.generic.autoCreateUser]
label = "自动创建用户"
description = "首次通过 OAuth2 登录时自动创建用户账户"
[provider.oauth2.generic.blockRegistration]
label = "阻止注册"
description = "禁止通过 OAuth2 注册新用户"
[provider.smtp]
name = "SMTP 邮件"
scope = "邮件通知"
[provider.smtp.enabled]
label = "启用邮件"
description = "启用邮件通知与 SMTP 功能"
[provider.smtp.host]
label = "SMTP 主机"
description = "您的 SMTP 服务器的主机名或 IP 地址"
[provider.smtp.port]
label = "SMTP 端口"
description = "SMTP 连接端口(通常为 25、465 或 587"
[provider.smtp.username]
label = "SMTP 用户名"
description = "用于 SMTP 认证的用户名"
[provider.smtp.password]
label = "SMTP 密码"
description = "用于 SMTP 认证的密码"
[provider.smtp.from]
label = "发件地址"
description = "用作发件人的电子邮箱地址"
[provider.saml2]
name = "SAML2"
scope = "SSOSAML"
[provider.saml2.enabled]
label = "启用 SAML2"
description = "启用 SAML2 认证(仅限企业版)"
[provider.saml2.provider]
label = "提供商名称"
description = "您的 SAML2 提供商名称"
[provider.saml2.registrationId]
label = "注册 ID"
description = "您的服务提供商(SP)应用名称"
[provider.saml2.idpMetadataUri]
label = "IDP Metadata URI"
description = "您的提供商的元数据 URI"
[provider.saml2.idpSingleLoginUrl]
label = "IDP 单点登录 URL"
description = "用于发起 SSO 的 URL"
[provider.saml2.idpSingleLogoutUrl]
label = "IDP 单点登出 URL"
description = "用于发起 SLO 的 URL"
[provider.saml2.idpIssuer]
label = "IDP Issuer"
description = "您的提供商的 ID"
[provider.saml2.idpCert]
label = "IDP 证书"
description = "证书路径(例如:classpath:okta.cert"
[provider.saml2.privateKey]
label = "私钥"
description = "您的私钥路径"
[provider.saml2.spCert]
label = "SP 证书"
description = "您的签名证书路径"
[provider.saml2.autoCreateUser]
label = "自动创建用户"
description = "首次通过 SAML2 登录时自动创建用户账户"
[provider.saml2.blockRegistration]
label = "阻止注册"
description = "禁止通过 SAML2 注册新用户"
[provider.googledrive]
name = "Google Drive"
scope = "文件导入"
[provider.googledrive.enabled]
label = "启用 Google Drive 文件选择器"
description = "允许用户直接从 Google Drive 导入文件"
[provider.googledrive.clientId]
label = "客户端 ID"
description = "来自 Google Cloud Console 的 Google OAuth 2.0 Client ID"
[provider.googledrive.apiKey]
label = "API Key"
description = "来自 Google Cloud Console 的用于 Google Picker API 的 Google API Key"
[provider.googledrive.appId]
label = "App ID"
description = "来自 Google Cloud Console 的 Google Drive App ID"