translations (#5469)

# Description of Changes

<!--
Please provide a summary of the changes, including:

- What was changed
- Why the change was made
- Any challenges encountered

Closes #(issue_number)
-->

---

## Checklist

### General

- [ ] I have read the [Contribution
Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md)
- [ ] I have read the [Stirling-PDF Developer
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md)
(if applicable)
- [ ] I have read the [How to add new languages to
Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md)
(if applicable)
- [ ] I have performed a self-review of my own code
- [ ] My changes generate no new warnings

### Documentation

- [ ] I have updated relevant docs on [Stirling-PDF's doc
repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/)
(if functionality has heavily changed)
- [ ] I have read the section [Add New Translation
Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/HowToAddNewLanguage.md#add-new-translation-tags)
(for new translation tags only)

### Translations (if applicable)

- [ ] I ran
[`scripts/counter_translation.py`](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/docs/counter_translation.md)

### UI Changes (if applicable)

- [ ] Screenshots or videos demonstrating the UI changes are attached
(e.g., as comments or direct attachments in the PR)

### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
This commit is contained in:
Anthony Stirling
2026-01-14 11:26:45 +00:00
committed by GitHub
parent 72cc4e4963
commit a7945da3b4
40 changed files with 17927 additions and 7525 deletions
+464 -191
View File
@@ -1,8 +1,11 @@
unsavedChanges = "您的 PDF 有未保存的更改。您想做什么?"
pendingRedactionsTitle = "未应用的涂黑"
pendingRedactions = "您有未应用的涂黑操作,这些将会丢失。"
areYouSure = "确定要离开吗?"
unsavedChangesTitle = "未保存的更改"
keepWorking = "继续工作"
discardChanges = "放弃更改"
discardRedactions = "放弃并离开"
applyAndContinue = "应用并继续"
exportAndContinue = "导出并继续"
cancel = "取消"
@@ -364,6 +367,7 @@ advanced = "高级"
title = "安全与认证"
security = "安全"
connections = "连接"
telegram = "Telegram"
[settings.licensingAnalytics]
title = "许可与分析"
@@ -438,25 +442,34 @@ currentVersion = "当前版本"
latestVersion = "最新版本"
checkForUpdates = "检查更新"
viewDetails = "查看详情"
serverNeedsUpdate = "需要管理员更新服务器"
[settings.general.versionInfo]
title = "版本信息"
description = "桌面端与服务器版本详情"
desktop = "桌面版本"
server = "服务器版本"
[settings.security]
title = "Security"
description = "Update your password to keep your account secure."
title = "安全"
description = "更新密码以保障您的账户安全。"
[settings.security.password]
subtitle = "Change your password. You will be logged out after updating."
required = "All fields are required."
mismatch = "New passwords do not match."
error = "Unable to update password. Please verify your current password and try again."
success = "Password updated successfully. Please sign in again."
ssoDisabled = "Password changes are managed by your identity provider."
current = "Current password"
currentPlaceholder = "Enter your current password"
new = "New password"
newPlaceholder = "Enter a new password"
confirm = "Confirm new password"
confirmPlaceholder = "Re-enter your new password"
update = "Update password"
subtitle = "更改您的密码。更新后您将被登出。"
required = "所有字段均为必填。"
mismatch = "新密码不匹配。"
error = "无法更新密码。请验证您当前的密码后重试。"
success = "密码更新成功。请重新登录。"
ssoDisabled = "密码更改由您的身份提供商管理。"
current = "当前密码"
currentPlaceholder = "输入当前密码"
new = "新密码"
newPlaceholder = "输入新密码"
confirm = "确认新密码"
confirmPlaceholder = "再次输入新密码"
update = "更新密码"
[settings.hotkeys]
title = "键盘快捷键"
@@ -511,16 +524,16 @@ low = "低"
title = "更改凭证"
header = "更新您的账户详情"
changePassword = "您正在使用默认登录凭证,请输入新密码"
ssoManaged = "Your account is managed by your identity provider."
ssoManaged = "您的账户由您的身份提供商管理。"
newUsername = "新用户名"
oldPassword = "当前密码"
newPassword = "新密码"
confirmNewPassword = "确认新密码"
submit = "提交更改"
credsUpdated = "Account updated"
description = "Changes saved. Please log in again."
error = "Unable to update username. Please verify your password and try again."
changeUsername = "Update your username. You will be logged out after updating."
credsUpdated = "账户已更新"
description = "更改已保存。请重新登录。"
error = "无法更新用户名。请验证您的密码后重试。"
changeUsername = "更新您的用户名。更新后您将被登出。"
[account]
title = "账号设定"
@@ -528,6 +541,8 @@ accountSettings = "账号设定"
adminSettings = "管理员设置 - 查看和添加用户"
userControlSettings = "用户控制设置"
changeUsername = "更改用户名"
changeUsernameDescription = "更新您的用户名。更新后您将被登出。"
newUsernamePlaceholder = "输入新的用户名"
newUsername = "新用户名"
password = "确认密码"
oldPassword = "旧密码"
@@ -737,9 +752,9 @@ title = "签名"
desc = "通过绘图、文字或图像向 PDF 添加签名"
[home.annotate]
tags = "annotate,highlight,draw"
title = "Annotate"
desc = "Highlight, draw, add notes and shapes in the viewer"
tags = "注释,高亮,绘制"
title = "注释"
desc = "在查看器中高亮、绘制、添加便笺与形状"
[home.flatten]
tags = "简化,删除,交互式"
@@ -952,7 +967,7 @@ title = "叠加 PDF"
[home.pdfTextEditor]
title = "PDF 文本编辑器"
desc = "编辑 PDF 中的现有文本和图像"
desc = "审阅并编辑 Stirling PDF 导出的 JSON,支持分组文本编辑并重新生成 PDF"
[home.addText]
tags = "文本,注释,标签"
@@ -963,6 +978,7 @@ desc = "在 PDF 任意位置添加自定义文本"
addFiles = "添加文件"
uploadFromComputer = "从电脑上传"
openFromComputer = "从电脑打开"
mobileUpload = "从手机上传"
[viewPdf]
tags = "浏览、阅读、注释、文本、图像"
@@ -1278,21 +1294,33 @@ cbzOptions = "CBZ 转 PDF 选项"
optimizeForEbook = "为电子书阅读器优化 PDF(使用 Ghostscript"
cbzOutputOptions = "PDF 转 CBZ 选项"
cbzDpi = "图像渲染的 DPI"
cbrOptions = "CBR Options"
cbrOutputOptions = "PDF to CBR Options"
cbrDpi = "DPI for image rendering"
cbrOptions = "CBR 选项"
cbrOutputOptions = "PDF CBR 选项"
cbrDpi = "用于图像渲染的 DPI"
[convert.ebookOptions]
ebookOptions = "eBook to PDF Options"
ebookOptionsDesc = "Options for converting eBooks to PDF"
embedAllFonts = "Embed all fonts"
embedAllFontsDesc = "Embed all fonts from the eBook into the generated PDF"
includeTableOfContents = "Include table of contents"
includeTableOfContentsDesc = "Add a generated table of contents to the resulting PDF"
includePageNumbers = "Include page numbers"
includePageNumbersDesc = "Add page numbers to the generated PDF"
optimizeForEbookPdf = "Optimize for ebook readers"
optimizeForEbookPdfDesc = "Optimize the PDF for eBook reading (smaller file size, better rendering on eInk devices)"
ebookOptions = "电子书转 PDF 选项"
ebookOptionsDesc = "将电子书转换为 PDF 的选项"
embedAllFonts = "嵌入所有字体"
embedAllFontsDesc = "将电子书中的所有字体嵌入到生成的 PDF"
includeTableOfContents = "包含目录"
includeTableOfContentsDesc = "在生成的 PDF 中添加自动生成的目录"
includePageNumbers = "包含页码"
includePageNumbersDesc = "为生成的 PDF 添加页码"
optimizeForEbookPdf = "为电子书阅读器优化"
optimizeForEbookPdfDesc = "为电子书阅读优化 PDF(更小的文件大小,在 eInk 设备上有更好的渲染)"
[convert.epubOptions]
epubOptions = "PDF 转电子书选项"
epubOptionsDesc = "将 PDF 转换为 EPUB/AZW3 的选项"
detectChapters = "检测章节"
detectChaptersDesc = "检测类似章节的标题并插入 EPUB 分页"
targetDevice = "目标设备"
targetDeviceDesc = "选择为阅读设备优化的输出配置"
outputFormat = "输出格式"
outputFormatDesc = "选择电子书的输出格式"
tabletPhone = "平板/手机(含图像)"
kindleEink = "Kindle e-Ink(文本优化)"
[imageToPdf]
tags = "转换、图像、JPG、图片、照片"
@@ -1409,11 +1437,11 @@ header = "添加附件"
add = "添加附件"
remove = "移除附件"
embed = "嵌入附件"
convertToPdfA3b = "Convert to PDF/A-3b"
convertToPdfA3bDescription = "Creates an archival PDF with embedded attachments"
convertToPdfA3bTooltip = "PDF/A-3b is an archival format ensuring long-term preservation. It allows embedding arbitrary file formats as attachments. Conversion requires Ghostscript and may take longer for large files."
convertToPdfA3bTooltipHeader = "About PDF/A-3b Conversion"
convertToPdfA3bTooltipTitle = "What it does"
convertToPdfA3b = "转换为 PDF/A-3b"
convertToPdfA3bDescription = "创建带有嵌入附件的归档 PDF"
convertToPdfA3bTooltip = "PDF/A-3b 是一种保证长期保存的归档格式。它允许将任意文件格式作为附件嵌入。转换需要 Ghostscript,对于大文件可能耗时更长。"
convertToPdfA3bTooltipHeader = "关于 PDF/A-3b 转换"
convertToPdfA3bTooltipTitle = "功能说明"
submit = "添加附件"
[watermark]
@@ -2359,10 +2387,10 @@ saved = "已保存"
label = "上传签名图像"
placeholder = "选择图像文件"
hint = "上传 PNG 或 JPG 格式的签名图像"
removeBackground = "Remove white background (make transparent)"
processing = "Processing image..."
backgroundRemovalFailedTitle = "Background removal failed"
backgroundRemovalFailedMessage = "Could not remove the background from the image. Using original image instead."
removeBackground = "移除白色背景(变为透明)"
processing = "正在处理图像..."
backgroundRemovalFailedTitle = "背景移除失败"
backgroundRemovalFailedMessage = "无法移除图像背景。将改用原始图像。"
[sign.instructions]
title = "如何添加签名"
@@ -2409,9 +2437,9 @@ label = "仅扁平化表单"
desc = "仅扁平化表单字段,保留其他交互元素"
[flatten.renderDpi]
label = "Rendering DPI (optional, recommended 150 DPI)"
help = "Leave blank to use the system default. Higher DPI sharpens output but increases processing time and file size."
placeholder = "e.g. 150"
label = "渲染 DPI(可选,建议 150 DPI"
help = "留空以使用系统默认值。更高的 DPI 会使输出更清晰,但会增加处理时间和文件大小。"
placeholder = "例如 150"
[flatten.results]
title = "扁平化结果"
@@ -2652,7 +2680,7 @@ chooseP12File = "选择 PKCS12 文件"
choosePfxFile = "选择 PFX 文件"
choosePrivateKey = "选择私钥文件"
location = "位置"
logoTitle = "徽标"
logoTitle = "Logo"
name = "名称"
noLogo = "无 Logo"
pageNumber = "页码"
@@ -2987,7 +3015,7 @@ header = "裁剪 PDF"
submit = "提交"
noFileSelected = "选择一个 PDF 文件开始裁剪"
reset = "重置为整页"
autoCrop = "Auto-crop whitespace"
autoCrop = "自动裁剪空白"
[crop.preview]
title = "裁剪区域选择"
@@ -3218,6 +3246,7 @@ title = "涂黑方式"
mode = "模式"
automatic = "自动"
automaticDesc = "基于搜索词涂黑文本"
automaticDisabledTooltip = "在文件管理器中选择文件以一次涂黑多个文件"
manual = "手动"
manualDesc = "点击并拖拽以涂黑特定区域"
manualComingSoon = "手动涂黑即将推出"
@@ -3288,8 +3317,35 @@ text = "仅匹配完整单词,而非部分匹配。启用后,“John”不
title = "转为图像 PDF"
text = "在涂黑后将 PDF 转换为基于图像的 PDF。确保框下文字被完全移除且不可恢复。"
[redact.tooltip.manual.header]
title = "手动涂黑控制"
[redact.tooltip.manual.markText]
title = "标记文本工具"
text = "在 PDF 上直接选择文本以标记为涂黑。单击并拖动以高亮需要涂黑的文本。"
[redact.tooltip.manual.markArea]
title = "标记区域工具"
text = "在 PDF 上绘制矩形区域以标记涂黑区域。适合涂黑图像、签名或不规则区域。"
[redact.tooltip.manual.apply]
title = "应用涂黑"
text = "标记完成后,单击“应用”以永久涂黑所有标记区域。待处理计数显示有多少项准备应用。"
bullet1 = "在应用前可标记任意数量的区域"
bullet2 = "所有待处理涂黑将一次性应用"
bullet3 = "应用后无法撤销涂黑"
[redact.manual]
title = "涂黑工具"
instructions = "选择文本或绘制区域以标记需要涂黑的内容。"
markText = "标记文本"
markArea = "标记区域"
pendingLabel = "待处理:"
applyWarning = "⚠️ 永久应用,无法撤销,且底层数据将被删除"
apply = "应用"
noMarks = "没有涂黑标记。使用上方工具标记需要涂黑的内容。"
header = "手动涂黑"
controlsTitle = "手动涂黑控制"
textBasedRedaction = "基于文本的涂黑"
pageBasedRedaction = "基于页面的涂黑"
convertPDFToImageLabel = "将 PDF 转为图像 PDF(用于移除框后面的文字)"
@@ -3406,17 +3462,17 @@ label = "垂直分割"
placeholder = "输入垂直分割数"
[split-by-sections.splitMode]
label = "Split Mode"
description = "Choose how to split the pages"
splitAll = "Split all pages"
splitAllExceptFirst = "Split all except first"
splitAllExceptLast = "Split all except last"
splitAllExceptFirstAndLast = "Split all except first and last"
custom = "Custom pages"
label = "拆分模式"
description = "选择如何拆分页面"
splitAll = "拆分所有页面"
splitAllExceptFirst = "拆分除第一页外的所有页面"
splitAllExceptLast = "拆分除最后一页外的所有页面"
splitAllExceptFirstAndLast = "拆分除首尾外的所有页面"
custom = "自定义页面"
[split-by-sections.customPages]
label = "Custom Page Numbers"
placeholder = "e.g. 2,4,6"
label = "自定义页码"
placeholder = "例如 2,4,6"
[AddStampRequest]
tags = "图章、添加图片、图片居中、水印、PDF、嵌入、自定义"
@@ -3780,17 +3836,17 @@ filesize = "文件大小"
label = "应用灰度进行压缩"
[compress.linearize]
label = "Linearize PDF for fast web viewing"
label = "线性化 PDF 以加快网页查看"
[compress.lineArt]
label = "Convert images to line art"
description = "Uses ImageMagick to reduce pages to high-contrast black and white for maximum size reduction."
unavailable = "ImageMagick is not installed or enabled on this server"
detailLevel = "Detail level"
edgeEmphasis = "Edge emphasis"
edgeLow = "Gentle"
edgeMedium = "Balanced"
edgeHigh = "Strong"
label = "将图像转换为线稿"
description = "使用 ImageMagick 将页面转换为高对比度的黑白,以最大化体积压缩。"
unavailable = "此服务器未安装或未启用 ImageMagick"
detailLevel = "细节级别"
edgeEmphasis = "边缘强调"
edgeLow = "柔和"
edgeMedium = "均衡"
edgeHigh = ""
[compress.tooltip.header]
title = "压缩设置概览"
@@ -3810,8 +3866,8 @@ title = "灰度"
text = "选择此选项将所有图像转换为黑白,这对扫描 PDF 或图片较多的文档可显著减小体积。"
[compress.tooltip.lineArt]
title = "Line Art"
text = "Convert pages to high-contrast black and white using ImageMagick. Use detail level to control how much content becomes black, and edge emphasis to control how aggressively edges are detected."
title = "线稿"
text = "使用 ImageMagick 将页面转换为高对比度黑白。通过细节级别控制有多少内容变为黑色,通过边缘强调控制边缘检测的强度。"
[compress.error]
failed = "压缩 PDF 时发生错误。"
@@ -3826,9 +3882,9 @@ _value = "压缩设置"
1 = "1-3 PDF 压缩,</br> 4-6 轻度图像压缩,</br> 7-9 深度图像压缩(将显著降低图像质量)"
[compress.compressionLevel]
range1to3 = "Lower values preserve quality but result in larger files"
range4to6 = "Medium compression with moderate quality reduction"
range7to9 = "Higher values reduce file size significantly but may reduce image clarity"
range1to3 = "较低的值可保留质量但文件更大"
range4to6 = "中等压缩,质量适度下降"
range7to9 = "较高的值可显著减小体积,但可能降低图像清晰度"
[decrypt]
passwordPrompt = "此文件受密码保护。请输入密码:"
@@ -4069,7 +4125,7 @@ deleteSelected = "删除所选页面"
closePdf = "关闭 PDF"
exportAll = "导出 PDF"
downloadSelected = "下载所选文件"
annotations = "Annotations"
annotations = "注释"
exportSelected = "导出所选页面"
saveChanges = "保存更改"
toggleTheme = "切换主题"
@@ -4077,84 +4133,90 @@ language = "语言"
toggleAnnotations = "切换注释可见性"
search = "搜索 PDF"
panMode = "平移模式"
applyRedactionsFirst = "请先应用涂黑"
rotateLeft = "向左旋转"
rotateRight = "向右旋转"
toggleSidebar = "切换侧边栏"
toggleBookmarks = "切换书签"
print = "打印 PDF"
draw = "绘制"
redact = "涂黑"
exitRedaction = "退出涂黑模式"
save = "保存"
downloadAll = "全部下载"
saveAll = "全部保存"
[textAlign]
left = "Left"
center = "Center"
right = "Right"
left = "左对齐"
center = "居中"
right = "右对齐"
[annotation]
title = "Annotate"
desc = "Use highlight, pen, text, and notes. Changes stay live—no flattening required."
highlight = "Highlight"
pen = "Pen"
text = "Text box"
note = "Note"
rectangle = "Rectangle"
ellipse = "Ellipse"
select = "Select"
exit = "Exit annotation mode"
strokeWidth = "Width"
opacity = "Opacity"
strokeOpacity = "Stroke Opacity"
fillOpacity = "Fill Opacity"
fontSize = "Font size"
chooseColor = "Choose colour"
color = "Colour"
strokeColor = "Stroke Colour"
fillColor = "Fill Colour"
underline = "Underline"
strikeout = "Strikeout"
squiggly = "Squiggly"
inkHighlighter = "Freehand Highlighter"
freehandHighlighter = "Freehand Highlighter"
square = "Square"
circle = "Circle"
polygon = "Polygon"
line = "Line"
stamp = "Add Image"
textMarkup = "Text Markup"
drawing = "Drawing"
shapes = "Shapes"
notesStamps = "Notes & Stamps"
settings = "Settings"
borderOn = "Border: On"
borderOff = "Border: Off"
editInk = "Edit Pen"
editLine = "Edit Line"
editNote = "Edit Note"
editText = "Edit Text Box"
editTextMarkup = "Edit Text Markup"
editSelected = "Edit Annotation"
editSquare = "Edit Square"
editCircle = "Edit Circle"
editPolygon = "Edit Polygon"
unsupportedType = "This annotation type is not fully supported for editing."
textAlignment = "Text Alignment"
noteIcon = "Note Icon"
imagePreview = "Preview"
contents = "Text"
backgroundColor = "Background colour"
clearBackground = "Remove background"
noBackground = "No background"
stampSettings = "Stamp Settings"
savingCopy = "Preparing download..."
saveFailed = "Unable to save copy"
saveReady = "Download ready"
selectAndMove = "Select and Edit"
editSelectDescription = "Click an existing annotation to edit its colour, opacity, text, or size."
editStampHint = "To change the image, delete this stamp and add a new one."
editSwitchToSelect = "Switch to Select & Edit to edit this annotation."
undo = "Undo"
redo = "Redo"
applyChanges = "Apply Changes"
title = "注释"
desc = "使用高亮、画笔、文本和便笺。更改实时生效——无需合并层。"
highlight = "高亮"
pen = "画笔"
text = "文本框"
note = "便笺"
rectangle = "矩形"
ellipse = "椭圆"
select = "选择"
exit = "退出注释模式"
strokeWidth = "线宽"
opacity = "不透明度"
strokeOpacity = "描边不透明度"
fillOpacity = "填充不透明度"
fontSize = "字体大小"
chooseColor = "选择颜色"
color = "颜色"
strokeColor = "描边颜色"
fillColor = "填充颜色"
underline = "下划线"
strikeout = "删除线"
squiggly = "波浪线"
inkHighlighter = "手绘高亮"
freehandHighlighter = "手绘高亮"
square = "正方形"
circle = "圆形"
polygon = "多边形"
line = "直线"
stamp = "添加图像"
textMarkup = "文本标注"
drawing = "绘图"
shapes = "形状"
notesStamps = "便笺与图章"
settings = "设置"
borderOn = "边框:开"
borderOff = "边框:关"
editInk = "编辑画笔"
editLine = "编辑直线"
editNote = "编辑便笺"
editText = "编辑文本框"
editTextMarkup = "编辑文本标注"
editSelected = "编辑注释"
editSquare = "编辑正方形"
editCircle = "编辑圆形"
editPolygon = "编辑多边形"
unsupportedType = "此注释类型暂不完全支持编辑。"
textAlignment = "文本对齐"
noteIcon = "便笺图标"
imagePreview = "预览"
contents = "文本"
backgroundColor = "背景颜色"
clearBackground = "移除背景"
noBackground = "无背景"
stampSettings = "图章设置"
savingCopy = "正在准备下载..."
saveFailed = "无法保存副本"
saveReady = "下载已就绪"
selectAndMove = "选择并编辑"
editSelectDescription = "单击现有注释以编辑其颜色、不透明度、文本或大小。"
editStampHint = "要更换图像,请删除此图章并添加新的。"
editSwitchToSelect = "切换到“选择并编辑”以编辑此注释。"
undo = "撤销"
redo = "重做"
applyChanges = "应用更改"
saveChanges = "保存更改"
[search]
title = "搜索 PDF"
@@ -4205,20 +4267,20 @@ settings = "设置"
adminSettings = "管理设置"
allTools = "全部工具"
reader = "阅读器"
tours = "Tours"
showMeAround = "Show me around"
tours = "导览"
showMeAround = "带我看看"
[quickAccess.toursTooltip]
admin = "Watch walkthroughs here: Tools tour, New V2 layout tour, and the Admin tour."
user = "Watch walkthroughs here: Tools tour and the New V2 layout tour."
admin = "在此观看演示:工具导览、V2 新布局导览,以及管理员导览。"
user = "在此观看演示:工具导览与 V2 新布局导览。"
[quickAccess.helpMenu]
toolsTour = "工具导览"
toolsTourDesc = "了解这些工具能做什么"
adminTour = "管理导览"
adminTourDesc = "浏览管理设置与功能"
whatsNewTour = "See what's new in V2"
whatsNewTourDesc = "Tour the updated layout"
whatsNewTour = "查看 V2 的新变化"
whatsNewTourDesc = "浏览更新后的布局"
[admin]
error = "错误"
@@ -4237,6 +4299,8 @@ fetchError = "加载设置失败"
saveError = "保存设置失败"
saved = "设置保存成功"
saveSuccess = "设置保存成功"
success = "设置保存成功"
error = "设置保存失败"
save = "保存更改"
discard = "丢弃"
restartRequired = "需要重启"
@@ -4360,6 +4424,13 @@ description = "用于 HTML 转 PDF 的 WeasyPrint 可执行文件路径(留空
label = "Unoconvert 可执行文件"
description = "用于文档转换的 LibreOffice unoconvert 路径(留空为默认:/opt/venv/bin/unoconvert"
[admin.settings.general.frontendUrl]
label = "前端 URL"
description = "前端的基础 URL(例如:https://pdf.example.com)。用于邮件邀请链接和手机二维码上传。留空则使用后端 URL。"
[admin.settings.badge]
clickToUpgrade = "点击查看计划详情"
[admin.settings.security]
title = "安全"
description = "配置身份验证、登录行为和安全策略。"
@@ -4496,6 +4567,19 @@ connect = "连接"
disconnect = "断开连接"
disconnected = "已成功断开提供商"
disconnectError = "断开提供商失败"
mobileScannerConvertToPdf = "将图像转换为 PDF"
mobileScannerConvertToPdfDesc = "自动将上传的图像转换为 PDF 格式。若禁用,图像将保持原样。"
mobileScannerImageResolution = "图像分辨率"
mobileScannerImageResolutionDesc = "上传图像的分辨率。“压缩”会将图像缩放至最大 1200px 以减小文件大小。"
imageResolutionFull = "完整(原始尺寸)"
imageResolutionReduced = "压缩(最大 1200px"
mobileScannerPageFormat = "页面格式"
mobileScannerPageFormatDesc = "转换后图像的 PDF 页面大小。“保留”将使用原始图像尺寸。"
pageFormatKeep = "保留(原始尺寸)"
pageFormatA4 = "A4210×297mm"
pageFormatLetter = "Letter8.5×11in"
mobileScannerStretchToFit = "拉伸以适配"
mobileScannerStretchToFitDesc = "拉伸图像以填满整页。若禁用,图像将保持纵横比并居中。"
[admin.settings.connections.ssoAutoLogin]
label = "SSO 自动登录"
@@ -4564,6 +4648,122 @@ description = "首次通过 SAML2 登录时自动创建用户账户"
label = "阻止注册"
description = "阻止通过 SAML2 进行新用户注册"
[admin.settings.connections.mobileScanner]
label = "手机上传"
enable = "启用二维码上传"
description = "允许用户通过扫描二维码从移动设备上传文件"
note = "注意:需要先配置前端 URL。"
link = "前往系统设置进行配置"
mobileScannerConvertToPdf = "将图像转换为 PDF"
mobileScannerConvertToPdfDesc = "自动将上传的图像转换为 PDF 格式。若禁用,图像将保持原样。"
mobileScannerImageResolution = "图像分辨率"
mobileScannerImageResolutionDesc = "上传图像的分辨率。“压缩”会将图像缩放至最大 1200px 以减小文件大小。"
imageResolutionFull = "完整(原始尺寸)"
imageResolutionReduced = "压缩(最大 1200px"
mobileScannerPageFormat = "页面格式"
mobileScannerPageFormatDesc = "转换后图像的 PDF 页面大小。“保留”将使用原始图像尺寸。"
pageFormatKeep = "保留(原始尺寸)"
pageFormatA4 = "A4210×297mm"
pageFormatLetter = "Letter8.5×11in"
mobileScannerStretchToFit = "拉伸以适配"
mobileScannerStretchToFitDesc = "拉伸图像以填满整页。若禁用,图像将保持纵横比并居中。"
[admin.settings.telegram]
title = "Telegram 机器人"
description = "配置 Telegram 机器人的连接、访问控制和反馈行为。"
[admin.settings.telegram.enabled]
label = "启用 Telegram 机器人"
description = "允许用户通过您配置的 Telegram 机器人与 Stirling PDF 交互。"
[admin.settings.telegram.botUsername]
label = "机器人用户名"
description = "您的 Telegram 机器人的公开用户名。"
[admin.settings.telegram.botToken]
label = "机器人令牌"
description = "由 BotFather 提供的 Telegram 机器人 API 令牌。"
[admin.settings.telegram.pipelineInboxFolder]
label = "收件文件夹"
description = "管道目录下用于存放来自 Telegram 的传入文件的文件夹。"
[admin.settings.telegram.customFolderSuffix]
label = "使用自定义文件夹后缀"
description = "将聊天 ID 追加到传入文件文件夹,以按聊天隔离上传。"
[admin.settings.telegram.accessControl]
title = "访问控制"
description = "限制哪些用户或频道可以与机器人交互。"
[admin.settings.telegram.enableAllowUserIDs]
label = "仅允许特定用户 ID"
description = "启用后,仅列出的用户 ID 可使用机器人。"
[admin.settings.telegram.allowUserIDs]
label = "允许的用户 ID"
description = "输入允许与机器人交互的 Telegram 用户 ID。"
placeholder = "添加用户 ID 并按回车"
[admin.settings.telegram.enableAllowChannelIDs]
label = "仅允许特定频道 ID"
description = "启用后,仅列出的频道 ID 可使用机器人。"
[admin.settings.telegram.allowChannelIDs]
label = "允许的频道 ID"
description = "输入允许与机器人交互的 Telegram 频道 ID。"
placeholder = "添加频道 ID 并按回车"
[admin.settings.telegram.processing]
title = "处理"
description = "控制 Telegram 上传的轮询间隔与处理超时。"
[admin.settings.telegram.processingTimeoutSeconds]
label = "处理超时(秒)"
description = "等待处理作业的最长时间,超时后报告错误。"
[admin.settings.telegram.pollingIntervalMillis]
label = "轮询间隔(毫秒)"
description = "检查新的 Telegram 更新之间的间隔。"
[admin.settings.telegram.feedback]
title = "反馈消息"
description = "选择机器人何时向用户与频道发送反馈。"
[admin.settings.telegram.feedback.general.enabled]
label = "启用反馈"
description = "控制机器人是否发送反馈消息。"
[admin.settings.telegram.feedback.channel]
title = "频道反馈规则"
[admin.settings.telegram.feedback.channel.noValidDocument]
label = "显示“无有效文档”(频道)"
description = "对频道上传不显示“无有效文档”响应。"
[admin.settings.telegram.feedback.channel.errorProcessing]
label = "显示处理错误(频道)"
description = "向频道发送处理错误消息。"
[admin.settings.telegram.feedback.channel.errorMessage]
label = "显示错误消息(频道)"
description = "向频道显示详细错误消息。"
[admin.settings.telegram.feedback.user]
title = "用户反馈规则"
[admin.settings.telegram.feedback.user.noValidDocument]
label = "显示“无有效文档”(用户)"
description = "对用户上传不显示“无有效文档”响应。"
[admin.settings.telegram.feedback.user.errorProcessing]
label = "显示处理错误(用户)"
description = "向用户发送处理错误消息。"
[admin.settings.telegram.feedback.user.errorMessage]
label = "显示错误消息(用户)"
description = "向用户显示详细错误消息。"
[admin.settings.database]
title = "数据库"
description = "为企业部署配置自定义数据库连接设置。"
@@ -4745,6 +4945,10 @@ description = "允许管理员通过邮件邀请用户并自动生成密码"
label = "前端 URL"
description = "前端基础 URL(例如:https://pdf.example.com)。用于在邮件中生成邀请链接。留空则使用后端 URL。"
[admin.settings.mail.frontendUrlNote]
note = "注意:需要先配置前端 URL。"
link = "前往系统设置进行配置"
[admin.settings.legal]
title = "法律文档"
description = "配置法律文档与政策的链接。"
@@ -4925,10 +5129,13 @@ searchFiles = "搜索文件…"
recent = "最近"
localFiles = "本地文件"
googleDrive = "Google 云端硬盘"
googleDriveShort = "云端硬盘"
googleDriveShort = "Drive"
myFiles = "我的文件"
noRecentFiles = "未找到最近文件"
googleDriveNotAvailable = "不可使用 Google 云端硬盘集成"
mobileUpload = "手机上传"
mobileShort = "手机"
mobileUploadNotAvailable = "未启用手机上传"
downloadSelected = "下载所选"
saveSelected = "保存已选"
openFiles = "打开文件"
@@ -5244,7 +5451,7 @@ loading = "正在加载..."
back = "返回"
continue = "继续"
error = "错误"
save = "Save"
save = "保存"
[config.overview]
title = "应用配置"
@@ -5307,6 +5514,15 @@ impact = "任何当前使用这些密钥的应用或服务将停止工作,直
confirmPrompt = "确定要继续吗?"
confirmCta = "刷新密钥"
[config.apiKeys.alert]
apiKeyErrorTitle = "API 密钥错误"
failedToCreateApiKey = "创建 API 密钥失败。"
failedToRetrieveApiKey = "从响应中获取 API 密钥失败。"
failedToFetchApiKey = "获取 API 密钥失败。"
apiKeyRefreshed = "API 密钥已刷新"
apiKeyRefreshedBody = "您的 API 密钥已成功刷新。"
failedToRefreshApiKey = "刷新 API 密钥失败。"
[AddAttachmentsRequest]
attachments = "选择附件"
info = "选择要附加到 PDF 的文件。这些文件将被嵌入并可通过 PDF 的附件面板访问。"
@@ -5412,14 +5628,14 @@ startTour = "开始导览"
startTourDescription = "查看 Stirling PDF 的关键功能导览"
[onboarding.whatsNew]
quickAccess = "Start at the <strong>Quick Access</strong> rail to jump between Reader, Automate, your files, and all the tours."
leftPanel = "The left <strong>Tools</strong> panel lists everything you can do. Browse categories or search to find a tool quickly."
fileUpload = "Use the <strong>Files</strong> button to upload or pick a recent PDF. We will load a sample so you can see the workspace."
rightRail = "The <strong>Right Rail</strong> holds quick actions to select files, change theme or language, and download results."
topBar = "The top bar lets you swap between <strong>Viewer</strong>, <strong>Page Editor</strong>, and <strong>Active Files</strong>."
pageEditorView = "Switch to the Page Editor to reorder, rotate, or delete pages."
activeFilesView = "Use Active Files to see everything you have open and pick what to work on."
wrapUp = "That is what is new in V2. Open the <strong>Tours</strong> menu anytime to replay this, the Tools tour, or the Admin tour."
quickAccess = "从<strong>快速访问</strong>栏开始,在阅读器、自动化、您的文件和所有导览之间快速切换。"
leftPanel = "左侧的<strong>工具</strong>面板列出所有可用功能。按类别浏览或搜索快速找到工具。"
fileUpload = "使用<strong>文件</strong>按钮上传或选择最近的 PDF。我们会加载示例以便您查看工作区。"
rightRail = "<strong>右侧栏</strong>用于快速操作:选择文件、更改主题或语言、下载结果。"
topBar = "顶部栏可在<strong>查看器</strong><strong>页面编辑器</strong><strong>活动文件</strong>之间切换。"
pageEditorView = "切换到页面编辑器以重新排序、旋转或删除页面。"
activeFilesView = "使用活动文件查看所有已打开内容并选择要处理的对象。"
wrapUp = "以上是 V2 的新变化。随时打开<strong>导览</strong>菜单重看本导览、工具导览或管理员导览。"
[onboarding.welcomeModal]
title = "欢迎使用 Stirling PDF"
@@ -5442,8 +5658,8 @@ showMeAround = "带我看看"
skipTheTour = "跳过导览"
[onboarding.tourOverview]
title = "Tour Overview"
body = "Stirling PDF V2 ships with dozens of tools and a refreshed layout. Take a quick tour to see what changed and where to find the features you need."
title = "导览概述"
body = "Stirling PDF V2 提供数十种工具和焕新的布局。快速导览,了解变化以及如何找到所需功能。"
[onboarding.serverLicense]
skip = "暂时跳过"
@@ -5452,7 +5668,7 @@ upgrade = "立即升级 →"
freeTitle = "服务器许可证"
overLimitTitle = "需要服务器许可证"
overLimitBody = "我们的许可允许每台服务器最多免费 <strong>{{freeTierLimit}}</strong> 名用户。您有 <strong>{{overLimitUserCopy}}</strong> 名 Stirling 用户。为不间断使用,请升级至 Stirling Server 方案 - <strong>无限席位</strong>、PDF 文本编辑,以及 $99/server/mo 的完整管理员控制。"
freeBody = "我们的 <strong>Open-Core</strong> 许可允许每台服务器最多 <strong>{{freeTierLimit}}</strong> 名用户免费使用。为实现不间断扩展,我们推荐 Stirling Server 方案 - <strong>无限席位</strong> 和 <strong>SSO 支持</strong>$99/server/mo."
freeBody = "我们的 <strong>Open-Core</strong> 许可允许每台服务器最多免费 <strong>{{freeTierLimit}}</strong> 名用户。为无缝扩展并抢先体验全新的 <strong>PDF 文本编辑工具</strong>推荐 Stirling Server 方案 - 完整编辑与 <strong>无限席位</strong>$99/server/mo"
[onboarding.desktopInstall]
title = "下载"
@@ -5758,28 +5974,28 @@ contactSales = "联系销售"
contactToUpgrade = "联系我们以升级或定制您的套餐"
maxUsers = "最大用户数"
upTo = "最多"
getLicense = "Get Server License"
upgradeToEnterprise = "Upgrade to Enterprise"
selectPeriod = "Select Billing Period"
monthlyBilling = "Monthly Billing"
yearlyBilling = "Yearly Billing"
checkoutOpened = "Checkout Opened"
checkoutInstructions = "Complete your purchase in the Stripe tab. After payment, return here and refresh the page to activate your license. You will also receive an email with your license key."
activateLicense = "Activate Your License"
getLicense = "获取服务器许可证"
upgradeToEnterprise = "升级到企业版"
selectPeriod = "选择账单周期"
monthlyBilling = "按月计费"
yearlyBilling = "按年计费"
checkoutOpened = "已打开结账页面"
checkoutInstructions = "请在 Stripe 标签页完成购买。付款后返回此处并刷新页面以激活许可证。您还会收到包含许可证密钥的电子邮件。"
activateLicense = "激活您的许可证"
[plan.static.licenseActivation]
checkoutOpened = "Checkout Opened in New Tab"
instructions = "Complete your purchase in the Stripe tab. Once your payment is complete, you will receive an email with your license key."
enterKey = "Enter your license key below to activate your plan:"
keyDescription = "Paste the license key from your email"
activate = "Activate License"
doLater = "I'll do this later"
success = "License Activated!"
successMessage = "Your license has been successfully activated. You can now close this window."
checkoutOpened = "已在新标签页中打开结账"
instructions = "请在 Stripe 标签页完成购买。付款完成后,您将收到包含许可证密钥的电子邮件。"
enterKey = "在下方输入您的许可证密钥以激活您的计划:"
keyDescription = "粘贴您邮件中的许可证密钥"
activate = "激活许可证"
doLater = "稍后再说"
success = "许可证已激活!"
successMessage = "您的许可证已成功激活。现在可以关闭此窗口。"
[plan.static.billingPortal]
title = "Email Verification Required"
message = "You will need to verify your email address in the Stripe billing portal. Check your email for a login link."
title = "需要验证邮箱"
message = "您需要在 Stripe 账单门户中验证您的邮箱地址。请检查邮件中的登录链接。"
[plan.period]
month = "月"
@@ -5983,8 +6199,8 @@ notAvailable = "审计系统不可用"
notAvailableMessage = "审计系统未配置或不可用。"
disabled = "已禁用审计日志"
disabledMessage = "请在应用配置中启用审计日志以跟踪系统事件。"
enterpriseRequired = "Enterprise License Required"
enterpriseRequiredMessage = "The audit logging system is an enterprise feature. Please upgrade to an enterprise license to access audit logs and analytics."
enterpriseRequired = "需要企业许可证"
enterpriseRequiredMessage = "审计日志系统是企业功能。请升级到企业许可证以访问审计日志和分析。"
[audit.error]
title = "加载审计系统时出错"
@@ -6156,6 +6372,7 @@ description = "输入您自托管 Stirling PDF 服务器的完整 URL"
[setup.server.error]
emptyUrl = "请输入服务器 URL"
invalidUrl = "无效的 URL 格式。请输入有效的 URL,例如 https://your-server.com"
unreachable = "无法连接到服务器"
testFailed = "连接测试失败"
configFetch = "获取服务器配置失败。请检查 URL 并重试。"
@@ -6174,6 +6391,7 @@ connectingTo = "正在连接到:"
submit = "登录"
signInWith = "使用以下方式登录"
oauthPending = "正在打开浏览器进行认证..."
sso = "单点登录"
orContinueWith = "或使用 Email 继续"
serverRequirement = "注意:服务器必须启用登录功能。"
showInstructions = "如何启用?"
@@ -6239,8 +6457,8 @@ reset = "重置更改"
downloadJson = "下载 JSON"
generatePdf = "生成 PDF"
saveChanges = "保存更改"
applyChanges = "Apply Changes"
downloadCopy = "Download Copy"
applyChanges = "应用更改"
downloadCopy = "下载副本"
[pdfTextEditor.options.autoScaleText]
title = "自动缩放文本以适配框体"
@@ -6260,22 +6478,22 @@ title = "将已编辑文本锁定为单个 PDF 元素"
description = "启用后,编辑器会将每个已编辑文本框导出为一个 PDF 文本元素,以避免字形重叠或混合字体。"
[pdfTextEditor.options.advanced]
title = "Advanced Settings"
title = "高级设置"
[pdfTextEditor.tooltip.header]
title = "Preview Limitations"
title = "预览限制"
[pdfTextEditor.tooltip.textFocus]
title = "Text and Image Focus"
text = "This workspace focuses on editing text and repositioning embedded images. Complex page artwork, form widgets, and layered graphics are preserved for export but are not fully editable here."
title = "文本与图像聚焦"
text = "此工作区专注于编辑文本与重新定位嵌入图像。复杂页面图形、表单控件和分层图形将在导出时保留,但在此处不可完全编辑。"
[pdfTextEditor.tooltip.previewVariance]
title = "Preview Variance"
text = "Some visuals (such as table borders, shapes, or annotation appearances) may not display exactly in the preview. The exported PDF keeps the original drawing commands whenever possible."
title = "预览差异"
text = "某些视觉元素(例如表格边框、形状或注释外观)在预览中可能不会完全一致。导出的 PDF 会尽可能保留原始绘图指令。"
[pdfTextEditor.tooltip.alpha]
title = "Alpha Viewer"
text = "This alpha viewer is still evolving—certain fonts, colours, transparency effects, and layout details may shift slightly. Please double-check the generated PDF before sharing."
title = "Alpha 查看器"
text = "此 Alpha 查看器仍在演进中——某些字体、颜色、透明效果和布局细节可能会略有变化。分享前请仔细检查生成的 PDF。"
[pdfTextEditor.manual]
mergeTooltip = "合并所选框"
@@ -6398,3 +6616,58 @@ title = "添加文本结果"
[addText.error]
failed = "向PDF添加文本时发生错误。"
[mobileUpload]
title = "从手机上传"
description = "扫码上传照片。图像会自动转换为 PDF。"
descriptionNoConvert = "使用手机扫码上传照片。"
error = "连接错误"
pollingError = "检查文件时出错"
sessionId = "会话 ID"
sessionCreateError = "创建会话失败"
expiryWarning = "会话即将过期"
expiryWarningMessage = "此二维码将在 {{seconds}} 秒后过期。将自动生成新的二维码。"
filesReceived = "已接收 {{count}} 个文件"
connected = "移动设备已连接"
instructions = "使用手机相机扫描。图像将自动转换为 PDF。"
instructionsNoConvert = "使用手机相机扫描以上传文件。"
[mobileScanner]
title = "手机扫描"
noSession = "会话无效"
noSessionMessage = "请扫描有效的二维码以访问此页面。"
validating = "正在验证会话..."
sessionInvalid = "会话错误"
sessionExpired = "此会话已过期。请刷新后重试。"
sessionNotFound = "找不到会话。请刷新后重试。"
sessionValidationError = "无法验证会话。请重试。"
uploadSuccess = "上传成功!"
uploadSuccessMessage = "您的图像已传输。"
httpsRequired = "摄像头访问需要 HTTPS 或 localhost。请使用 HTTPS 或通过 localhost 访问。"
uploadFailed = "上传失败。请重试。"
uploading = "正在上传..."
connected = "已连接"
connecting = "正在连接..."
chooseMethod = "选择上传方式"
chooseMethodDescription = "选择您希望扫描并上传文档的方式"
camera = "相机"
cameraDescription = "使用设备相机扫描文档并自动检测边缘"
fileUpload = "文件上传"
fileDescription = "从设备上传现有照片或文档"
cameraAccessDenied = "相机访问被拒绝。请启用相机访问权限。"
back = "返回"
settings = "设置"
edgeDetection = "边缘检测"
flashlight = "手电筒"
flash = "闪光灯"
processing = "正在处理..."
capture = "拍照"
selectFilesPrompt = "选择要上传的文件"
selectImage = "选择图像"
preview = "预览"
retake = "重拍"
addToBatch = "添加到批次"
upload = "上传"
batchImages = "批次"
clearBatch = "清空"
uploadAll = "全部上传"