mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-14 10:34:06 +02:00
8607 lines
307 KiB
TOML
8607 lines
307 KiB
TOML
accessInvite = "Invite"
|
||
alphabet = "Alphabet"
|
||
apply = "Apply"
|
||
applyAndContinue = "Save & Leave"
|
||
areYouSure = "Are you sure you want to leave?"
|
||
back = "Back"
|
||
black = "Black"
|
||
blue = "Blue"
|
||
cancel = "Cancel"
|
||
chooseFile = "Choose File"
|
||
close = "Close"
|
||
comingSoon = "Coming soon"
|
||
confirm = "Confirm"
|
||
confirmClose = "Confirm Close"
|
||
confirmCloseCancel = "Cancel"
|
||
confirmCloseConfirm = "Close File"
|
||
confirmCloseDiscard = "Discard changes and close"
|
||
confirmCloseMessage = "Are you sure you want to close this file?"
|
||
confirmCloseSave = "Save and close"
|
||
confirmCloseSaveFailed = "Saved with errors. {{count}} file{{plural}} could not be saved."
|
||
confirmCloseSaveFailedTitle = "Save Failed"
|
||
confirmCloseUnsaved = "This file has unsaved changes."
|
||
confirmCloseUnsavedList = "You have {{count}} file{{plural}} with unsaved changes.\n\n{{fileList}}"
|
||
custom = "Custom..."
|
||
customPosition = "Custom Position"
|
||
customTextTooltip = "Optional custom format for page numbers. Use {n} as placeholder for the number. Example: \"Page {n}\" will show \"Page 1\", \"Page 2\", etc."
|
||
delete = "Delete"
|
||
details = "Details"
|
||
discardChanges = "Discard & Leave"
|
||
download = "Download"
|
||
downloadPdf = "Download PDF"
|
||
downloadUnavailable = "Download unavailable for this item"
|
||
edit = "Edit"
|
||
editSecret = "Edit this value"
|
||
editYourNewFiles = "Edit your new file(s)"
|
||
encryptedFileBlocked = "File is password-protected. Unlock it first."
|
||
encryptedFilesBlocked = "{{count}} files are password-protected. Unlock them first."
|
||
exportAndContinue = "Export & Continue"
|
||
false = "False"
|
||
fileNotSavedToDisk = "Not saved to disk"
|
||
fileSavedToDisk = "File saved to disk"
|
||
fileSelected = "{{filename}}"
|
||
filesSelected = "{{count}} files"
|
||
font = "Font"
|
||
fontSizeTooltip = "Size of the page number text in points. Larger numbers create bigger text."
|
||
fontTypeTooltip = "Font family for the page numbers. Choose based on your document style."
|
||
genericSubmit = "Submit"
|
||
green = "Green"
|
||
help = "Help"
|
||
imgPrompt = "Select Image(s)"
|
||
incorrectPasswordMessage = "Current password is incorrect."
|
||
info = "Info"
|
||
invalidUndoData = "Cannot undo: invalid operation data"
|
||
keepWorking = "Keep Working"
|
||
loading = "Loading..."
|
||
logOut = "Log out"
|
||
marginTooltip = "Distance between the page number and the edge of the page."
|
||
moreOptions = "More Options"
|
||
multiPdfPrompt = "Select PDFs (2+)"
|
||
never = "Never"
|
||
no = "No"
|
||
noFileSelected = "No file loaded. Please upload one."
|
||
noFilesToUndo = "Cannot undo: no files were processed in the last operation"
|
||
noOperationToUndo = "No operation to undo"
|
||
nothingToUndo = "Nothing to undo"
|
||
noValidFiles = "No valid files to process"
|
||
oops = "Oops!"
|
||
openInNewWindow = "Open in new window"
|
||
openInViewer = "Open in Viewer"
|
||
operationCancelled = "Operation canceled"
|
||
page = "Page"
|
||
pageNum = "Page Number"
|
||
pageOrderPrompt = "Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) :"
|
||
pages = "Pages"
|
||
pageSelectionPrompt = "Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1)"
|
||
password = "Password"
|
||
pdfPrompt = "Select PDF(s)"
|
||
pin = "Pin File (keep active after tool run)"
|
||
pro = "Pro"
|
||
processingComplete = "Your file is ready."
|
||
processingCompleteMultiple = "{{count}} files are ready."
|
||
property = "Property"
|
||
quickPosition = "Quick Position"
|
||
red = "Red"
|
||
reset = "Reset"
|
||
review = "Review"
|
||
save = "Save"
|
||
saveUnavailable = "Save unavailable for this item"
|
||
size = "Size"
|
||
startingNumberTooltip = "The first number to display. Subsequent pages will increment from this number."
|
||
submit = "Submit"
|
||
success = "Success"
|
||
termsAndConditions = "Terms & Conditions"
|
||
text = "Text"
|
||
true = "True"
|
||
undo = "Undo"
|
||
undoDataMismatch = "Cannot undo: operation data is corrupted"
|
||
undoFailed = "Failed to undo operation"
|
||
undoOperationTooltip = "Click to undo the last operation and restore the original files"
|
||
undoQuotaError = "Cannot undo: insufficient storage space"
|
||
undoStorageError = "Undo completed but some files could not be saved to storage"
|
||
undoSuccess = "Operation undone successfully"
|
||
unknown = "Unknown"
|
||
unpin = "Unpin File (replace after tool run)"
|
||
unsavedChanges = "You have unsaved changes to your PDF."
|
||
unsavedChangesTitle = "Unsaved Changes"
|
||
unsupported = "Unsupported"
|
||
username = "Username"
|
||
welcome = "Welcome"
|
||
white = "White"
|
||
yes = "Yes"
|
||
|
||
[account]
|
||
accountSettings = "Account Settings"
|
||
adminSettings = "Admin Settings - View and Add Users"
|
||
changePassword = "Change Password"
|
||
changeUsername = "Change Username"
|
||
changeUsernameDescription = "Update your username. You will be logged out after updating."
|
||
confirmNewPassword = "Confirm New Password"
|
||
newPassword = "New Password"
|
||
newUsername = "New Username"
|
||
newUsernamePlaceholder = "Enter your new username"
|
||
oldPassword = "Old password"
|
||
password = "Confirmation Password"
|
||
property = "Property"
|
||
settingsCompare = "Settings Comparison:"
|
||
signOut = "Sign Out"
|
||
syncTitle = "Sync browser settings with Account"
|
||
syncToAccount = "Sync Account <- Browser"
|
||
syncToBrowser = "Sync Account -> Browser"
|
||
title = "Account Settings"
|
||
userControlSettings = "User Control Settings"
|
||
webBrowserSettings = "Web Browser Setting"
|
||
yourApiKey = "Your API Key"
|
||
|
||
[account.mfa]
|
||
codeLabel = "Authentication code"
|
||
codePlaceholder = "Enter 6-digit code"
|
||
codeRequired = "Enter the authentication code to continue."
|
||
confirmDisable = "Disable"
|
||
confirmEnable = "Enable"
|
||
description = "Add an extra layer of security to your account."
|
||
disableButton = "Disable two-factor authentication"
|
||
disabled = "Two-factor authentication disabled."
|
||
disableDescription = "Enter a valid authentication code to disable two-factor authentication."
|
||
disableFailed = "Unable to disable two-factor authentication. Check the code and try again."
|
||
disableTitle = "Disable two-factor authentication"
|
||
enableButton = "Enable two-factor authentication"
|
||
enabled = "Two-factor authentication enabled."
|
||
enableFailed = "Unable to enable two-factor authentication. Check the code and try again."
|
||
manualKey = "Manual setup key"
|
||
secretWarning = "Keep this key private. Anyone with access can generate valid authentication codes."
|
||
setupDescription = "Scan the QR code with your authenticator app, then enter the 6-digit code to confirm."
|
||
setupFailed = "Unable to start two-factor setup. Please try again."
|
||
setupTitle = "Set up two-factor authentication"
|
||
ssoDescription = "Two-factor authentication is managed by your identity provider for single sign-on accounts."
|
||
ssoManaged = "Configure MFA through your identity provider."
|
||
title = "Two-factor authentication"
|
||
|
||
[account.overview]
|
||
logOut = "Log out"
|
||
signedInAs = "Signed in as: {{email}}"
|
||
|
||
[add-page-numbers]
|
||
tags = "paginate,label,organize,index"
|
||
|
||
[addAttachments]
|
||
tags = "embed,attach,include,attachments,attach files,embed files,include files,add files,file attachment,associated files,supplementary files"
|
||
|
||
[addAttachments.error]
|
||
failed = "An error occurred while adding attachments to the PDF."
|
||
|
||
[AddAttachmentsRequest]
|
||
addMoreFiles = "Add more files..."
|
||
attachments = "Select Attachments"
|
||
info = "Select files to attach to your PDF. These files will be embedded and accessible through the PDF's attachment panel."
|
||
placeholder = "Choose files..."
|
||
selectedFiles = "Selected Files"
|
||
submit = "Add Attachments"
|
||
|
||
[AddAttachmentsRequest.error]
|
||
failed = "Add attachments operation failed"
|
||
|
||
[AddAttachmentsRequest.results]
|
||
title = "Attachment Results"
|
||
|
||
[AddAttachmentsRequest.tooltip.description]
|
||
title = "What it does"
|
||
|
||
[AddAttachmentsRequest.tooltip.header]
|
||
title = "About Add Attachments"
|
||
|
||
[addFileCard]
|
||
upload = "Upload"
|
||
|
||
[addImage]
|
||
applySignatures = "Apply Images"
|
||
header = "Add images to PDFs"
|
||
tags = "img,jpg,picture,photo"
|
||
title = "Add Image"
|
||
|
||
[addImage.canvas]
|
||
colorPickerTitle = "Choose stroke color"
|
||
|
||
[addImage.error]
|
||
failed = "An error occurred while adding image to the PDF."
|
||
|
||
[addImage.image]
|
||
hint = "Supports PNG, JPEG, GIF, BMP, TIFF, and SVG files. SVG files will be converted to PNG for embedding."
|
||
label = "Image file"
|
||
name = "Image"
|
||
placeholder = "Upload an image"
|
||
|
||
[addImage.instructions]
|
||
noSignature = "Upload an image above to enable placement."
|
||
paused = "Placement paused"
|
||
resumeHint = "Resume placement to click and add your image."
|
||
text = "After uploading your image above, click anywhere on the PDF to place it."
|
||
title = "How to add images"
|
||
|
||
[addImage.mode]
|
||
move = "Move Image"
|
||
pause = "Pause placement"
|
||
place = "Place Image"
|
||
resume = "Resume placement"
|
||
|
||
[addImage.results]
|
||
title = "Add Image Results"
|
||
|
||
[addImage.saved]
|
||
defaultCanvasLabel = "Drawing signature"
|
||
defaultImageLabel = "Uploaded image"
|
||
defaultLabel = "Image"
|
||
defaultTextLabel = "Typed signature"
|
||
delete = "Remove"
|
||
emptyTitle = "No saved signatures yet"
|
||
heading = "Saved signatures"
|
||
label = "Label"
|
||
limitTitle = "Limit reached"
|
||
next = "Next"
|
||
personalHeading = "Personal Signatures"
|
||
prev = "Previous"
|
||
savePersonal = "Save Personal"
|
||
saveShared = "Save Shared"
|
||
sharedHeading = "Shared Signatures"
|
||
|
||
[addImage.saved.type]
|
||
canvas = "Drawing"
|
||
image = "Upload"
|
||
text = "Text"
|
||
|
||
[addImage.step]
|
||
createDesc = "Upload the image you want to add"
|
||
place = "Place image"
|
||
placeDesc = "Click on the PDF to add your image"
|
||
|
||
[addImage.steps]
|
||
configure = "Configure Image"
|
||
|
||
[addImage.text]
|
||
colorLabel = "Text color"
|
||
fontLabel = "Font"
|
||
fontSizeLabel = "Font size"
|
||
name = "Text"
|
||
placeholder = "Enter text"
|
||
|
||
[addImage.type]
|
||
canvas = "Canvas"
|
||
image = "Image"
|
||
saved = "Saved"
|
||
text = "Text"
|
||
|
||
[addPageNumbers]
|
||
customize = "Customize Appearance"
|
||
customNumberDesc = "e.g., \"Page {n}\" or leave blank for just numbers"
|
||
fontName = "Font Name"
|
||
fontSize = "Font Size"
|
||
numberPagesDesc = "e.g., 1,3,5-8 or leave blank for all pages"
|
||
pagesAndStarting = "Pages & Starting Number"
|
||
positionAndPages = "Position & Pages"
|
||
preview = "Position Selection"
|
||
previewDisclaimer = "Preview is approximate. Final output may vary due to PDF font metrics."
|
||
submit = "Add Page Numbers"
|
||
tags = "number,pagination,count,add page numbers,page numbering,page numbers,footer,header,number pages,sequential,pagination tool"
|
||
title = "Add Page Numbers"
|
||
zeroPad = "Zero‑pad Width (Bates Stamping)"
|
||
zeroPadTooltip = "Zero‑pad (Bates Stamp) page numbers to this width (e.g., 3 ⇒ 001). Set 0 to disable."
|
||
|
||
[addPageNumbers.error]
|
||
failed = "Add page numbers operation failed"
|
||
|
||
[addPageNumbers.results]
|
||
title = "Page Number Results"
|
||
|
||
[addPageNumbers.selectText]
|
||
2 = "Margin Size"
|
||
4 = "Starting Number"
|
||
5 = "Pages to Number"
|
||
6 = "Custom Text Format"
|
||
|
||
[addPassword]
|
||
desc = "Encrypt your PDF document with a password."
|
||
submit = "Encrypt"
|
||
tags = "encrypt,password,lock,secure,protect,security,encryption,safeguard,confidential,private,restrict access"
|
||
title = "Add Password"
|
||
|
||
[addPassword.encryption.keyLength]
|
||
128bit = "128-bit (Standard)"
|
||
256bit = "256-bit (High)"
|
||
40bit = "40-bit (Low)"
|
||
label = "Encryption Key Length"
|
||
|
||
[addPassword.error]
|
||
failed = "An error occurred while encrypting the PDF."
|
||
|
||
[addPassword.passwords]
|
||
stepTitle = "Passwords & Encryption"
|
||
|
||
[addPassword.passwords.owner]
|
||
label = "Owner Password"
|
||
placeholder = "Enter owner password"
|
||
|
||
[addPassword.passwords.user]
|
||
label = "User Password"
|
||
placeholder = "Enter user password"
|
||
|
||
[addPassword.results]
|
||
title = "Encrypted PDFs"
|
||
|
||
[addPassword.tooltip.encryption]
|
||
bullet1 = "40-bit: Basic security, compatible with older viewers"
|
||
bullet2 = "128-bit: Standard security, widely supported"
|
||
bullet3 = "256-bit: Maximum security, requires modern viewers"
|
||
text = "Higher encryption levels provide better security but may not be supported by older PDF viewers."
|
||
title = "Encryption Levels"
|
||
|
||
[addPassword.tooltip.header]
|
||
title = "Password Protection Overview"
|
||
|
||
[addPassword.tooltip.passwords]
|
||
bullet1 = "User Password: Required to open the PDF"
|
||
bullet2 = "Owner Password: Controls document permissions (not supported by all PDF viewers)"
|
||
text = "User passwords restrict opening the document, while owner passwords control what can be done with the document once opened. You can set both or just one."
|
||
title = "Password Types"
|
||
|
||
[addPassword.tooltip.permissions]
|
||
text = "These permissions control what users can do with the PDF. Most effective when combined with an owner password."
|
||
title = "Change Permissions"
|
||
|
||
[addStamp]
|
||
tags = "stamp,mark,seal,approved,rejected,confidential,stamp tool,rubber stamp,date stamp,approval stamp,received,void,copy,original"
|
||
|
||
[AddStampRequest]
|
||
alphabet = "Alphabet"
|
||
clickToExpand = "Click to expand"
|
||
customColor = "Custom Text Color"
|
||
customDateDesc = "Custom format"
|
||
customPosition = "Drag the stamp to the desired location in the preview window."
|
||
dateDesc = "Current date"
|
||
datetimeDesc = "Date and time combined"
|
||
dateTimeVars = "Date & Time"
|
||
dynamicVariables = "Dynamic Variables"
|
||
examples = "Examples"
|
||
filenameDesc = "Filename without extension"
|
||
filenameFullDesc = "Filename with extension"
|
||
fileVars = "File Information"
|
||
fontSize = "Font/Image Size"
|
||
imageSize = "Image Size"
|
||
margin = "Margin"
|
||
metadataDesc = "From PDF document properties"
|
||
metadataVars = "Document Metadata"
|
||
multiLine = "multi-line"
|
||
noStampSelected = "No stamp selected. Return to Step 1."
|
||
opacity = "Opacity"
|
||
otherVars = "Other"
|
||
pageNumberDesc = "Current page number"
|
||
pageVars = "Page Information"
|
||
position = "Position"
|
||
positionAndFormatting = "Position & Formatting"
|
||
preview = "Preview:"
|
||
quickPosition = "Select a position on the page to place the stamp."
|
||
rotation = "Rotation"
|
||
selectTemplate = "Select a template..."
|
||
stampSetup = "Stamp Setup"
|
||
stampText = "Stamp Text"
|
||
stampTextDescription = "Use dynamic variables below. Use @@ for literal @. Use \\n for new lines."
|
||
stampType = "Stamp Type"
|
||
submit = "Submit"
|
||
tags = "Stamp, Add image, center image, Watermark, PDF, Embed, Customize"
|
||
timeDesc = "Current time"
|
||
title = "Stamp PDF"
|
||
totalPagesDesc = "Total number of pages"
|
||
useTemplate = "Use Template"
|
||
uuidDesc = "Short unique identifier (8 chars)"
|
||
variablesHelp = "Click on any variable to insert it into your stamp text. Use @@ for literal @."
|
||
yearMonthDayDesc = "Individual date parts"
|
||
|
||
[AddStampRequest.error]
|
||
failed = "An error occurred while adding stamp to the PDF."
|
||
|
||
[AddStampRequest.results]
|
||
title = "Stamp Results"
|
||
|
||
[AddStampRequest.template]
|
||
custom = "Custom"
|
||
dateHeader = "Date Header"
|
||
doc-info = "Document Info"
|
||
draft = "Draft Watermark"
|
||
draftWatermark = "Draft Watermark"
|
||
european-date = "European Date (DD/MM/YYYY)"
|
||
europeanDate = "European Date"
|
||
legal-footer = "Legal Footer"
|
||
page-numbers = "Page Numbers"
|
||
pageNumberFooter = "Page Number Footer"
|
||
timestamp = "Timestamp"
|
||
|
||
[addText]
|
||
applySignatures = "Apply Text"
|
||
header = "Add text to PDFs"
|
||
tags = "text,annotation,label"
|
||
title = "Add Text"
|
||
|
||
[addText.canvas]
|
||
colorPickerTitle = "Choose stroke color"
|
||
|
||
[addText.error]
|
||
failed = "An error occurred while adding text to the PDF."
|
||
|
||
[addText.instructions]
|
||
noSignature = "Enter text above to enable placement."
|
||
paused = "Placement paused"
|
||
resumeHint = "Resume placement to click and add your text."
|
||
text = "After entering your text above, click anywhere on the PDF to place it."
|
||
title = "How to add text"
|
||
|
||
[addText.mode]
|
||
move = "Move Text"
|
||
pause = "Pause placement"
|
||
place = "Place Text"
|
||
resume = "Resume placement"
|
||
|
||
[addText.results]
|
||
title = "Add Text Results"
|
||
|
||
[addText.saved]
|
||
defaultCanvasLabel = "Drawing signature"
|
||
defaultImageLabel = "Uploaded signature"
|
||
defaultLabel = "Signature"
|
||
defaultTextLabel = "Typed signature"
|
||
delete = "Remove"
|
||
emptyTitle = "No saved signatures yet"
|
||
heading = "Saved signatures"
|
||
label = "Label"
|
||
limitTitle = "Limit reached"
|
||
next = "Next"
|
||
personalHeading = "Personal Signatures"
|
||
prev = "Previous"
|
||
savePersonal = "Save Personal"
|
||
saveShared = "Save Shared"
|
||
sharedHeading = "Shared Signatures"
|
||
|
||
[addText.saved.type]
|
||
canvas = "Drawing"
|
||
image = "Upload"
|
||
text = "Text"
|
||
|
||
[addText.step]
|
||
createDesc = "Enter the text you want to add"
|
||
place = "Place text"
|
||
placeDesc = "Click on the PDF to add your text"
|
||
|
||
[addText.steps]
|
||
configure = "Configure Text"
|
||
|
||
[addText.text]
|
||
colorLabel = "Text color"
|
||
fontLabel = "Font"
|
||
fontSizeLabel = "Font size"
|
||
fontSizePlaceholder = "Type or select font size (8-200)"
|
||
name = "Text content"
|
||
placeholder = "Enter the text you want to add"
|
||
|
||
[addText.type]
|
||
canvas = "Canvas"
|
||
image = "Image"
|
||
saved = "Saved"
|
||
text = "Text"
|
||
|
||
[adjust-contrast]
|
||
tags = "color-correction,tune,modify,enhance"
|
||
|
||
[adjustContrast]
|
||
adjustColors = "Adjust Colors"
|
||
basic = "Basic Adjustments"
|
||
blue = "Blue"
|
||
brightness = "Brightness:"
|
||
confirm = "Confirm"
|
||
contrast = "Contrast:"
|
||
green = "Green"
|
||
noPreview = "Select a PDF to preview"
|
||
red = "Red"
|
||
saturation = "Saturation:"
|
||
tags = "contrast,brightness,saturation,adjust colors,color correction,enhance,lighten,darken,improve quality,color balance,hue,vibrance"
|
||
title = "Adjust Colors/Contrast"
|
||
|
||
[adjustContrast.error]
|
||
failed = "Failed to adjust colors/contrast"
|
||
|
||
[adjustContrast.results]
|
||
title = "Adjusted PDF"
|
||
|
||
[adjustPageScale]
|
||
submit = "Adjust Page Scale"
|
||
tags = "resize,modify,dimension,adapt"
|
||
title = "Adjust Page Scale"
|
||
|
||
[adjustPageScale.error]
|
||
failed = "An error occurred while adjusting the page scale."
|
||
|
||
[adjustPageScale.orientation]
|
||
label = "Page orientation"
|
||
landscape = "Landscape"
|
||
portrait = "Portrait"
|
||
|
||
[adjustPageScale.pageSize]
|
||
keep = "Keep Original Size"
|
||
label = "Target Page Size"
|
||
legal = "Legal"
|
||
letter = "Letter"
|
||
|
||
[adjustPageScale.scaleFactor]
|
||
label = "Scale Factor"
|
||
|
||
[adjustPageScale.tooltip.description]
|
||
text = "Adjust the size of PDF content and change the page dimensions."
|
||
title = "Description"
|
||
|
||
[adjustPageScale.tooltip.header]
|
||
title = "Page Scale Settings Overview"
|
||
|
||
[adjustPageScale.tooltip.pageSize]
|
||
text = "Sets the dimensions of the output PDF pages. 'Keep Original Size' maintains current dimensions, while other options resize to standard paper sizes."
|
||
title = "Target Page Size"
|
||
|
||
[adjustPageScale.tooltip.scaleFactor]
|
||
bullet1 = "1.0 = Original size"
|
||
bullet2 = "0.5 = Half size (50% smaller)"
|
||
bullet3 = "2.0 = Double size (200% larger, may crop)"
|
||
text = "Controls how large or small the content appears on the page. Content is scaled and centered - if scaled content is larger than the page size, it may be cropped."
|
||
title = "Scale Factor"
|
||
|
||
[admin]
|
||
close = "Close"
|
||
error = "Error"
|
||
expand = "Expand"
|
||
|
||
[admin.settings]
|
||
discard = "Discard"
|
||
error = "Failed to save settings"
|
||
fetchError = "Failed to load settings"
|
||
loginRequired = "Login mode must be enabled to modify admin settings"
|
||
restartError = "Failed to restart server. Please restart manually."
|
||
restarting = "Restarting Server"
|
||
restartingMessage = "The server is restarting. Please wait a moment..."
|
||
restartRequired = "Restart Required"
|
||
save = "Save Changes"
|
||
saved = "Settings saved successfully"
|
||
saveError = "Failed to save settings"
|
||
saveSuccess = "Settings saved successfully"
|
||
success = "Settings saved successfully"
|
||
title = "Admin Settings"
|
||
workspace = "Workspace"
|
||
|
||
[admin.settings.advanced]
|
||
description = "Configure advanced features and experimental functionality."
|
||
features = "Feature Flags"
|
||
processing = "Processing"
|
||
title = "Advanced"
|
||
|
||
[admin.settings.advanced.disableSanitize]
|
||
description = "WARNING: Security risk - disabling HTML sanitization can lead to XSS vulnerabilities"
|
||
label = "Disable HTML Sanitization"
|
||
|
||
[admin.settings.advanced.enableAlphaFunctionality]
|
||
description = "Enable experimental and alpha-stage features (may be unstable)"
|
||
label = "Enable Alpha Features"
|
||
|
||
[admin.settings.advanced.enableUrlToPDF]
|
||
description = "Allow conversion of web pages to PDF documents"
|
||
label = "Enable URL to PDF"
|
||
|
||
[admin.settings.advanced.endpoints]
|
||
description = "Endpoint management is configured via YAML. See documentation for details on enabling/disabling specific endpoints."
|
||
label = "Endpoints"
|
||
manage = "Manage API Endpoints"
|
||
|
||
[admin.settings.advanced.maxDPI]
|
||
description = "Maximum DPI for image processing (0 = unlimited)"
|
||
label = "Maximum DPI"
|
||
|
||
[admin.settings.advanced.processExecutor]
|
||
calibre = "Calibre"
|
||
description = "Configure session limits and timeouts for each process executor"
|
||
ghostscript = "Ghostscript"
|
||
installApp = "Install App"
|
||
label = "Process Executor Limits"
|
||
libreOffice = "LibreOffice"
|
||
ocrMyPdf = "OCRmyPDF"
|
||
pdfToHtml = "PDF to HTML"
|
||
pythonOpenCv = "Python OpenCV"
|
||
qpdf = "QPDF"
|
||
tesseract = "Tesseract OCR"
|
||
weasyPrint = "WeasyPrint"
|
||
|
||
[admin.settings.advanced.processExecutor.sessionLimit]
|
||
description = "Maximum concurrent instances"
|
||
label = "Session Limit"
|
||
|
||
[admin.settings.advanced.processExecutor.timeout]
|
||
description = "Maximum execution time"
|
||
label = "Timeout (minutes)"
|
||
|
||
[admin.settings.advanced.tempFileManagement]
|
||
description = "Configure temporary file storage and cleanup behavior"
|
||
label = "Temp File Management"
|
||
|
||
[admin.settings.advanced.tempFileManagement.baseTmpDir]
|
||
description = "Base directory for temporary files (leave empty for default: java.io.tmpdir/stirling-pdf)"
|
||
label = "Base Temp Directory"
|
||
placeholder = "Default: java.io.tmpdir/stirling-pdf"
|
||
|
||
[admin.settings.advanced.tempFileManagement.cleanupIntervalMinutes]
|
||
description = "How often to run cleanup (in minutes)"
|
||
label = "Cleanup Interval (minutes)"
|
||
|
||
[admin.settings.advanced.tempFileManagement.cleanupSystemTemp]
|
||
description = "Whether to clean broader system temp directory (use with caution)"
|
||
label = "Cleanup System Temp"
|
||
|
||
[admin.settings.advanced.tempFileManagement.libreofficeDir]
|
||
description = "Directory for LibreOffice temp files (leave empty for default: baseTmpDir/libreoffice)"
|
||
label = "LibreOffice Temp Directory"
|
||
placeholder = "Default: baseTmpDir/libreoffice"
|
||
|
||
[admin.settings.advanced.tempFileManagement.maxAgeHours]
|
||
description = "Maximum age in hours before temp files are cleaned up"
|
||
label = "Max Age (hours)"
|
||
|
||
[admin.settings.advanced.tempFileManagement.prefix]
|
||
description = "Prefix for temp file names"
|
||
label = "Temp File Prefix"
|
||
|
||
[admin.settings.advanced.tempFileManagement.startupCleanup]
|
||
description = "Clean up old temp files on application startup"
|
||
label = "Startup Cleanup"
|
||
|
||
[admin.settings.advanced.tempFileManagement.systemTempDir]
|
||
description = "System temp directory to clean (only used if cleanupSystemTemp is enabled)"
|
||
label = "System Temp Directory"
|
||
placeholder = "System temp directory path"
|
||
|
||
[admin.settings.advanced.tessdataDir]
|
||
description = "Path to the tessdata directory for OCR language files"
|
||
downloadButton = "Download selected languages"
|
||
downloadErrorGeneric = "Download failed: {{message}}. Please try again later."
|
||
downloadErrorNetwork = "Download failed due to a network error. Please check your connection and try again."
|
||
downloadErrorPermission = "Tessdata directory is not writable: {{message}}. Please choose a writable directory (e.g. under the application data folder) or adjust permissions."
|
||
downloadErrorServer = "The server encountered an error while downloading tessdata languages. Please try again later."
|
||
downloadErrorTitle = "Download Failed"
|
||
downloadInvalidBody = "Some selected languages are not available to download. Please refresh and choose from the list."
|
||
downloadInvalidTitle = "Invalid selection"
|
||
downloadLabel = "Download additional tessdata languages"
|
||
downloadMissingBody = "Please select at least one language to download."
|
||
downloadMissingTitle = "No language selected"
|
||
downloadNothingFound = "No additional languages found"
|
||
downloadPlaceholder = "Select languages"
|
||
downloadSuccessBody = "The selected tessdata languages have been saved."
|
||
downloadSuccessTitle = "Languages downloaded"
|
||
installedLanguages = "Installed tessdata languages"
|
||
label = "Tessdata Directory"
|
||
loadingLanguages = "Loading installed tessdata languages..."
|
||
manualLinks = "Manual downloads: click the links and place the files into the tessdata folder."
|
||
noLanguages = "No tessdata languages found in the configured directory."
|
||
permissionNotice = "The tessdata path is not writable. Downloads will be opened in the browser; please save the .traineddata files manually into the tessdata folder."
|
||
|
||
[admin.settings.badge]
|
||
clickToUpgrade = "Click to view plan details"
|
||
|
||
[admin.settings.connections]
|
||
connect = "Connect"
|
||
description = "Configure external authentication providers like OAuth2 and SAML."
|
||
disconnect = "Disconnect"
|
||
disconnected = "Provider disconnected successfully"
|
||
disconnectError = "Failed to disconnect provider"
|
||
documentation = "View documentation"
|
||
imageResolutionFull = "Full (Original Size)"
|
||
imageResolutionReduced = "Reduced (Max 1200px)"
|
||
linkedServices = "Linked Services"
|
||
mobileScannerConvertToPdf = "Convert Images to PDF"
|
||
mobileScannerConvertToPdfDesc = "Automatically convert uploaded images to PDF format. If disabled, images will be kept as-is."
|
||
mobileScannerImageResolution = "Image Resolution"
|
||
mobileScannerImageResolutionDesc = "Resolution of uploaded images. \"Reduced\" scales images to max 1200px to reduce file size."
|
||
mobileScannerPageFormat = "Page Format"
|
||
mobileScannerPageFormatDesc = "PDF page size for converted images. \"Keep\" uses original image dimensions."
|
||
mobileScannerStretchToFit = "Stretch to Fit"
|
||
mobileScannerStretchToFitDesc = "Stretch images to fill the entire page. If disabled, images are centered with preserved aspect ratio."
|
||
pageFormatA4 = "A4 (210×297mm)"
|
||
pageFormatKeep = "Keep (Original Dimensions)"
|
||
pageFormatLetter = "Letter (8.5×11in)"
|
||
title = "Connections"
|
||
unlinkedServices = "Unlinked Services"
|
||
|
||
[admin.settings.connections.mobileScanner]
|
||
description = "Allow users to upload files from mobile devices by scanning a QR code"
|
||
enable = "Enable QR Code Upload"
|
||
imageResolutionFull = "Full (Original Size)"
|
||
imageResolutionReduced = "Reduced (Max 1200px)"
|
||
label = "Mobile Phone Upload"
|
||
link = "Configure in System Settings"
|
||
mobileScannerConvertToPdf = "Convert Images to PDF"
|
||
mobileScannerConvertToPdfDesc = "Automatically convert uploaded images to PDF format. If disabled, images will be kept as-is."
|
||
mobileScannerImageResolution = "Image Resolution"
|
||
mobileScannerImageResolutionDesc = "Resolution of uploaded images. \"Reduced\" scales images to max 1200px to reduce file size."
|
||
mobileScannerPageFormat = "Page Format"
|
||
mobileScannerPageFormatDesc = "PDF page size for converted images. \"Keep\" uses original image dimensions."
|
||
mobileScannerStretchToFit = "Stretch to Fit"
|
||
mobileScannerStretchToFitDesc = "Stretch images to fill the entire page. If disabled, images are centered with preserved aspect ratio."
|
||
note = "Note: Requires Frontend URL to be configured. "
|
||
pageFormatA4 = "A4 (210×297mm)"
|
||
pageFormatKeep = "Keep (Original Dimensions)"
|
||
pageFormatLetter = "Letter (8.5×11in)"
|
||
|
||
[admin.settings.connections.oauth2]
|
||
label = "OAuth2"
|
||
|
||
[admin.settings.connections.oauth2.autoCreateUser]
|
||
description = "Automatically create user accounts on first OAuth2 login"
|
||
label = "Auto Create Users"
|
||
|
||
[admin.settings.connections.oauth2.blockRegistration]
|
||
description = "Prevent new user registration via OAuth2"
|
||
label = "Block Registration"
|
||
|
||
[admin.settings.connections.oauth2.clientId]
|
||
description = "The OAuth2 client ID from your provider"
|
||
label = "Client ID"
|
||
|
||
[admin.settings.connections.oauth2.clientSecret]
|
||
description = "The OAuth2 client secret from your provider"
|
||
label = "Client Secret"
|
||
|
||
[admin.settings.connections.oauth2.enabled]
|
||
description = "Allow users to authenticate using OAuth2 providers"
|
||
label = "Enable OAuth2"
|
||
|
||
[admin.settings.connections.oauth2.issuer]
|
||
description = "The OAuth2 provider issuer URL"
|
||
label = "Issuer URL"
|
||
|
||
[admin.settings.connections.oauth2.provider]
|
||
description = "The OAuth2 provider to use for authentication"
|
||
label = "Provider"
|
||
|
||
[admin.settings.connections.oauth2.scopes]
|
||
description = "Comma-separated list of OAuth2 scopes to request (e.g., openid, profile, email)"
|
||
label = "OAuth2 Scopes"
|
||
|
||
[admin.settings.connections.oauth2.useAsUsername]
|
||
description = "The OAuth2 claim to use as the username (e.g., email, sub)"
|
||
label = "Use as Username"
|
||
|
||
[admin.settings.connections.saml2]
|
||
label = "SAML2"
|
||
|
||
[admin.settings.connections.saml2.autoCreateUser]
|
||
description = "Automatically create user accounts on first SAML2 login"
|
||
label = "Auto Create Users"
|
||
|
||
[admin.settings.connections.saml2.blockRegistration]
|
||
description = "Prevent new user registration via SAML2"
|
||
label = "Block Registration"
|
||
|
||
[admin.settings.connections.saml2.enabled]
|
||
description = "Allow users to authenticate using SAML2 providers"
|
||
label = "Enable SAML2"
|
||
|
||
[admin.settings.connections.saml2.provider]
|
||
description = "The SAML2 provider name"
|
||
label = "Provider"
|
||
|
||
[admin.settings.connections.saml2.registrationId]
|
||
description = "The SAML2 registration identifier"
|
||
label = "Registration ID"
|
||
|
||
[admin.settings.connections.ssoAutoLogin]
|
||
description = "Automatically redirect to SSO login when authentication is required"
|
||
enable = "Enable SSO Auto Login"
|
||
label = "SSO Auto Login"
|
||
|
||
[admin.settings.database]
|
||
actions = "Actions"
|
||
backupCreated = "Backup created successfully"
|
||
backupDescription = "Manage H2 backups directly from the admin console."
|
||
backupFailed = "Failed to create backup"
|
||
backupTitle = "Backups & Restore"
|
||
chooseFile = "Choose a .sql backup file"
|
||
codeMismatch = "Confirmation code does not match"
|
||
codeMismatchBody = "Please enter the code exactly as shown to proceed."
|
||
configuration = "Database Configuration"
|
||
confirmCodeLabel = "Enter the confirmation code to proceed"
|
||
confirmImport = "Confirm import"
|
||
confirmImportTitle = "Confirm database import"
|
||
createBackup = "Create backup"
|
||
created = "Created"
|
||
delete = "Delete"
|
||
deleteConfirm = "Delete this backup? This cannot be undone."
|
||
deleteConfirmAction = "Delete backup"
|
||
deleteFailed = "Failed to delete backup"
|
||
deleteSuccess = "Backup deleted"
|
||
deleteTitle = "Delete backup"
|
||
description = "Configure custom database connection settings for enterprise deployments."
|
||
download = "Download"
|
||
downloadFailed = "Failed to download backup"
|
||
embedded = "Embedded H2"
|
||
enterCode = "Enter the code shown above"
|
||
external = "External DB"
|
||
fileName = "File"
|
||
h2Hint = "Set the database type to H2 and disable custom database to enable backup and restore."
|
||
h2Only = "Backups are available only for the embedded H2 database."
|
||
import = "Import"
|
||
importFailed = "Failed to import backup"
|
||
importFromUpload = "Import upload"
|
||
importSuccess = "Backup imported successfully"
|
||
loadError = "Failed to load database backups"
|
||
manageBackups = "Manage backups"
|
||
noBackups = "No backups found yet."
|
||
overwriteWarning = "Warning: This will overwrite the current database."
|
||
overwriteWarningBody = "All existing data will be replaced by the uploaded backup. This action cannot be undone."
|
||
refresh = "Refresh"
|
||
selectFile = "Please select a .sql file to import"
|
||
size = "Size"
|
||
title = "Database"
|
||
unavailable = "Backup list unavailable for the current database configuration."
|
||
uploadTitle = "Upload & import"
|
||
version = "H2 Version"
|
||
|
||
[admin.settings.database.customUrl]
|
||
description = "Full JDBC connection string (e.g., jdbc:postgresql://localhost:5432/postgres). If provided, individual connection settings below are not used."
|
||
label = "Custom Database URL"
|
||
|
||
[admin.settings.database.enableCustom]
|
||
description = "Use your own custom database configuration instead of the default embedded database"
|
||
label = "Enable Custom Database"
|
||
|
||
[admin.settings.database.hostName]
|
||
description = "Database server hostname (not used if custom URL is provided)"
|
||
label = "Host Name"
|
||
|
||
[admin.settings.database.name]
|
||
description = "Name of the database (not used if custom URL is provided)"
|
||
label = "Database Name"
|
||
|
||
[admin.settings.database.password]
|
||
description = "Database authentication password"
|
||
label = "Password"
|
||
placeholder = "Enter database password"
|
||
|
||
[admin.settings.database.port]
|
||
description = "Database server port (not used if custom URL is provided)"
|
||
label = "Port"
|
||
|
||
[admin.settings.database.type]
|
||
description = "Type of database (not used if custom URL is provided)"
|
||
label = "Database Type"
|
||
|
||
[admin.settings.database.username]
|
||
description = "Database authentication username"
|
||
label = "Username"
|
||
|
||
[admin.settings.endpoints]
|
||
description = "Control which API endpoints and endpoint groups are available."
|
||
management = "Endpoint Management"
|
||
title = "API Endpoints"
|
||
userDefaults = "User Preference Defaults"
|
||
userDefaultsDescription = "Set default values for user preferences. Users can override these in their personal settings."
|
||
|
||
[admin.settings.endpoints.defaultHideUnavailableConversions]
|
||
description = "Remove disabled conversion options instead of showing them grayed out"
|
||
label = "Hide unavailable conversions by default"
|
||
|
||
[admin.settings.endpoints.defaultHideUnavailableTools]
|
||
description = "Remove disabled tools instead of showing them grayed out"
|
||
label = "Hide unavailable tools by default"
|
||
|
||
[admin.settings.endpoints.groupsToRemove]
|
||
description = "Select endpoint groups to disable"
|
||
label = "Disabled Endpoint Groups"
|
||
placeholder = "Select groups to disable"
|
||
|
||
[admin.settings.endpoints.toRemove]
|
||
description = "Select individual endpoints to disable"
|
||
label = "Disabled Endpoints"
|
||
placeholder = "Select endpoints to disable"
|
||
|
||
[admin.settings.enterpriseRequired]
|
||
message = "An Enterprise license is required to access {{featureName}}. You are viewing demo data for reference."
|
||
title = "Enterprise License Required"
|
||
|
||
[admin.settings.features]
|
||
description = "Configure optional features and functionality."
|
||
title = "Features"
|
||
|
||
[admin.settings.features.serverCertificate]
|
||
description = "Configure server-side certificate generation for \"Sign with Stirling-PDF\" functionality"
|
||
label = "Server Certificate"
|
||
|
||
[admin.settings.features.serverCertificate.enabled]
|
||
description = "Enable server-side certificate for \"Sign with Stirling-PDF\" option"
|
||
label = "Enable Server Certificate"
|
||
|
||
[admin.settings.features.serverCertificate.organizationName]
|
||
description = "Organization name for generated certificates"
|
||
label = "Organization Name"
|
||
|
||
[admin.settings.features.serverCertificate.regenerateOnStartup]
|
||
description = "Generate new certificate on each application startup"
|
||
label = "Regenerate on Startup"
|
||
|
||
[admin.settings.features.serverCertificate.validity]
|
||
description = "Number of days the certificate will be valid"
|
||
label = "Certificate Validity (days)"
|
||
|
||
[admin.settings.general]
|
||
description = "Configure system-wide application settings including branding and default behavior."
|
||
system = "System"
|
||
title = "System Settings"
|
||
ui = "User Interface"
|
||
|
||
[admin.settings.general.appName]
|
||
description = "The name displayed in the browser tab and home page"
|
||
label = "Application Name"
|
||
|
||
[admin.settings.general.appNameNavbar]
|
||
description = "The name displayed in the navigation bar"
|
||
label = "Navbar Brand"
|
||
|
||
[admin.settings.general.customHTMLFiles]
|
||
description = "Allow serving custom HTML files from the customFiles directory"
|
||
label = "Custom HTML Files"
|
||
|
||
[admin.settings.general.customMetadata]
|
||
label = "Custom Metadata"
|
||
|
||
[admin.settings.general.customMetadata.author]
|
||
description = "Default author for PDF metadata (e.g., username)"
|
||
label = "Default Author"
|
||
|
||
[admin.settings.general.customMetadata.autoUpdate]
|
||
description = "Automatically update PDF metadata on all processed documents"
|
||
label = "Auto Update Metadata"
|
||
|
||
[admin.settings.general.customMetadata.creator]
|
||
description = "Default creator for PDF metadata"
|
||
label = "Default Creator"
|
||
|
||
[admin.settings.general.customMetadata.producer]
|
||
description = "Default producer for PDF metadata"
|
||
label = "Default Producer"
|
||
|
||
[admin.settings.general.customPaths]
|
||
description = "Configure custom file system paths for pipeline processing and external tools"
|
||
label = "Custom Paths"
|
||
|
||
[admin.settings.general.customPaths.operations]
|
||
label = "External Tool Paths"
|
||
|
||
[admin.settings.general.customPaths.operations.unoconvert]
|
||
description = "Path to LibreOffice unoconvert for document conversions (leave empty for default: /opt/venv/bin/unoconvert)"
|
||
label = "Unoconvert Executable"
|
||
|
||
[admin.settings.general.customPaths.operations.weasyprint]
|
||
description = "Path to WeasyPrint executable for HTML to PDF conversion (leave empty for default: /opt/venv/bin/weasyprint)"
|
||
label = "WeasyPrint Executable"
|
||
|
||
[admin.settings.general.customPaths.pipeline]
|
||
label = "Pipeline Directories"
|
||
|
||
[admin.settings.general.customPaths.pipeline.finishedFoldersDir]
|
||
description = "Directory where processed PDFs are outputted (leave empty for default: /pipeline/finishedFolders)"
|
||
label = "Finished Folders Directory"
|
||
|
||
[admin.settings.general.customPaths.pipeline.pipelineDir]
|
||
description = "Base directory for pipeline resources (leave empty for default: /pipeline)"
|
||
label = "Pipeline Directory"
|
||
|
||
[admin.settings.general.customPaths.pipeline.watchedFoldersDir]
|
||
description = "Directory where pipeline monitors for incoming PDFs (leave empty for default: /pipeline/watchedFolders)"
|
||
label = "Watched Folders Directory"
|
||
|
||
[admin.settings.general.customPaths.pipeline.watchedFoldersDirs]
|
||
description = "Directories where pipeline monitors for incoming PDFs (one per line or comma-separated; leave empty for default: /pipeline/watchedFolders)"
|
||
label = "Watched Folders Directories"
|
||
|
||
[admin.settings.general.defaultLocale]
|
||
description = "The default language for new users (e.g., en_US, es_ES)"
|
||
label = "Default Locale"
|
||
|
||
[admin.settings.general.fileUploadLimit]
|
||
description = "Maximum file upload size (e.g., 100MB, 1GB)"
|
||
label = "File Upload Limit"
|
||
|
||
[admin.settings.general.frontendUrl]
|
||
description = "Base URL for frontend (e.g., https://pdf.example.com). Used for email invite links and mobile QR code uploads. Leave empty to use backend URL."
|
||
label = "Frontend URL"
|
||
|
||
[admin.settings.general.hideDisabledTools]
|
||
description = "Hide disabled tools from the interface"
|
||
label = "Hide Disabled Tools"
|
||
|
||
[admin.settings.general.hideDisabledTools.googleDrive]
|
||
description = "Hide Google Drive button when not enabled"
|
||
label = "Hide Google Drive"
|
||
|
||
[admin.settings.general.hideDisabledTools.mobileScanner]
|
||
description = "Hide mobile QR scanner button when not enabled"
|
||
label = "Hide Mobile Scanner"
|
||
|
||
[admin.settings.general.homeDescription]
|
||
description = "The description text shown on the home page"
|
||
label = "Home Description"
|
||
|
||
[admin.settings.general.languages]
|
||
description = "Languages that users can select from (leave empty to enable all languages)"
|
||
label = "Available Languages"
|
||
placeholder = "Select languages"
|
||
|
||
[admin.settings.general.logoStyle]
|
||
classic = "Classic"
|
||
classicAlt = "Classic logo"
|
||
description = "Set the default logo style for all users on this server. Users can override this setting in their personal preferences."
|
||
label = "Logo Style"
|
||
modern = "Modern"
|
||
modernAlt = "Modern logo"
|
||
|
||
[admin.settings.general.showUpdate]
|
||
description = "Display notifications when a new version is available"
|
||
label = "Show Update Notifications"
|
||
|
||
[admin.settings.general.showUpdateOnlyAdmin]
|
||
description = "Restrict update notifications to admin users only"
|
||
label = "Show Updates to Admins Only"
|
||
|
||
[admin.settings.legal]
|
||
description = "Configure links to legal documents and policies."
|
||
title = "Legal Documents"
|
||
|
||
[admin.settings.legal.accessibilityStatement]
|
||
description = "URL or filename to accessibility statement"
|
||
label = "Accessibility Statement"
|
||
|
||
[admin.settings.legal.cookiePolicy]
|
||
description = "URL or filename to cookie policy"
|
||
label = "Cookie Policy"
|
||
|
||
[admin.settings.legal.disclaimer]
|
||
message = "By customizing these legal documents, you assume full responsibility for ensuring compliance with all applicable laws and regulations, including but not limited to GDPR and other EU data protection requirements. Only modify these settings if: (1) you are operating a personal/private instance, (2) you are outside EU jurisdiction and understand your local legal obligations, or (3) you have obtained proper legal counsel and accept sole responsibility for all user data and legal compliance. Stirling-PDF and its developers assume no liability for your legal obligations."
|
||
title = "Legal Responsibility Warning"
|
||
|
||
[admin.settings.legal.impressum]
|
||
description = "URL or filename to impressum (required in some jurisdictions)"
|
||
label = "Impressum"
|
||
|
||
[admin.settings.legal.privacyPolicy]
|
||
description = "URL or filename to privacy policy"
|
||
label = "Privacy Policy"
|
||
|
||
[admin.settings.legal.termsAndConditions]
|
||
description = "URL or filename to terms and conditions"
|
||
label = "Terms and Conditions"
|
||
|
||
[admin.settings.loginDisabled]
|
||
message = "Login mode must be enabled to modify admin settings. Please set SECURITY_ENABLELOGIN=true in your environment or security.enableLogin: true in settings.yml, then restart the server."
|
||
readOnly = "The settings below show example values for reference. Enable login mode to view and edit actual configuration."
|
||
title = "Login Mode Required"
|
||
|
||
[admin.settings.mail]
|
||
description = "Configure SMTP settings for sending email notifications."
|
||
smtp = "SMTP Configuration"
|
||
title = "Mail Server"
|
||
|
||
[admin.settings.mail.enabled]
|
||
description = "Enable email notifications and SMTP functionality"
|
||
label = "Enable Mail"
|
||
|
||
[admin.settings.mail.enableInvites]
|
||
description = "Allow admins to invite users via email with auto-generated passwords"
|
||
label = "Enable Email Invites"
|
||
|
||
[admin.settings.mail.from]
|
||
description = "The email address to use as the sender"
|
||
label = "From Address"
|
||
|
||
[admin.settings.mail.frontendUrl]
|
||
description = "Base URL for frontend (e.g. https://pdf.example.com). Used for generating invite links in emails. Leave empty to use backend URL."
|
||
label = "Frontend URL"
|
||
|
||
[admin.settings.mail.frontendUrlNote]
|
||
link = "Configure in System Settings"
|
||
note = "Note: Requires Frontend URL to be configured. "
|
||
|
||
[admin.settings.mail.host]
|
||
description = "The hostname or IP address of your SMTP server"
|
||
label = "SMTP Host"
|
||
|
||
[admin.settings.mail.password]
|
||
description = "Password for SMTP authentication"
|
||
label = "SMTP Password"
|
||
placeholder = "Enter SMTP password"
|
||
|
||
[admin.settings.mail.port]
|
||
description = "The port number for SMTP connection (typically 25, 465, or 587)"
|
||
label = "SMTP Port"
|
||
|
||
[admin.settings.mail.username]
|
||
description = "Username for SMTP authentication"
|
||
label = "SMTP Username"
|
||
|
||
[admin.settings.mcp]
|
||
apikeyNote = "Clients send a Stirling API key in the X-API-KEY header (or Authorization: Bearer <key>). The key maps to its owning Stirling user - only provisioned accounts get in, and actions are audited as that user. Manage keys under Account > API Keys."
|
||
description = "Expose Stirling's PDF tools and AI agents to MCP clients over an OAuth-protected endpoint."
|
||
title = "MCP Server"
|
||
|
||
[admin.settings.mcp.acceptedAudiences]
|
||
description = "Extra token audience values accepted besides the Resource ID (comma or space separated). Leave blank for strict RFC 8707. Needed for IdPs that cannot mint resource audiences - e.g. Supabase's OAuth server always issues aud=authenticated."
|
||
label = "Additional accepted audiences (optional)"
|
||
|
||
[admin.settings.mcp.allowedOps]
|
||
description = "If set, ONLY these operation ids are exposed (an allow-list; comma or space separated). Leave blank to expose all enabled tools except any blocked below."
|
||
label = "Allowed tools"
|
||
|
||
[admin.settings.mcp.blockedOps]
|
||
description = "Operation ids to hide from MCP (comma or space separated), e.g. add-password remove-password. Leave blank to expose all enabled tools."
|
||
label = "Blocked tools"
|
||
|
||
[admin.settings.mcp.enabled]
|
||
description = "When off (default), no /mcp endpoint, metadata, or MCP beans are loaded."
|
||
label = "Enable MCP Server"
|
||
|
||
[admin.settings.mcp.guide]
|
||
step1 = "Enter your OAuth issuer + resource ID above, Save, and restart."
|
||
step1ApiKey = "Create an API key under Account > API Keys (each user uses their own)."
|
||
step2 = "In your MCP client add a"
|
||
step2b = "server pointing at:"
|
||
step3 = "The client auto-discovers OAuth from:"
|
||
step3ApiKey = "Send the key in an"
|
||
step3ApiKeyb = "header (or Authorization: Bearer <key>). No OAuth or metadata discovery is used."
|
||
step4 = "Approve the sign-in; the client retries with a token. Tools appear grouped: convert, pages, misc, security, ai."
|
||
step4ApiKey = "Tools appear grouped: convert, pages, misc, security, ai - and every call is audited as the key's owner."
|
||
tip = "Tip: register the resource ID as an allowed audience in your IdP. Tested with MCP Inspector and Claude Desktop."
|
||
tipApiKey = "Tip: API-key mode needs no external IdP - simplest for self-host. The key maps to its owning Stirling user."
|
||
title = "Connect an MCP client"
|
||
|
||
[admin.settings.mcp.issuerUri]
|
||
description = "Your OAuth2 authorization server (must publish /.well-known/openid-configuration). Required when enabled."
|
||
label = "OAuth Issuer URL"
|
||
|
||
[admin.settings.mcp.jwksUri]
|
||
description = "Leave blank to discover it from the issuer. Set only if your IdP serves keys at a non-standard URL."
|
||
label = "JWKS URL (optional)"
|
||
placeholder = "Auto-discovered from issuer"
|
||
|
||
[admin.settings.mcp.mode]
|
||
description = "OAuth needs an external IdP. API key uses a Stirling per-user API key (X-API-KEY) - simplest for self-host."
|
||
label = "Authentication mode"
|
||
|
||
[admin.settings.mcp.requireAccount]
|
||
description = "Only let tokens through if their subject maps to a provisioned, enabled Stirling user."
|
||
label = "Require an existing Stirling account"
|
||
|
||
[admin.settings.mcp.resourceId]
|
||
description = "This server's public /mcp URL. Tokens must list it in their audience (RFC 8707) or they are rejected."
|
||
label = "Resource ID"
|
||
|
||
[admin.settings.mcp.scopes]
|
||
description = "Require mcp.tools.read for read ops and mcp.tools.write for write/AI ops."
|
||
label = "Enforce OAuth scopes"
|
||
|
||
[admin.settings.mcp.usernameClaim]
|
||
description = "JWT claim matched against a Stirling username (e.g. sub, email, preferred_username)."
|
||
label = "Username claim"
|
||
|
||
[admin.settings.plan.noData]
|
||
message = "Plans data is not available at the moment."
|
||
title = "No data available"
|
||
|
||
[admin.settings.premium]
|
||
description = "Configure your premium or enterprise license key."
|
||
license = "License Configuration"
|
||
noInput = "Please provide a license key or file"
|
||
title = "Premium & Enterprise"
|
||
|
||
[admin.settings.premium.currentLicense]
|
||
file = "Source: License file ({{path}})"
|
||
key = "Source: License key"
|
||
noInput = "Please provide a license key or upload a certificate file"
|
||
success = "Success"
|
||
title = "Active License"
|
||
type = "Type: {{type}}"
|
||
|
||
[admin.settings.premium.enabled]
|
||
description = "Enable license key checks for pro/enterprise features"
|
||
label = "Enable Premium Features"
|
||
|
||
[admin.settings.premium.file]
|
||
choose = "Choose License File"
|
||
description = "Upload your .lic or .cert license file from offline purchases"
|
||
label = "License Certificate File"
|
||
selected = "Selected: {{filename}} ({{size}})"
|
||
successMessage = "License file uploaded and activated successfully. No restart required."
|
||
|
||
[admin.settings.premium.inputMethod]
|
||
file = "Certificate File"
|
||
text = "License Key"
|
||
|
||
[admin.settings.premium.key]
|
||
description = "Enter your premium or enterprise license key. Premium features will be automatically enabled when a key is provided."
|
||
label = "License Key"
|
||
success = "License Key Saved"
|
||
successMessage = "Your license key has been activated successfully. No restart required."
|
||
|
||
[admin.settings.premium.key.overwriteWarning]
|
||
line1 = "Overwriting your current license key cannot be undone."
|
||
line2 = "Your previous license will be permanently lost unless you have backed it up elsewhere."
|
||
line3 = "Important: Keep license keys private and secure. Never share them publicly."
|
||
title = "⚠️ Warning: Existing License Detected"
|
||
|
||
[admin.settings.premium.licenseKey]
|
||
info = "If you have a license key or certificate file from a direct purchase, you can enter it here to activate premium or enterprise features."
|
||
toggle = "Got a license key or certificate file?"
|
||
|
||
[admin.settings.premium.movedFeatures]
|
||
auditLogging = "<0>Audit Logging</0> (ENTERPRISE) - Security"
|
||
customMetadata = "<0>Custom Metadata</0> (PRO) - General"
|
||
databaseConfiguration = "<0>Database Configuration</0> (ENTERPRISE) - Database"
|
||
message = "Premium and Enterprise features are now organized in their respective sections:"
|
||
title = "Premium Features Distributed"
|
||
|
||
[admin.settings.privacy]
|
||
analytics = "Analytics & Tracking"
|
||
description = "Configure privacy and data collection settings."
|
||
searchEngine = "Search Engine Visibility"
|
||
title = "Privacy"
|
||
|
||
[admin.settings.privacy.enableAnalytics]
|
||
description = "Collect anonymous usage analytics to help improve the application"
|
||
label = "Enable Analytics"
|
||
|
||
[admin.settings.privacy.googleVisibility]
|
||
description = "Allow search engines to index this application"
|
||
label = "Google Visibility"
|
||
|
||
[admin.settings.privacy.metricsEnabled]
|
||
description = "Enable collection of performance and usage metrics. Provides API endpoint for admins to access metrics data"
|
||
label = "Enable Metrics"
|
||
|
||
[admin.settings.restart]
|
||
later = "Restart Later"
|
||
message = "Settings have been saved successfully. A server restart is required for the changes to take effect."
|
||
now = "Restart Now"
|
||
question = "Would you like to restart the server now or later?"
|
||
title = "Restart Required"
|
||
|
||
[admin.settings.security]
|
||
authentication = "Authentication"
|
||
description = "Configure authentication, login behavior, and security policies."
|
||
title = "Security"
|
||
|
||
[admin.settings.security.audit]
|
||
hideDetails = "Hide audit level details"
|
||
label = "Audit Logging"
|
||
showDetails = "Show audit level details"
|
||
|
||
[admin.settings.security.audit.advancedOptions]
|
||
description = "The following options increase processing time and memory usage. Enable only if truly needed."
|
||
title = "Advanced Options"
|
||
|
||
[admin.settings.security.audit.captureFileHash]
|
||
description = "Extract SHA-256 hash of uploaded PDF files for integrity verification. Independent of audit level."
|
||
label = "Capture File Hash (SHA-256)"
|
||
|
||
[admin.settings.security.audit.captureOperationResults]
|
||
description = "Capture method return values. Not recommended: significantly increases log volume and disk usage."
|
||
label = "Capture Operation Results"
|
||
|
||
[admin.settings.security.audit.capturePdfAuthor]
|
||
description = "Extract author field from PDF documents during processing. Requires PDF parsing, increases latency. Independent of audit level."
|
||
label = "Capture PDF Author Metadata"
|
||
|
||
[admin.settings.security.audit.enabled]
|
||
description = "Track user actions and system events for compliance and security monitoring"
|
||
label = "Enable Audit Logging"
|
||
|
||
[admin.settings.security.audit.level]
|
||
description = "Audit Level: OFF (0) = no logging | BASIC (1) = file modifications (compress/split/merge/etc) & settings | STANDARD (2) = file operations + user actions | VERBOSE (3) = all requests including polling. Higher levels include all events from lower levels."
|
||
label = "Audit Level"
|
||
|
||
[admin.settings.security.audit.levelDetails]
|
||
basic = "PDF file operations (compress, split, merge, etc.) and settings changes. Captures: operation status (success/failure), method parameters, timing. Minimal log volume."
|
||
off = "No audit logging (except critical security events)"
|
||
standard = "BASIC events plus: user login/logout, account changes, general GET requests. Excludes continuous polling calls (/auth/me, /app-config, /health, etc.) to reduce log noise. Ideal for most deployments."
|
||
verbose = "STANDARD events plus: continuous polling calls, all GET requests, detailed timing. Warning: high log volume and performance impact."
|
||
|
||
[admin.settings.security.audit.retentionDays]
|
||
description = "Number of days to retain audit logs (0 = infinite retention)"
|
||
label = "Audit Retention (days)"
|
||
|
||
[admin.settings.security.csrfDisabled]
|
||
description = "Disable Cross-Site Request Forgery protection (not recommended)"
|
||
label = "Disable CSRF Protection"
|
||
|
||
[admin.settings.security.enableLogin]
|
||
description = "Require users to log in before accessing the application"
|
||
label = "Enable Login"
|
||
|
||
[admin.settings.security.htmlUrlSecurity]
|
||
advanced = "Advanced Settings"
|
||
description = "Configure URL access restrictions for HTML processing to prevent SSRF attacks"
|
||
label = "HTML URL Security"
|
||
networkBlocking = "Network Blocking"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.allowedDomains]
|
||
description = "One domain per line (e.g., cdn.example.com). Only these domains allowed when level is MAX"
|
||
label = "Allowed Domains (Whitelist)"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.blockCloudMetadata]
|
||
description = "Block cloud provider metadata endpoints (169.254.169.254)"
|
||
label = "Block Cloud Metadata Endpoints"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.blockedDomains]
|
||
description = "One domain per line (e.g., malicious.com). Additional domains to block"
|
||
label = "Blocked Domains (Blacklist)"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.blockLinkLocal]
|
||
description = "Block link-local addresses (169.254.x.x, fe80::/10)"
|
||
label = "Block Link-Local Addresses"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.blockLocalhost]
|
||
description = "Block localhost and loopback addresses (127.x.x.x, ::1)"
|
||
label = "Block Localhost"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.blockPrivateNetworks]
|
||
description = "Block RFC 1918 private networks (10.x.x.x, 192.168.x.x, 172.16-31.x.x)"
|
||
label = "Block Private Networks"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.enabled]
|
||
description = "Enable URL security restrictions for HTML to PDF conversions"
|
||
label = "Enable URL Security"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.internalTlds]
|
||
description = "One TLD per line (e.g., .local, .internal). Block domains with these TLD patterns"
|
||
label = "Internal TLDs"
|
||
|
||
[admin.settings.security.htmlUrlSecurity.level]
|
||
description = "MAX: whitelist only, MEDIUM: block internal networks, OFF: no restrictions"
|
||
label = "Security Level"
|
||
max = "Maximum (Whitelist Only)"
|
||
medium = "Medium (Block Internal)"
|
||
off = "Off (No Restrictions)"
|
||
|
||
[admin.settings.security.initialLogin]
|
||
label = "Initial Login"
|
||
|
||
[admin.settings.security.initialLogin.password]
|
||
description = "The password for the initial admin account"
|
||
label = "Initial Password"
|
||
|
||
[admin.settings.security.initialLogin.username]
|
||
description = "The username for the initial admin account"
|
||
label = "Initial Username"
|
||
|
||
[admin.settings.security.jwt]
|
||
label = "JWT Configuration"
|
||
|
||
[admin.settings.security.jwt.allowedClockSkewSeconds]
|
||
description = "Tolerance for client/server time drift during token validation (default: 60 seconds)"
|
||
label = "Clock Skew Tolerance (seconds)"
|
||
|
||
[admin.settings.security.jwt.desktopTokenExpiryMinutes]
|
||
description = "Access token lifetime in minutes for desktop clients. Desktop apps automatically detected via User-Agent and receive longer sessions for better UX (default: 43200 = 30 days)"
|
||
label = "Desktop Token Expiry (minutes)"
|
||
|
||
[admin.settings.security.jwt.enableKeyCleanup]
|
||
description = "Automatically remove expired JWT keys"
|
||
label = "Enable Key Cleanup"
|
||
|
||
[admin.settings.security.jwt.enableKeyRotation]
|
||
description = "Automatically rotate JWT signing keys periodically"
|
||
label = "Enable Key Rotation"
|
||
|
||
[admin.settings.security.jwt.persistence]
|
||
description = "Store JWT keys persistently to survive server restarts"
|
||
label = "Enable Key Persistence"
|
||
|
||
[admin.settings.security.jwt.refreshGraceMinutes]
|
||
description = "Allow token refresh within this many minutes after expiry (default: 15 minutes, max 3 attempts)"
|
||
label = "Refresh Grace Period (minutes)"
|
||
|
||
[admin.settings.security.jwt.secureCookie]
|
||
description = "Require HTTPS for JWT cookies (recommended for production)"
|
||
label = "Secure Cookie"
|
||
|
||
[admin.settings.security.jwt.tokenExpiryMinutes]
|
||
description = "Access token lifetime in minutes for web clients (default: 1440 = 24 hours)"
|
||
label = "Web Token Expiry (minutes)"
|
||
|
||
[admin.settings.security.loginAttemptCount]
|
||
description = "Maximum number of failed login attempts before account lockout"
|
||
label = "Login Attempt Limit"
|
||
|
||
[admin.settings.security.loginMethod]
|
||
all = "All Methods"
|
||
description = "The authentication method to use for user login"
|
||
label = "Login Method"
|
||
normal = "Username/Password Only"
|
||
oauth2 = "OAuth2 Only"
|
||
saml2 = "SAML2 Only"
|
||
|
||
[admin.settings.security.loginResetTimeMinutes]
|
||
description = "Time before failed login attempts are reset"
|
||
label = "Login Reset Time (minutes)"
|
||
|
||
[admin.settings.security.ssoNotice]
|
||
message = "OAuth2 and SAML2 authentication providers have been moved to the Connections menu for easier management."
|
||
title = "Looking for SSO/SAML settings?"
|
||
|
||
[admin.settings.security.xFrameOptions]
|
||
deny = "Deny (Prevents all framing)"
|
||
description = "Controls whether the application can be embedded in iframes"
|
||
disabled = "Disabled (No X-Frame-Options header)"
|
||
label = "X-Frame-Options"
|
||
sameorigin = "Same Origin (Allow framing from same domain)"
|
||
|
||
[admin.settings.storage]
|
||
description = "Control server storage and sharing options."
|
||
title = "File Storage & Sharing"
|
||
|
||
[admin.settings.storage.enabled]
|
||
description = "Allow users to store files on the server."
|
||
label = "Enable Server File Storage"
|
||
|
||
[admin.settings.storage.sharing.email]
|
||
description = "Allow sharing with email addresses."
|
||
label = "Enable Email Sharing"
|
||
mailLink = "Configure Mail Settings"
|
||
mailNote = "Requires mail configuration. "
|
||
|
||
[admin.settings.storage.sharing.enabled]
|
||
description = "Allow users to share stored files."
|
||
label = "Enable Sharing"
|
||
|
||
[admin.settings.storage.sharing.links]
|
||
description = "Allow sharing via signed-in links."
|
||
frontendUrlLink = "Configure in System Settings"
|
||
frontendUrlNote = "Requires a Frontend URL. "
|
||
label = "Enable Share Links"
|
||
|
||
[admin.settings.storage.signing.enabled]
|
||
description = "Allow users to create multi-participant document signing sessions. Requires server file storage to be enabled."
|
||
label = "Enable Group Signing (Alpha)"
|
||
|
||
[admin.settings.telegram]
|
||
description = "Configure Telegram bot connectivity, access controls, and feedback behavior."
|
||
title = "Telegram Bot"
|
||
|
||
[admin.settings.telegram.accessControl]
|
||
description = "Restrict which users or channels can interact with the bot."
|
||
title = "Access Control"
|
||
|
||
[admin.settings.telegram.allowChannelIDs]
|
||
description = "Enter Telegram channel IDs allowed to interact with the bot."
|
||
label = "Allowed Channel IDs"
|
||
placeholder = "Add channel ID and press enter"
|
||
|
||
[admin.settings.telegram.allowUserIDs]
|
||
description = "Enter Telegram user IDs allowed to interact with the bot."
|
||
label = "Allowed User IDs"
|
||
placeholder = "Add user ID and press enter"
|
||
|
||
[admin.settings.telegram.botToken]
|
||
description = "API token provided by BotFather for your Telegram bot."
|
||
label = "Bot Token"
|
||
|
||
[admin.settings.telegram.botUsername]
|
||
description = "The public username of your Telegram bot."
|
||
label = "Bot Username"
|
||
|
||
[admin.settings.telegram.customFolderSuffix]
|
||
description = "Append the chat ID to incoming file folders to isolate uploads per chat."
|
||
label = "Use Custom Folder Suffix"
|
||
|
||
[admin.settings.telegram.enableAllowChannelIDs]
|
||
description = "When enabled, only listed channel IDs can use the bot."
|
||
label = "Allow Specific Channel IDs"
|
||
|
||
[admin.settings.telegram.enableAllowUserIDs]
|
||
description = "When enabled, only listed user IDs can use the bot."
|
||
label = "Allow Specific User IDs"
|
||
|
||
[admin.settings.telegram.enabled]
|
||
description = "Allow users to interact with Stirling PDF through your configured Telegram bot."
|
||
label = "Enable Telegram Bot"
|
||
|
||
[admin.settings.telegram.feedback]
|
||
description = "Choose when the bot should send feedback to users and channels."
|
||
title = "Feedback Messages"
|
||
|
||
[admin.settings.telegram.feedback.channel]
|
||
title = "Channel Feedback Rules"
|
||
errorMessage.description = "Show detailed error messages for channels."
|
||
errorMessage.label = "Show error messages (Channel)"
|
||
errorProcessing.description = "Send processing error messages to channels."
|
||
errorProcessing.label = "Show processing errors (Channel)"
|
||
noValidDocument.description = "Suppress the no valid document response for channel uploads."
|
||
noValidDocument.label = "Show \"No valid document\" (Channel)"
|
||
|
||
[admin.settings.telegram.feedback.general.enabled]
|
||
description = "Control whether the bot sends feedback messages at all."
|
||
label = "Enable Feedback"
|
||
|
||
[admin.settings.telegram.feedback.user]
|
||
title = "User Feedback Rules"
|
||
errorMessage.description = "Show detailed error messages for users."
|
||
errorMessage.label = "Show error messages (User)"
|
||
errorProcessing.description = "Send processing error messages to users."
|
||
errorProcessing.label = "Show processing errors (User)"
|
||
noValidDocument.description = "Suppress the no valid document response for user uploads."
|
||
noValidDocument.label = "Show \"No valid document\" (User)"
|
||
|
||
[admin.settings.telegram.pipelineInboxFolder]
|
||
description = "Folder under the pipeline directory where incoming Telegram files are stored."
|
||
label = "Inbox Folder"
|
||
|
||
[admin.settings.telegram.pollingIntervalMillis]
|
||
description = "Interval between checks for new Telegram updates."
|
||
label = "Polling Interval (ms)"
|
||
|
||
[admin.settings.telegram.processing]
|
||
description = "Control polling intervals and processing timeouts for Telegram uploads."
|
||
title = "Processing"
|
||
|
||
[admin.settings.telegram.processingTimeoutSeconds]
|
||
description = "Maximum time to wait for a processing job before reporting an error."
|
||
label = "Processing Timeout (seconds)"
|
||
|
||
[admin.settings.unsavedChanges]
|
||
cancel = "Keep Editing"
|
||
discard = "Discard Changes"
|
||
hint = "You have unsaved changes"
|
||
message = "You have unsaved changes. Do you want to discard them?"
|
||
title = "Unsaved Changes"
|
||
|
||
[adminOnboarding]
|
||
adminTools = "Finally, we have advanced administration tools like <strong>Auditing</strong> to track system activity and <strong>Usage Analytics</strong> to monitor how your users interact with the platform."
|
||
configButton = "Open <strong>Settings</strong> to access all system configuration and administrative controls."
|
||
connectionsSection = "The <strong>Connections</strong> section supports various login methods including custom SSO and SAML providers like Google and GitHub, plus email integrations for notifications and communications."
|
||
databaseSection = "For advanced production environments, we have settings to allow <strong>external database hookups</strong> so you can integrate with your existing infrastructure."
|
||
settingsOverview = "This is the <strong>Settings Panel</strong>. Admin settings are organized by category for easy navigation."
|
||
systemCustomization = "We have extensive ways to customize the UI: <strong>System Settings</strong> let you change the app name and languages, <strong>Features</strong> allows server certificate management, and <strong>Endpoints</strong> lets you enable or disable specific tools for your users."
|
||
teamsAndUsers = "Manage <strong>Teams</strong> and individual users here. You can invite new users via email, shareable links, or create custom accounts for them yourself."
|
||
welcome = "Welcome to the <strong>Admin Tour</strong>! Let's explore the powerful enterprise features and settings available to system administrators."
|
||
wrapUp = "That's the admin tour! You've seen the enterprise features that make Stirling PDF a powerful, customizable solution for organizations. You can replay it anytime - just open <strong>Settings</strong> and find it here in the <strong>Tours</strong> section under Help."
|
||
|
||
[adminUserSettings]
|
||
admin = "Admin"
|
||
title = "User Control Settings"
|
||
|
||
[agents]
|
||
stirling_name = "Stirling"
|
||
|
||
[analytics]
|
||
learnMore = "Learn more about our analytics"
|
||
paragraph1 = "Stirling PDF has opt-in analytics to help us improve the product. We do not track any personal information or file contents."
|
||
paragraph2 = "Please consider enabling analytics to help Stirling-PDF grow and to allow us to understand our users better."
|
||
title = "Do you want to help make Stirling PDF better?"
|
||
|
||
[annotate]
|
||
tags = "annotate,highlight,draw,markup,comment,notes,review,redline,feedback,markup tools,sticky notes,shapes,arrows,text box,freehand"
|
||
|
||
[annotation]
|
||
annotationStyle = "Annotation style"
|
||
backgroundColor = "Background color"
|
||
borderOff = "Border: Off"
|
||
borderOn = "Border: On"
|
||
changeColor = "Change Color"
|
||
chooseColor = "Choose color"
|
||
circle = "Circle"
|
||
clearBackground = "Remove background"
|
||
color = "Color"
|
||
comment = "Comment"
|
||
comments = "Comments"
|
||
contents = "Text"
|
||
delete = "Delete"
|
||
drawing = "Drawing"
|
||
editSelectDescription = "Click an existing annotation to edit its color, opacity, text, or size."
|
||
editText = "Edit"
|
||
fillColor = "Fill Color"
|
||
fillOpacity = "Fill Opacity"
|
||
fontSize = "Font size"
|
||
freehandHighlighter = "Freehand Highlighter"
|
||
highlight = "Highlight"
|
||
imagePreview = "Preview"
|
||
insertText = "Insert Text"
|
||
line = "Line"
|
||
lineArrow = "Arrow"
|
||
noBackground = "No background"
|
||
note = "Note"
|
||
notesStamps = "Notes & Stamps"
|
||
opacity = "Opacity"
|
||
pen = "Pen"
|
||
polygon = "Polygon"
|
||
polyline = "Polyline"
|
||
properties = "Properties"
|
||
rectangle = "Rectangle"
|
||
replaceText = "Replace Text"
|
||
saveChanges = "Save Changes"
|
||
select = "Select"
|
||
selectAndMove = "Select and Edit"
|
||
settings = "Settings"
|
||
shapes = "Shapes"
|
||
square = "Square"
|
||
squiggly = "Squiggly"
|
||
stamp = "Add Image"
|
||
stampSettings = "Stamp Settings"
|
||
strikeout = "Strikeout"
|
||
strokeColor = "Stroke Color"
|
||
strokeOpacity = "Stroke Opacity"
|
||
strokeWidth = "Width"
|
||
text = "Text box"
|
||
textAlignment = "Text Alignment"
|
||
textMarkup = "Text Markup"
|
||
title = "Annotate"
|
||
underline = "Underline"
|
||
width = "Width"
|
||
|
||
[app]
|
||
description = "The Free Adobe Acrobat alternative (10M+ Downloads)"
|
||
|
||
[attachments]
|
||
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"
|
||
tags = "attachments,add,remove,embed,file"
|
||
title = "Add Attachments"
|
||
|
||
[audit]
|
||
configureAudit = "Configure Audit Logging"
|
||
configureAuditMessage = "Adjust audit logging level, retention period, and other settings in the Security & Authentication section."
|
||
disabled = "Audit logging is disabled"
|
||
disabledMessage = "Enable audit logging in your application configuration to track system events."
|
||
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."
|
||
goToSettings = "Go to Audit Settings"
|
||
notAvailable = "Audit system not available"
|
||
notAvailableMessage = "The audit system is not configured or not available."
|
||
|
||
[audit.charts]
|
||
byType = "Events by Type"
|
||
byUser = "Top Users"
|
||
day = "Day"
|
||
error = "Error loading charts"
|
||
month = "Month"
|
||
noData = "No data for this period"
|
||
overTime = "Events Over Time"
|
||
title = "Audit Dashboard"
|
||
week = "Week"
|
||
|
||
[audit.clearData]
|
||
cancel = "Cancel"
|
||
codeDoesNotMatch = "Code does not match"
|
||
codePlaceholder = "Type the code here"
|
||
confirmationCode = "Confirmation Code"
|
||
confirmationRequired = "Delete All Audit Data"
|
||
confirmMessage = "This will permanently remove all audit logs. Enter the confirmation code below to proceed."
|
||
confirmTitle = "Please confirm you want to delete"
|
||
deleteButton = "Delete"
|
||
enterCode = "Confirmation Code"
|
||
enterCodeBelow = "Enter the code exactly as shown above (case-sensitive)"
|
||
initiateDelete = "Delete All Data"
|
||
irreversible = "IRREVERSIBLE"
|
||
success = "Success"
|
||
successMessage = "All audit data has been cleared successfully"
|
||
warning1 = "This action cannot be undone"
|
||
warning2 = "Deleting audit data will permanently remove all historical audit logs, including security events, user activities, and file operations from the database."
|
||
|
||
[audit.error]
|
||
title = "Error loading audit system"
|
||
|
||
[audit.events]
|
||
actions = "Actions"
|
||
author = "Author"
|
||
clearFilters = "Clear"
|
||
details = "Details"
|
||
documentName = "Document"
|
||
endDate = "End date"
|
||
error = "Error loading events"
|
||
eventDetails = "Event Details"
|
||
fileHash = "File Hash"
|
||
filterByType = "Filter by type"
|
||
filterByUser = "Filter by user"
|
||
ipAddress = "IP Address"
|
||
noEvents = "No events found"
|
||
startDate = "Start date"
|
||
timestamp = "Timestamp"
|
||
title = "Audit Events"
|
||
type = "Type"
|
||
user = "User"
|
||
viewDetails = "View Details"
|
||
|
||
[audit.export]
|
||
description = "Export audit events to CSV or JSON format. Use filters to limit the exported data."
|
||
error = "Failed to export data"
|
||
exportButton = "Export Data"
|
||
fieldAuthor = "Author (from PDF)"
|
||
fieldDate = "Date"
|
||
fieldDocumentName = "Document Name"
|
||
fieldFileHash = "File Hash (SHA-256)"
|
||
fieldIpAddress = "IP Address"
|
||
fieldOperationResults = "Operation Results"
|
||
fieldOutcome = "Outcome (Success/Failure)"
|
||
fieldTool = "Tool"
|
||
fieldUsername = "Username"
|
||
filters = "Filters (Optional)"
|
||
format = "Export Format"
|
||
selectFields = "Select Fields to Include"
|
||
title = "Export Audit Data"
|
||
|
||
[audit.filters]
|
||
last30Days = "Last 30 days"
|
||
last7Days = "Last 7 days"
|
||
quickPresets = "Quick filters"
|
||
thisMonth = "This month"
|
||
today = "Today"
|
||
|
||
[audit.stats]
|
||
activeUsers = "Active Users"
|
||
attention = "Attention needed"
|
||
avgLatency = "Avg Latency"
|
||
error = "Error loading statistics"
|
||
excellent = "Excellent"
|
||
good = "Good"
|
||
noData = "N/A"
|
||
successRate = "Success Rate"
|
||
totalEvents = "Total Events"
|
||
vsLastPeriod = "vs last period"
|
||
|
||
[audit.systemStatus]
|
||
captureBySettings = "Enable in settings"
|
||
capturedFields = "Captured Fields"
|
||
date = "Date"
|
||
days = "days"
|
||
disabled = "Disabled"
|
||
documentName = "Document Name"
|
||
enabled = "Enabled"
|
||
fileHash = "File Hash"
|
||
level = "Audit Level"
|
||
pdfAuthor = "PDF Author"
|
||
retention = "Retention Period"
|
||
status = "Audit Logging"
|
||
title = "System Status"
|
||
tool = "Tool"
|
||
totalEvents = "Total Events"
|
||
username = "Username"
|
||
|
||
[audit.tabs]
|
||
clearData = "Clear Data"
|
||
dashboard = "Dashboard"
|
||
events = "Audit Events"
|
||
export = "Export"
|
||
|
||
[auth]
|
||
accessDenied = "Access Denied"
|
||
insufficientPermissions = "You do not have permission to perform this action."
|
||
|
||
[auth.displayName]
|
||
guest = "Guest"
|
||
user = "User"
|
||
|
||
[auto-rename]
|
||
description = "Automatically finds the title from your PDF content and uses it as the filename."
|
||
submit = "Auto Rename"
|
||
tags = "auto-detect,header-based,organize,relabel"
|
||
title = "Auto Rename"
|
||
|
||
[auto-rename.error]
|
||
failed = "An error occurred while auto-renaming the PDF."
|
||
|
||
[auto-rename.results]
|
||
title = "Auto-Rename Results"
|
||
|
||
[auto-rename.settings]
|
||
title = "About"
|
||
|
||
[auto-rename.tooltip.description]
|
||
title = "What it does"
|
||
|
||
[auto-rename.tooltip.header]
|
||
title = "How Auto-Rename Works"
|
||
|
||
[auto-rename.tooltip.howItWorks]
|
||
bullet1 = "Looks for text that appears to be a title or heading"
|
||
bullet2 = "Creates a clean, valid filename from the detected title"
|
||
bullet3 = "Keeps the original name if no suitable title is found"
|
||
title = "Smart Renaming"
|
||
|
||
[automate]
|
||
copyToSaved = "Copy to Saved"
|
||
desc = "Build multi-step workflows by chaining together PDF actions. Ideal for recurring tasks."
|
||
export = "Export"
|
||
exportForFolderScanning = "Export for Folder Scanning"
|
||
import = "Import"
|
||
importPartialSuccess = "Imported with {{count}} unmapped operation(s): {{ops}}"
|
||
importSuccess = "Imported automation: {{name}}"
|
||
invalidStep = "Invalid step"
|
||
reviewTitle = "Automation Results"
|
||
tags = "workflow,sequence,automation,automate,batch,batch processing,pipeline,chain,multi-step,recurring,scheduled,automatic,process multiple,bulk operations"
|
||
title = "Automate"
|
||
|
||
[automate.config]
|
||
cancel = "Cancel"
|
||
description = "Configure the settings for this tool. These settings will be applied when the automation runs."
|
||
noSettings = "This tool does not have configurable settings."
|
||
save = "Save Configuration"
|
||
title = "Configure {{toolName}}"
|
||
|
||
[automate.creation]
|
||
createTitle = "Create Automation"
|
||
editTitle = "Edit Automation"
|
||
export = "Export"
|
||
exportForFolderScanning = "Export for Folder Scanning"
|
||
intro = "Automations run tools sequentially. To get started, add tools in the order you want them to run."
|
||
save = "Save Automation"
|
||
|
||
[automate.creation.description]
|
||
label = "Description (optional)"
|
||
placeholder = "Describe what this automation does..."
|
||
|
||
[automate.creation.icon]
|
||
label = "Icon"
|
||
|
||
[automate.creation.name]
|
||
label = "Automation Name"
|
||
placeholder = "My Automation"
|
||
|
||
[automate.creation.tools]
|
||
add = "Add a tool..."
|
||
addTool = "Add Tool"
|
||
configure = "Configure tool"
|
||
notConfigured = "! Not Configured"
|
||
remove = "Remove tool"
|
||
selected = "Selected Tools"
|
||
selectTool = "Select a tool..."
|
||
|
||
[automate.creation.unsavedChanges]
|
||
cancel = "Cancel"
|
||
confirm = "Go Back"
|
||
message = "You have unsaved changes. Are you sure you want to go back? All changes will be lost."
|
||
title = "Unsaved Changes"
|
||
|
||
[automate.entryMenu]
|
||
label = "Open menu for {{title}}"
|
||
|
||
[automate.importModal]
|
||
cancel = "Cancel"
|
||
confirm = "Import"
|
||
detectedAutomation = "Automate JSON"
|
||
detectedFolderScan = "Folder Scanning JSON"
|
||
dropHint = "Drop JSON here or click to choose a file"
|
||
dropSubhint = "Both Automate and Folder Scanning configs are accepted"
|
||
dropzoneAriaLabel = "Drop an automation JSON file here"
|
||
intro = "Drop a JSON file or paste its contents below. The format (Automate or Folder Scanning) is detected automatically."
|
||
opCount = "{{count}} operation(s)"
|
||
parseError = "Could not parse: {{message}}"
|
||
pasteLabel = "Or paste JSON"
|
||
pastePlaceholder = "Paste your automation JSON here…"
|
||
title = "Import automation"
|
||
unresolved = "Unmapped: {{ops}}"
|
||
|
||
[automate.run]
|
||
title = "Run Automation"
|
||
|
||
[automate.selection]
|
||
title = "Automation Selection"
|
||
|
||
[automate.selection.createNew]
|
||
title = "Create New Automation"
|
||
|
||
[automate.selection.saved]
|
||
title = "Saved"
|
||
|
||
[automate.selection.suggested]
|
||
title = "Suggested"
|
||
|
||
[automate.sequence]
|
||
finish = "Finish"
|
||
run = "Run Automation"
|
||
running = "Running Automation..."
|
||
steps = "{{count}} steps"
|
||
unnamed = "Unnamed Automation"
|
||
|
||
[automation.suggested]
|
||
emailPreparation = "Email Preparation"
|
||
emailPreparationDesc = "Optimizes PDFs for email distribution by compressing files, splitting large documents into 20MB chunks for email compatibility, and removing metadata for privacy."
|
||
prePublishSanitization = "Pre-publish Sanitization"
|
||
prePublishSanitizationDesc = "Sanitization workflow that removes all hidden metadata, JavaScript, embedded files, annotations, and flattens forms to prevent data leakage before publishing PDFs online."
|
||
processImages = "Process Images"
|
||
processImagesDesc = "Converts multiple image files into a single PDF document, then applies OCR technology to extract searchable text from the images."
|
||
securePdfIngestion = "Secure PDF Ingestion"
|
||
securePdfIngestionDesc = "Comprehensive PDF processing workflow that sanitizes documents, applies OCR with cleanup, converts to PDF/A format for long-term archival, and optimizes file size."
|
||
secureWorkflow = "Security Workflow"
|
||
secureWorkflowDesc = "Secures PDF documents by removing potentially malicious content like JavaScript and embedded files, then adds password protection to prevent unauthorized access. Password is set to 'password' by default."
|
||
|
||
[autoRename]
|
||
description = "This tool will automatically rename PDF files based on their content. It analyzes the document to find the most suitable title from the text."
|
||
tags = "auto-detect,header-based,organize,relabel,auto rename,automatic rename,smart rename,rename by content,filename,file naming,detect title"
|
||
|
||
[autoSizeSplitPDF]
|
||
tags = "pdf,split,document,organization"
|
||
|
||
[autoSplitPDF]
|
||
dividerDownload2 = "Download 'Auto Splitter Divider (with instructions).pdf'"
|
||
duplexMode = "Duplex Mode (Front and back scanning)"
|
||
tags = "QR-based,separate,scan-segment,organize"
|
||
title = "Auto Split PDF"
|
||
|
||
[backendHealth]
|
||
checking = "Checking backend status..."
|
||
offline = "Backend Offline"
|
||
online = "Backend Online"
|
||
starting = "Backend starting up..."
|
||
wait = "Please wait for the backend to finish launching and try again."
|
||
|
||
[backendStartup]
|
||
notFoundTitle = "Backend not found"
|
||
retry = "Retry"
|
||
unreachable = "The application cannot currently connect to the backend. Verify the backend status and network connectivity, then try again."
|
||
|
||
[billing]
|
||
basedOnUsers = "(current users)"
|
||
currentSeats = "Current Seats"
|
||
manageBilling = "Manage Billing"
|
||
minimumSeats = "Minimum Seats"
|
||
newSeatCount = "New Seat Count"
|
||
newSeatCountDescription = "Select the number of seats for your enterprise license"
|
||
notEnterprise = "Seat management is only available for enterprise licenses"
|
||
preparingUpdate = "Preparing seat update..."
|
||
seatCountTooLow = "Seat count must be at least {{minimum}} (current number of users)"
|
||
seatCountUnchanged = "Please select a different seat count"
|
||
seatsUpdated = "Seats Updated"
|
||
seatsUpdatedMessage = "Your enterprise seats have been updated to {{seats}}"
|
||
stripePortalRedirect = "You will be redirected to Stripe's billing portal to review and confirm the seat change. The prorated amount will be calculated automatically."
|
||
updateEnterpriseSeats = "Update Enterprise Seats"
|
||
updateProcessing = "Update Processing"
|
||
updateProcessingMessage = "Your seat update is being processed. Please refresh in a few moments."
|
||
updateSeats = "Update Seats"
|
||
whatHappensNext = "What happens next?"
|
||
|
||
[billing.portal]
|
||
error = "Failed to open billing portal"
|
||
|
||
[bookletImposition]
|
||
paperSizeNote = "Paper size is automatically derived from your first page."
|
||
submit = "Create Booklet"
|
||
tags = "booklet,imposition,printing,binding,folding,signature"
|
||
title = "Booklet Imposition"
|
||
|
||
[bookletImposition.addBorder]
|
||
label = "Add borders around pages"
|
||
tooltip = "Adds borders around each page section to help with cutting and alignment"
|
||
|
||
[bookletImposition.addGutter]
|
||
label = "Add gutter margin"
|
||
tooltip = "Adds inner margin space for binding"
|
||
|
||
[bookletImposition.advanced]
|
||
toggle = "Advanced Options"
|
||
|
||
[bookletImposition.doubleSided]
|
||
label = "Double-sided printing"
|
||
tooltip = "Creates both front and back sides for proper booklet printing"
|
||
|
||
[bookletImposition.duplexPass]
|
||
first = "1st Pass"
|
||
firstInstructions = "Prints front sides → stack face-down → run again with 2nd Pass"
|
||
label = "Print Pass"
|
||
second = "2nd Pass"
|
||
secondInstructions = "Load printed stack face-down → prints back sides"
|
||
|
||
[bookletImposition.error]
|
||
failed = "An error occurred while creating the booklet imposition."
|
||
|
||
[bookletImposition.flipOnShortEdge]
|
||
label = "Flip on short edge (automatic duplex only)"
|
||
manualNote = "Not needed in manual mode - you flip the stack yourself"
|
||
tooltip = "Enable for short-edge duplex printing (automatic duplex only - ignored in manual mode)"
|
||
|
||
[bookletImposition.gutterSize]
|
||
label = "Gutter size (points)"
|
||
|
||
[bookletImposition.manualDuplex]
|
||
instructions = "For printers without automatic duplex. You'll need to run this twice:"
|
||
title = "Manual Duplex Mode"
|
||
|
||
[bookletImposition.rtlBinding]
|
||
label = "Right-to-left binding"
|
||
tooltip = "For Arabic, Hebrew, or other right-to-left languages"
|
||
|
||
[bookletImposition.tooltip.advanced]
|
||
bullet1 = "Right-to-Left Binding: For Arabic, Hebrew, or RTL languages"
|
||
bullet2 = "Borders: Shows cut lines for trimming"
|
||
bullet3 = "Gutter Margin: Adds space for binding/stapling"
|
||
bullet4 = "Short-edge Flip: Only for automatic duplex printers"
|
||
text = "Fine-tune your booklet:"
|
||
title = "Advanced Options"
|
||
|
||
[bookletImposition.tooltip.description]
|
||
text = "Creates professional booklets by arranging pages in the correct printing order. Your PDF pages are placed 2-up on landscape sheets so when folded and bound, they read in proper sequence like a real book."
|
||
title = "What is Booklet Imposition?"
|
||
|
||
[bookletImposition.tooltip.example]
|
||
bullet1 = "Sheet 1 Front: Pages 8, 1 | Back: Pages 2, 7"
|
||
bullet2 = "Sheet 2 Front: Pages 6, 3 | Back: Pages 4, 5"
|
||
bullet3 = "When folded & stacked: Reads 1→2→3→4→5→6→7→8"
|
||
text = "Your 8-page document becomes 2 sheets:"
|
||
title = "Example: 8-Page Booklet"
|
||
|
||
[bookletImposition.tooltip.header]
|
||
title = "Booklet Creation Guide"
|
||
|
||
[bookletImposition.tooltip.manualDuplex]
|
||
bullet1 = "Turn OFF 'Double-sided printing'"
|
||
bullet2 = "Select '1st Pass' → Print → Stack face-down"
|
||
bullet3 = "Select '2nd Pass' → Load stack → Print backs"
|
||
bullet4 = "Fold and assemble as normal"
|
||
text = "For printers without automatic duplex:"
|
||
title = "Manual Duplex (Single-sided Printers)"
|
||
|
||
[bookletImposition.tooltip.printing]
|
||
bullet1 = "Print double-sided with 'Flip on long edge'"
|
||
bullet2 = "Stack sheets in order, fold in half"
|
||
bullet3 = "Staple or bind along the folded spine"
|
||
bullet4 = "For short-edge printers: Enable 'Flip on short edge' option"
|
||
text = "Follow these steps for perfect booklets:"
|
||
title = "How to Print & Assemble"
|
||
|
||
[bulkSelection]
|
||
syntaxError = "There is a syntax issue. See Page Selection tips for help."
|
||
|
||
[bulkSelection.advanced]
|
||
title = "Advanced"
|
||
|
||
[bulkSelection.everyNthPage]
|
||
placeholder = "Step size"
|
||
title = "Every Nth Page"
|
||
|
||
[bulkSelection.examples]
|
||
combineSets = "Combine sets"
|
||
every3rd = "Every 3rd"
|
||
first50 = "First 50"
|
||
last50 = "Last 50"
|
||
oddWithinExcluding = "Odd within 1-20 excluding 5-7"
|
||
title = "Examples"
|
||
|
||
[bulkSelection.firstNPages]
|
||
placeholder = "Number of pages"
|
||
title = "First N Pages"
|
||
|
||
[bulkSelection.header]
|
||
title = "Page Selection Guide"
|
||
|
||
[bulkSelection.keywords]
|
||
title = "Keywords"
|
||
|
||
[bulkSelection.lastNPages]
|
||
placeholder = "Number of pages"
|
||
title = "Last N Pages"
|
||
|
||
[bulkSelection.operators]
|
||
text = "AND has higher precedence than comma. NOT applies within the document range."
|
||
title = "Operators"
|
||
|
||
[bulkSelection.operators.and]
|
||
title = "Combine selections (both conditions must be true)"
|
||
|
||
[bulkSelection.operators.descriptions]
|
||
and = "AND: & or \"and\" - require both conditions (e.g., 1-50 & even)"
|
||
comma = "Comma: , or | - combine selections (e.g., 1-10, 20)"
|
||
not = "NOT: ! or \"not\" - exclude pages (e.g., 3n & not 30)"
|
||
|
||
[bulkSelection.operators.even]
|
||
title = "Select all even-numbered pages (2, 4, 6, 8...)"
|
||
|
||
[bulkSelection.operators.not]
|
||
title = "Exclude from selection"
|
||
|
||
[bulkSelection.operators.odd]
|
||
title = "Select all odd-numbered pages (1, 3, 5, 7...)"
|
||
|
||
[bulkSelection.operators.or]
|
||
title = "Add to selection (either condition can be true)"
|
||
|
||
[bulkSelection.pageSelection]
|
||
title = "Page Selection"
|
||
|
||
[bulkSelection.range]
|
||
fromPlaceholder = "From"
|
||
title = "Range"
|
||
toPlaceholder = "To"
|
||
|
||
[bulkSelection.syntax]
|
||
text = "Use numbers, ranges, keywords, and progressions (n starts at 0). Parentheses are supported."
|
||
title = "Syntax Basics"
|
||
|
||
[bulkSelection.syntax.bullets]
|
||
keywords = "Keywords: odd, even"
|
||
numbers = "Numbers/ranges: 5, 10-20"
|
||
progressions = "Progressions: 3n, 4n+1"
|
||
|
||
[certificateChoice.tooltip]
|
||
header = "Certificate Types"
|
||
|
||
[certificateChoice.tooltip.organization]
|
||
bullet1 = "Managed by system administrators"
|
||
bullet2 = "Shared across authorized users"
|
||
bullet3 = "Represents company identity, not individual"
|
||
bullet4 = "Best for: Official documents, team signatures"
|
||
description = "A shared certificate provided by your organization. Used for company-wide signing authority."
|
||
title = "Organization Certificate"
|
||
|
||
[certificateChoice.tooltip.personal]
|
||
bullet1 = "Generated automatically on first use"
|
||
bullet2 = "Tied to your user account"
|
||
bullet3 = "Cannot be shared with other users"
|
||
bullet4 = "Best for: Personal documents, individual accountability"
|
||
description = "An auto-generated certificate unique to your user account. Suitable for individual signatures."
|
||
title = "Personal Certificate"
|
||
|
||
[certificateChoice.tooltip.upload]
|
||
bullet1 = "Requires P12/PFX file and password"
|
||
bullet2 = "Can be issued by external Certificate Authorities"
|
||
bullet3 = "Higher trust level for legal documents"
|
||
bullet4 = "Best for: Legally binding contracts, external validation"
|
||
description = "Use your own PKCS#12 certificate file. Provides full control over certificate properties."
|
||
title = "Upload Custom P12"
|
||
|
||
[certSign]
|
||
awaitingSignatures = "Awaiting signatures"
|
||
chooseCertificate = "Choose Certificate File"
|
||
chooseJksFile = "Choose JKS File"
|
||
chooseP12File = "Choose PKCS12 File"
|
||
choosePfxFile = "Choose PFX File"
|
||
choosePrivateKey = "Choose Private Key File"
|
||
declined = "Declined"
|
||
fetchFailed = "Failed to load signing data"
|
||
finalized = "Finalized"
|
||
location = "Location"
|
||
logoTitle = "Logo"
|
||
name = "Name"
|
||
noLogo = "No Logo"
|
||
notified = "Pending"
|
||
pageNumber = "Page Number"
|
||
password = "Certificate Password"
|
||
passwordOptional = "Leave empty if no password"
|
||
pending = "Pending"
|
||
readyToFinalize = "Ready to finalize"
|
||
reason = "Reason"
|
||
serverCertMessage = "Using server certificate - no files or password required"
|
||
showLogo = "Show Logo"
|
||
signatureProgress = "{{signedCount}}/{{totalCount}} signatures"
|
||
signed = "Signed"
|
||
tags = "authenticate,PEM,P12,official,encrypt,sign,certificate,PKCS12,JKS,server,manual,auto"
|
||
title = "Certificate Signing"
|
||
viewed = "Viewed"
|
||
|
||
[certSign.appearance]
|
||
invisible = "Invisible"
|
||
stepTitle = "Signature Appearance"
|
||
visibility = "Visibility"
|
||
visible = "Visible"
|
||
|
||
[certSign.appearance.options]
|
||
title = "Signature Details"
|
||
|
||
[certSign.appearance.tooltip.header]
|
||
title = "About Signature Appearance"
|
||
|
||
[certSign.appearance.tooltip.invisible]
|
||
bullet1 = "Provides security without visual changes"
|
||
bullet2 = "Meets legal requirements for digital signing"
|
||
bullet3 = "Doesn't affect document layout or design"
|
||
text = "The signature is added to the PDF for security but won't be visible when viewing the document. Perfect for legal requirements without changing the document's appearance."
|
||
title = "Invisible Signatures"
|
||
|
||
[certSign.appearance.tooltip.visible]
|
||
bullet1 = "Shows signer name and date on the document"
|
||
bullet2 = "Can include reason and location for signing"
|
||
bullet3 = "Choose which page to place the signature"
|
||
bullet4 = "Optional logo can be included"
|
||
text = "Shows a signature block on the PDF with your name, date, and optional details. Useful when you want readers to clearly see the document is signed."
|
||
title = "Visible Signatures"
|
||
|
||
[certSign.certFiles]
|
||
stepTitle = "Certificate Files"
|
||
|
||
[certSign.certType.tooltip.convert]
|
||
text = "Convert your file to a Java keystore (.jks) with keytool, then pick JKS."
|
||
title = "Key not listed?"
|
||
|
||
[certSign.certType.tooltip.header]
|
||
title = "About Certificate Types"
|
||
|
||
[certSign.certType.tooltip.what]
|
||
text = "It's a secure ID for your signature that proves you signed. Unless you're required to sign via certificate, we recommend using another secure method like Type, Draw, or Upload."
|
||
title = "What's a certificate?"
|
||
|
||
[certSign.certType.tooltip.which]
|
||
bullet1 = "PKCS#12 (.p12 / .pfx) – one combined file (most common)"
|
||
bullet2 = "PFX (.pfx) – Microsoft's version of PKCS12"
|
||
bullet3 = "PEM – separate private-key and certificate .pem files"
|
||
bullet4 = "JKS – Java .jks keystore for dev / CI-CD workflows"
|
||
text = "Choose the format that matches your certificate file:"
|
||
title = "Which option should I use?"
|
||
|
||
[certSign.certTypeStep]
|
||
stepTitle = "Certificate Format"
|
||
|
||
[certSign.collab.addParticipants]
|
||
add = "Add {{count}} Participant(s)"
|
||
reasonHelp = "Pre-set a signing reason for these participants (optional, they can override when signing)"
|
||
reasonPlaceholder = "e.g. Approval, Review..."
|
||
|
||
[certSign.collab.finalize]
|
||
button = "Finalize and Load Signed PDF"
|
||
early = "Finalize with Current Signatures"
|
||
|
||
[certSign.collab.participant]
|
||
certInvalid = "✗ {{error}}"
|
||
certInvalidFallback = "Invalid certificate"
|
||
certNetworkError = "Could not validate certificate"
|
||
certValid = "✓ Certificate valid"
|
||
certValidating = "Validating certificate..."
|
||
certValidUntil = " until {{date}}"
|
||
|
||
[certSign.collab.sessionCreation]
|
||
includeSummaryPage = "Include Signature Summary Page"
|
||
includeSummaryPageHelp = "A summary page will be added at the end with all signature metadata. The digital certificate signature boxes on individual pages will be suppressed (wet signatures are unaffected)."
|
||
|
||
[certSign.collab.sessionDetail]
|
||
addParticipants = "Add Participants"
|
||
addParticipantsError = "Failed to add participants"
|
||
backToList = "Back to Sessions"
|
||
deleteConfirm = "Are you sure? This cannot be undone."
|
||
deleted = "Session deleted"
|
||
deleteError = "Failed to delete session"
|
||
deleteSession = "Delete Session"
|
||
dueDate = "Due Date"
|
||
finalizeError = "Failed to finalize session"
|
||
loadPdfError = "Failed to load signed PDF"
|
||
loadSignedPdf = "Load Signed PDF into Active Files"
|
||
messageLabel = "Message"
|
||
owner = "Owner"
|
||
participantRemoved = "Participant removed"
|
||
participants = "Participants"
|
||
participantsAdded = "Participants added successfully"
|
||
removeParticipant = "Remove"
|
||
removeParticipantError = "Failed to remove participant"
|
||
selectUsers = "Select users..."
|
||
sessionInfo = "Session Info"
|
||
workbenchTitle = "Session Management"
|
||
|
||
[certSign.collab.sessionList]
|
||
active = "Active"
|
||
finalized = "Finalized"
|
||
|
||
[certSign.collab.signatureSettings]
|
||
description = "Configure how signatures will appear for all participants"
|
||
title = "Signature Appearance"
|
||
|
||
[certSign.collab.signRequest]
|
||
addedToFiles = "Document added to active files"
|
||
addToFiles = "Add to Active Files"
|
||
advancedSettings = "Advanced Settings"
|
||
backToList = "Back to Sign Requests"
|
||
certificateChoice = "Select a certificate to sign with"
|
||
changeSignature = "Change signature"
|
||
clearSignature = "Clear Signature"
|
||
completeAndSign = "Complete & Sign"
|
||
createNewSignature = "Create New Signature"
|
||
decline = "Decline Request"
|
||
declineButton = "Decline"
|
||
deleteSelected = "Delete selected signature"
|
||
drawSignature = "Draw your signature below"
|
||
fileTooLarge = "File size must be less than 5MB"
|
||
fontFamily = "Font Family"
|
||
fontSize = "Font Size: {{size}}px"
|
||
fontSizePlaceholder = "Size"
|
||
from = "From"
|
||
invalidFileType = "Please select an image file"
|
||
location = "Location (Optional)"
|
||
locationPlaceholder = "Where are you signing from?"
|
||
noCertificate = "Please select a certificate file"
|
||
noSignatures = "Please place at least one signature on the PDF"
|
||
p12File = "P12/PFX Certificate File"
|
||
password = "Certificate Password"
|
||
penColor = "Pen Color"
|
||
penSize = "Pen Size: {{size}}px"
|
||
reason = "Reason (Optional)"
|
||
reasonPlaceholder = "Why are you signing?"
|
||
removeImage = "Remove Image"
|
||
savedSignatures = "Saved Signatures"
|
||
selectFile = "Select Image File"
|
||
selectSignatureTitle = "Select or Create Signature"
|
||
signatureInfo = "These settings are configured by the document owner"
|
||
signatureSettings = "Signature Settings"
|
||
signatureText = "Signature Text"
|
||
signatureTextPlaceholder = "Enter your name..."
|
||
signatureTypeLabel = "Signature Type"
|
||
signButton = "Sign Document"
|
||
signingTitle = "Signing"
|
||
textColor = "Text Color"
|
||
typeSignature = "Type your name to create a signature"
|
||
uploadCert = "Custom Certificate"
|
||
uploadCertDesc = "Use your own P12/PFX certificate"
|
||
uploadSignature = "Upload your signature image"
|
||
usePersonalCert = "Personal Certificate"
|
||
usePersonalCertDesc = "Auto-generated for your account"
|
||
useServerCert = "Organization Certificate"
|
||
useServerCertDesc = "Shared organization certificate"
|
||
workbenchTitle = "Sign Request"
|
||
|
||
[certSign.collab.signRequest.canvas]
|
||
colorPickerTitle = "Choose stroke color"
|
||
continue = "Continue"
|
||
|
||
[certSign.collab.signRequest.certModal]
|
||
certInvalid = "Certificate invalid: {{error}}"
|
||
certInvalidFallback = "Invalid certificate"
|
||
certNetworkError = "Could not validate certificate"
|
||
certValidating = "Validating certificate..."
|
||
certValidUntil = "Certificate valid until {{date}}"
|
||
description = "You have placed {{count}} signature(s). Choose your certificate to complete signing."
|
||
sign = "Sign Document"
|
||
title = "Configure Certificate"
|
||
|
||
[certSign.collab.signRequest.mode]
|
||
move = "Move Signature"
|
||
place = "Place Signature"
|
||
title = "Sign or move mode"
|
||
|
||
[certSign.collab.signRequest.modeTabs]
|
||
draw = "Draw"
|
||
image = "Upload"
|
||
text = "Type"
|
||
|
||
[certSign.collab.signRequest.preview]
|
||
imageAlt = "Selected signature"
|
||
missing = "No preview"
|
||
textFallback = "Signature"
|
||
|
||
[certSign.collab.signRequest.saved]
|
||
defaultCanvasLabel = "Drawing signature"
|
||
defaultImageLabel = "Uploaded signature"
|
||
defaultLabel = "Signature"
|
||
defaultTextLabel = "Typed signature"
|
||
delete = "Delete signature"
|
||
none = "No saved signatures"
|
||
|
||
[certSign.collab.signRequest.signatureType]
|
||
draw = "Draw"
|
||
type = "Type"
|
||
upload = "Upload"
|
||
|
||
[certSign.collab.signRequest.steps]
|
||
back = "Back"
|
||
cancelPlacement = "Cancel Placement"
|
||
certificate = "Certificate"
|
||
clickMultipleTimes = "Click on the PDF multiple times to place signatures. Drag any signature to move or resize it."
|
||
clickToPlace = "Click on the PDF where you would like your signature to appear."
|
||
continue = "Continue to Certificate Selection"
|
||
continueToPlacement = "Continue to Placement"
|
||
continueToReview = "Continue to Review"
|
||
createSignature = "Create Signature"
|
||
invisible = "Invisible"
|
||
location = "Location:"
|
||
multipleSignatures = "{{count}} signatures will be applied to the PDF"
|
||
oneSignature = "1 signature will be applied to the PDF"
|
||
placeOnPdf = "Place on PDF"
|
||
reason = "Reason:"
|
||
reviewTitle = "Review Before Signing"
|
||
signaturePlaced = "Signature placed on page {{page}}. You can adjust the position by clicking again or continue to review."
|
||
visibility = "Visibility:"
|
||
visible = "Visible"
|
||
yourSignatures = "Your Signatures ({{count}})"
|
||
|
||
[certSign.collab.signRequest.text]
|
||
colorLabel = "Color"
|
||
fontLabel = "Font"
|
||
fontSizeLabel = "Size"
|
||
fontSizePlaceholder = "16"
|
||
label = "Signature Text"
|
||
modalHint = "Enter your name, then click Continue to place it on the PDF."
|
||
placeholder = "Enter your name..."
|
||
|
||
[certSign.collab.userSelector]
|
||
inviteUsers = "Add Users"
|
||
loadError = "Failed to load users"
|
||
noTeam = "No Team"
|
||
noUsers = "No other users found."
|
||
placeholder = "Select users..."
|
||
|
||
[certSign.error]
|
||
failed = "An error occurred while processing signatures."
|
||
|
||
[certSign.mobile]
|
||
panelActions = "Actions"
|
||
panelDocument = "Document"
|
||
panelPeople = "People"
|
||
|
||
[certSign.sessions]
|
||
deleted = "Session deleted"
|
||
fetchFailed = "Failed to load session details"
|
||
finalized = "Session finalized"
|
||
loaded = "Signed PDF loaded"
|
||
pdfNotReady = "PDF Not Ready"
|
||
pdfNotReadyDesc = "The signed PDF is being generated. Please try again in a moment."
|
||
|
||
[certSign.sign]
|
||
results = "Signed PDF"
|
||
submit = "Sign PDF"
|
||
|
||
[certSign.signMode]
|
||
stepTitle = "Sign Mode"
|
||
|
||
[certSign.signMode.tooltip.auto]
|
||
text = "Signs with a server <b>self-signed</b> certificate. Same <b>tamper-evident seal</b> and <b>audit trail</b>; typically shows <b>Unverified</b> in viewers."
|
||
title = "Auto - Zero-setup, instant system seal"
|
||
use = "Use when: you need speed and consistent internal identity across reviews and records."
|
||
|
||
[certSign.signMode.tooltip.header]
|
||
title = "About PDF Signatures"
|
||
|
||
[certSign.signMode.tooltip.manual]
|
||
text = "Use your own certificate files for brand-aligned identity. Can display <b>Trusted</b> when your CA/chain is recognized."
|
||
title = "Manual - Bring your certificate"
|
||
use = "Use for: customer-facing, legal, compliance."
|
||
|
||
[certSign.signMode.tooltip.overview]
|
||
text = "Both modes seal the document (any edits are flagged as tampering) and record who/when/how for auditing. Viewer trust depends on the certificate chain."
|
||
title = "How signatures work"
|
||
|
||
[certSign.signMode.tooltip.rule]
|
||
text = "Need recipient <b>Trusted</b> status? <b>Manual</b>. Need a fast, tamper-evident seal and audit trail with no setup? <b>Auto</b>."
|
||
title = "Rule of thumb"
|
||
|
||
[certSign.tooltip.header]
|
||
title = "About Managing Signatures"
|
||
|
||
[certSign.tooltip.overview]
|
||
bullet1 = "Check existing signatures and their validity"
|
||
bullet2 = "View detailed information about signers and certificates"
|
||
bullet3 = "Add new digital signatures to secure your documents"
|
||
bullet4 = "Multiple files supported with easy navigation"
|
||
text = "This tool lets you check if your PDFs are digitally signed and add new digital signatures. Digital signatures prove who created or approved a document and show if it has been changed since signing."
|
||
title = "What can this tool do?"
|
||
|
||
[certSign.tooltip.signing]
|
||
bullet1 = "Supports PEM, PKCS12, JKS, and server certificate formats"
|
||
bullet2 = "Option to show or hide signature on the PDF"
|
||
bullet3 = "Add reason, location, and signer name"
|
||
bullet4 = "Choose which page to place visible signatures"
|
||
bullet5 = "Use server certificate for simple 'Sign with Stirling-PDF' option"
|
||
text = "To sign a PDF, you need a digital certificate (like PEM, PKCS12, or JKS). You can choose to make the signature visible on the document or keep it invisible for security only."
|
||
title = "Adding Signatures"
|
||
|
||
[certSign.tooltip.validation]
|
||
bullet1 = "Shows if signatures are valid or invalid"
|
||
bullet2 = "Displays signer information and signing date"
|
||
bullet3 = "Checks if the document was modified after signing"
|
||
bullet4 = "Can use custom certificates for verification"
|
||
text = "When you check signatures, the tool tells you if they're valid, who signed the document, when it was signed, and whether the document has been changed since signing."
|
||
title = "Checking Signatures"
|
||
|
||
[changeCreds]
|
||
changeUsername = "Update your username. You will be logged out after updating."
|
||
credsUpdated = "Account updated"
|
||
description = "Changes saved. Please log in again."
|
||
error = "Unable to update username. Please verify your password and try again."
|
||
header = "Update Your Account Details"
|
||
newUsername = "New Username"
|
||
oldPassword = "Current Password"
|
||
ssoManaged = "Your account is managed by your identity provider."
|
||
title = "Change Credentials"
|
||
|
||
[changeMetadata]
|
||
filenamePrefix = "metadata"
|
||
submit = "Change"
|
||
tags = "edit,modify,update,metadata,properties,document properties,author,title,subject,keywords,creator,producer,info,document info,file properties"
|
||
|
||
[changeMetadata.advanced]
|
||
title = "Advanced Options"
|
||
|
||
[changeMetadata.author]
|
||
label = "Author"
|
||
placeholder = "Document author"
|
||
|
||
[changeMetadata.creationDate]
|
||
label = "Creation Date"
|
||
placeholder = "Creation date"
|
||
|
||
[changeMetadata.creator]
|
||
label = "Creator"
|
||
placeholder = "Document creator"
|
||
|
||
[changeMetadata.customFields]
|
||
add = "Add Field"
|
||
description = "Add custom metadata fields to the document"
|
||
key = "Key"
|
||
keyPlaceholder = "Custom key"
|
||
remove = "Remove"
|
||
title = "Custom Metadata"
|
||
value = "Value"
|
||
valuePlaceholder = "Custom value"
|
||
|
||
[changeMetadata.dates]
|
||
title = "Date Fields"
|
||
|
||
[changeMetadata.deleteAll]
|
||
checkbox = "Delete all metadata"
|
||
label = "Remove Existing Metadata"
|
||
|
||
[changeMetadata.error]
|
||
failed = "An error occurred while changing the PDF metadata."
|
||
|
||
[changeMetadata.keywords]
|
||
label = "Keywords"
|
||
placeholder = "Document keywords"
|
||
|
||
[changeMetadata.modificationDate]
|
||
label = "Modification Date"
|
||
placeholder = "Modification date"
|
||
|
||
[changeMetadata.producer]
|
||
label = "Producer"
|
||
placeholder = "Document producer"
|
||
|
||
[changeMetadata.results]
|
||
title = "Updated PDFs"
|
||
|
||
[changeMetadata.standardFields]
|
||
title = "Standard Fields"
|
||
|
||
[changeMetadata.subject]
|
||
label = "Subject"
|
||
placeholder = "Document subject"
|
||
|
||
[changeMetadata.title]
|
||
label = "Title"
|
||
placeholder = "Document title"
|
||
|
||
[changeMetadata.tooltip.advanced]
|
||
title = "Advanced Options"
|
||
|
||
[changeMetadata.tooltip.advanced.trapped]
|
||
bullet1 = "True: Document has been trapped for printing"
|
||
bullet2 = "False: Document has not been trapped"
|
||
bullet3 = "Unknown: Trapped status is not specified"
|
||
description = "Indicates if document is prepared for high-quality printing."
|
||
title = "Trapped Status"
|
||
|
||
[changeMetadata.tooltip.customFields]
|
||
bullet1 = "Add any custom fields relevant to your document"
|
||
bullet2 = "Examples: Department, Project, Version, Status"
|
||
bullet3 = "Both key and value are required for each entry"
|
||
text = "Add your own custom key-value metadata pairs."
|
||
title = "Custom Metadata"
|
||
|
||
[changeMetadata.tooltip.dates]
|
||
bullet1 = "Creation Date: When original document was made"
|
||
bullet2 = "Modification Date: When last changed"
|
||
text = "When the document was created and modified."
|
||
title = "Date Fields"
|
||
|
||
[changeMetadata.tooltip.deleteAll]
|
||
text = "Complete metadata deletion to ensure privacy."
|
||
title = "Remove Existing Metadata"
|
||
|
||
[changeMetadata.tooltip.standardFields]
|
||
bullet1 = "Title: Document name or heading"
|
||
bullet2 = "Author: Person who created the document"
|
||
bullet3 = "Subject: Brief description of content"
|
||
bullet4 = "Keywords: Search terms for the document"
|
||
bullet5 = "Creator/Producer: Software used to create the PDF"
|
||
text = "Common PDF metadata fields that describe the document."
|
||
title = "Standard Fields"
|
||
|
||
[changeMetadata.trapped]
|
||
false = "False"
|
||
label = "Trapped Status"
|
||
true = "True"
|
||
unknown = "Unknown"
|
||
|
||
[changePermissions]
|
||
desc = "Change document restrictions and permissions."
|
||
submit = "Change Permissions"
|
||
tags = "permissions,restrictions,rights,access control,allow,deny,printing,copying,editing,modify permissions,security settings,user rights"
|
||
title = "Change Permissions"
|
||
|
||
[changePermissions.error]
|
||
failed = "An error occurred while changing PDF permissions."
|
||
|
||
[changePermissions.permissions.preventAssembly]
|
||
label = "Prevent assembly of document"
|
||
|
||
[changePermissions.permissions.preventExtractContent]
|
||
label = "Prevent content extraction"
|
||
|
||
[changePermissions.permissions.preventExtractForAccessibility]
|
||
label = "Prevent extraction for accessibility"
|
||
|
||
[changePermissions.permissions.preventFillInForm]
|
||
label = "Prevent filling in form"
|
||
|
||
[changePermissions.permissions.preventModify]
|
||
label = "Prevent modification"
|
||
|
||
[changePermissions.permissions.preventModifyAnnotations]
|
||
label = "Prevent annotation modification"
|
||
|
||
[changePermissions.permissions.preventPrinting]
|
||
label = "Prevent printing"
|
||
|
||
[changePermissions.permissions.preventPrintingFaithful]
|
||
label = "Prevent printing different formats"
|
||
|
||
[changePermissions.results]
|
||
title = "Modified PDFs"
|
||
|
||
[changePermissions.tooltip.description]
|
||
text = "Changes document permissions, allowing/disallowing access to different features in PDF readers."
|
||
|
||
[changePermissions.tooltip.header]
|
||
title = "Change Permissions"
|
||
|
||
[changePermissions.tooltip.warning]
|
||
text = "To make these permissions unchangeable, use the Add Password tool to set an owner password."
|
||
|
||
[chat.actions]
|
||
copy = "Copy message"
|
||
|
||
[chat.fab]
|
||
close = "Close chat"
|
||
open = "Open Stirling AI assistant"
|
||
|
||
[chat.header]
|
||
agentMenu = "Stirling agent options"
|
||
clearChat = "Clear chat"
|
||
|
||
[chat.input]
|
||
placeholder = "What do you want to do?"
|
||
send = "Send message"
|
||
disclaimer = "AI can make mistakes. Be sure to verify the output before sharing."
|
||
|
||
[chat.progress]
|
||
analyzing = "Analyzing your request..."
|
||
calling_engine = "AI is thinking..."
|
||
executing_tool_generic = "Running tool..."
|
||
executing_tool_generic_step = "Running tool (step {{step}} of {{total}})..."
|
||
executing_tool_single = "Running {{tool}}..."
|
||
executing_tool_step = "Running {{tool}} (step {{step}} of {{total}})..."
|
||
extracting_content = "Extracting content from your documents..."
|
||
processing = "Processing extracted content..."
|
||
ranForMinutes = "Ran for {{count}} minutes"
|
||
ranForMinutes_one = "Ran for 1 minute"
|
||
ranForMinutes_other = "Ran for {{count}} minutes"
|
||
ranForMinutesSeconds = "Ran for {{minutes}} min, {{seconds}} sec"
|
||
ranForSeconds = "Ran for {{count}} seconds"
|
||
ranForSeconds_one = "Ran for 1 second"
|
||
ranForSeconds_other = "Ran for {{count}} seconds"
|
||
thinking = "Thinking..."
|
||
whole_doc_compression_round = "Consolidating notes..."
|
||
whole_doc_read_done = "Finished reading the document..."
|
||
whole_doc_read_started = "Reading the document..."
|
||
whole_doc_slice_done = "Reading the document... ({{percent}}% complete)"
|
||
|
||
[chat.quickActions]
|
||
browseYourFiles = "Browse your files"
|
||
compressMany = "Compress these documents"
|
||
compressOne = "Compress this document"
|
||
convertMany = "Convert these documents to PDF"
|
||
convertOne = "Convert this document to PDF"
|
||
heading = "Get started"
|
||
mergeMany = "Merge these {{count}} documents into 1"
|
||
moreFiles = "+{{count}} more"
|
||
openFromComputer = "Open from computer"
|
||
removeFile = "Remove {{name}}"
|
||
splitOne = "Split this document"
|
||
|
||
[chat.responses]
|
||
cannot_continue = "Something went wrong and I can't continue."
|
||
cannot_do = "I'm unable to do that."
|
||
done = "Done."
|
||
need_clarification = "Could you clarify your request?"
|
||
not_found = "I couldn't find the requested information."
|
||
processing = "Processing ({{outcome}})..."
|
||
unsupported_capability = "Unsupported capability: {{capability}}"
|
||
usage_limit_reached = "You've reached your usage limit. Check your plan options to keep going."
|
||
|
||
[chat.toolsUsed]
|
||
summary = "Ran {{count}} tools"
|
||
unknownTool = "Unknown tool"
|
||
|
||
[cloudBadge]
|
||
tooltip = "This operation will use your cloud credits"
|
||
|
||
[color.eyeDropper]
|
||
tooltip = "Pick color from screen"
|
||
|
||
[colorPicker]
|
||
title = "Choose color"
|
||
|
||
[common]
|
||
available = "available"
|
||
back = "Back"
|
||
cancel = "Cancel"
|
||
close = "Close"
|
||
collapse = "Collapse"
|
||
continue = "Continue"
|
||
copied = "Copied!"
|
||
copy = "Copy"
|
||
done = "Done"
|
||
error = "Error"
|
||
expand = "Expand"
|
||
loading = "Loading..."
|
||
next = "Next"
|
||
preview = "Preview"
|
||
previous = "Previous"
|
||
refresh = "Refresh"
|
||
retry = "Retry"
|
||
save = "Save"
|
||
used = "used"
|
||
|
||
[compare]
|
||
clearSelected = "Clear selected"
|
||
clearSlot = "Remove file"
|
||
cta = "Compare"
|
||
loading = "Comparing..."
|
||
newLine = "new-line"
|
||
pages = "Pages"
|
||
tags = "differentiate,contrast,changes,analysis"
|
||
title = "Compare"
|
||
|
||
[compare.actions]
|
||
linkScroll = "Link scroll"
|
||
placeSideBySide = "Place side by side"
|
||
resetView = "Reset view"
|
||
stackVertically = "Stack vertically"
|
||
unlinkScroll = "Unlink scroll"
|
||
zoomIn = "Zoom in"
|
||
zoomOut = "Zoom out"
|
||
|
||
[compare.clear]
|
||
confirm = "Clear Selected"
|
||
confirmBody = "This will close the current comparison and take you back to Active Files."
|
||
confirmTitle = "Clear selected PDFs?"
|
||
|
||
[compare.dropdown]
|
||
additions = "Additions ({{count}})"
|
||
additionsLabel = "Additions"
|
||
deletions = "Deletions ({{count}})"
|
||
deletionsLabel = "Deletions"
|
||
noResults = "No changes found"
|
||
searchPlaceholder = "Search changes..."
|
||
|
||
[compare.earlyDissimilarity]
|
||
body = "We're seeing very few similarities so far. You can stop the comparison if these aren't related documents."
|
||
stopButton = "Stop comparison"
|
||
title = "These PDFs look highly different"
|
||
|
||
[compare.edited]
|
||
label = "Edited PDF"
|
||
placeholder = "Select the edited PDF"
|
||
selectBaseFirst = "Select original PDF first"
|
||
|
||
[compare.error]
|
||
filesMissing = "Unable to locate the selected files. Please re-select them."
|
||
generic = "Unable to compare these files."
|
||
selectRequired = "Select a original and edited document."
|
||
title = "Comparison failed"
|
||
|
||
[compare.large.file]
|
||
message = "One or Both of the provided documents are too large to process"
|
||
|
||
[compare.longJob]
|
||
body = "These PDFs together exceed 2,000 pages. Processing can take several minutes."
|
||
title = "Large comparison in progress"
|
||
|
||
[compare.no.text]
|
||
message = "One or both of the selected PDFs have no text content. Please choose PDFs with text for comparison."
|
||
|
||
[compare.original]
|
||
label = "Original PDF"
|
||
placeholder = "Select the original PDF"
|
||
|
||
[compare.pixel]
|
||
base = "Original"
|
||
changed = "changed"
|
||
comparison = "Edited"
|
||
diff = "Differences"
|
||
diffOnly = "Diff only"
|
||
missingInBase = "Missing in original"
|
||
missingInComparison = "Missing in edited"
|
||
overall = "overall"
|
||
overlay = "Overlay"
|
||
pageLabel = "Page"
|
||
pagesChanged = "pages changed"
|
||
sideBySide = "Side-by-side"
|
||
sizeMismatch = "Size mismatch"
|
||
summaryTitle = "Pixel comparison"
|
||
|
||
[compare.pixel.errors]
|
||
canvasContextUnavailable = "Unable to acquire 2D canvas context for pixel comparison."
|
||
|
||
[compare.pixel.warnings]
|
||
noPages = "One or both documents have no pages."
|
||
pageCountMismatch = "Page count mismatch: original has {{base}} page(s), edited has {{comparison}}. Extra pages are shown one-sided and marked as fully removed/added."
|
||
|
||
[compare.rendering]
|
||
complete = "Page rendering complete"
|
||
inProgress = "At least one of these PDFs are very large, scrolling won't be smooth until the rendering is complete"
|
||
pageNotReadyBody = "Some pages are still rendering. Navigation will snap once they are ready."
|
||
pageNotReadyTitle = "Page not rendered yet"
|
||
pagesRendered = "pages rendered"
|
||
rendering = "rendering"
|
||
|
||
[compare.review]
|
||
title = "Comparison Result"
|
||
|
||
[compare.selection]
|
||
originalEditedTitle = "Select Original and Edited PDFs"
|
||
|
||
[compare.status]
|
||
complete = "Comparison ready"
|
||
error = "Comparison failed"
|
||
extracting = "Extracting text..."
|
||
processing = "Analyzing differences..."
|
||
|
||
[compare.summary]
|
||
baseHeading = "Original document"
|
||
comparisonHeading = "Edited document"
|
||
pageLabel = "Page"
|
||
|
||
[compare.swap]
|
||
confirm = "Swap and Re-run"
|
||
confirmBody = "This will rerun the tool. Are you sure you want to swap the order of Original and Edited?"
|
||
confirmTitle = "Re-run comparison?"
|
||
label = "Swap"
|
||
|
||
[compare.toasts]
|
||
unlinkedBody = "Tip: Arrow Up/Down scroll both panes; panning only moves the active pane."
|
||
unlinkedTitle = "Independent scroll & pan enabled"
|
||
|
||
[compare.too.dissimilar]
|
||
message = "These documents appear highly dissimilar. Comparison was stopped to save time."
|
||
|
||
[compress]
|
||
desc = "Compress PDFs to reduce their file size."
|
||
submit = "Compress"
|
||
tags = "shrink,reduce,optimize,compress,smaller,downsize,file size,reduce size,minimize,make smaller,decrease size,optimize size"
|
||
title = "Compress"
|
||
|
||
[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"
|
||
|
||
[compress.error]
|
||
failed = "An error occurred while compressing the PDF."
|
||
|
||
[compress.grayscale]
|
||
label = "Apply Grayscale for Compression"
|
||
|
||
[compress.linearize]
|
||
label = "Linearize PDF for fast web viewing"
|
||
|
||
[compress.lineArt]
|
||
description = "Uses ImageMagick to reduce pages to high-contrast black and white for maximum size reduction."
|
||
detailLevel = "Detail level"
|
||
edgeEmphasis = "Edge emphasis"
|
||
edgeHigh = "Strong"
|
||
edgeLow = "Gentle"
|
||
edgeMedium = "Balanced"
|
||
label = "Convert images to line art"
|
||
unavailable = "ImageMagick is not installed or enabled on this server"
|
||
|
||
[compress.method]
|
||
filesize = "File Size"
|
||
quality = "Quality"
|
||
title = "Compression Method"
|
||
|
||
[compress.settings]
|
||
desiredSize = "Desired File Size"
|
||
desiredSizePlaceholder = "Enter size"
|
||
|
||
[compress.tooltip.description]
|
||
text = "Compression is an easy way to reduce your file size. Pick File Size to enter a target size and have us adjust quality for you. Pick Quality to set compression strength manually."
|
||
title = "Description"
|
||
|
||
[compress.tooltip.grayscale]
|
||
text = "Select this option to convert all images to black and white, which can significantly reduce file size especially for scanned PDFs or image-heavy documents."
|
||
title = "Grayscale"
|
||
|
||
[compress.tooltip.header]
|
||
title = "Compress Settings Overview"
|
||
|
||
[compress.tooltip.lineArt]
|
||
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 = "Line Art"
|
||
|
||
[compress.tooltip.qualityAdjustment]
|
||
bullet1 = "Lower values preserve quality"
|
||
bullet2 = "Higher values reduce file size"
|
||
text = "Drag the slider to adjust the compression strength. Lower values (1-3) preserve quality but result in larger files. Higher values (7-9) shrink the file more but reduce image clarity."
|
||
title = "Quality Adjustment"
|
||
|
||
[compressPdfs]
|
||
tags = "squish,small,tiny"
|
||
|
||
[config]
|
||
plan = "Plan"
|
||
team = "Team"
|
||
|
||
[config.account.overview]
|
||
confirmDelete = "Delete My Account"
|
||
deleteAccount = "Delete Account"
|
||
deleteAccountTitle = "Delete Account"
|
||
deleteFailed = "Failed to delete account."
|
||
deleteFailedTitle = "Unable to delete account"
|
||
deleteWarning = "This action is permanent and cannot be undone. All your data will be deleted."
|
||
enterEmailConfirm = "To confirm deletion, please type your email address ({{email}}) below:"
|
||
guestDescription = "You are signed in as a guest. Consider upgrading your account above."
|
||
label = "Overview"
|
||
manageAccountPreferences = "Manage your account preferences"
|
||
signedInAs = "Signed in as"
|
||
title = "Account Settings"
|
||
|
||
[config.account.profilePicture]
|
||
description = "Upload an image to personalize your account."
|
||
help = "PNG, JPG, or WebP up to 2MB."
|
||
remove = "Remove"
|
||
sizeError = "Please select an image smaller than 2MB."
|
||
switchedToCustom = "Switched to custom picture. You can now upload your own."
|
||
title = "Profile picture"
|
||
upload = "Upload"
|
||
useCustom = "Use custom picture"
|
||
usingProvider = "Using {{provider}} profile picture"
|
||
|
||
[config.account.profilePicture.cropper]
|
||
cropError = "Failed to crop image. Please try again."
|
||
invalidImage = "Invalid image file. Please select a valid PNG, JPG, or WebP file."
|
||
processing = "Processing crop..."
|
||
save = "Save Cropped Image"
|
||
sizeErrorAfterCrop = "Cropped image is too large. Please zoom out or crop a smaller area."
|
||
title = "Crop Profile Picture"
|
||
zoom = "Zoom"
|
||
|
||
[config.account.security]
|
||
changePassword = "Change password"
|
||
description = "Manage your password and security settings."
|
||
title = "Passwords & Security"
|
||
update = "Update password"
|
||
|
||
[config.account.upgrade]
|
||
description = "Link your account to preserve your history and access more features!"
|
||
email = "Email"
|
||
emailPassword = "or enter your email & password"
|
||
emailPlaceholder = "Enter your email"
|
||
linkWith = "Link with"
|
||
password = "Password (optional)"
|
||
passwordNote = "Leave empty to use email verification only"
|
||
passwordPlaceholder = "Set a password"
|
||
socialLogin = "Upgrade with Social Account"
|
||
title = "Upgrade Guest Account"
|
||
upgradeButton = "Upgrade Account"
|
||
|
||
[config.apiKeys]
|
||
chartAriaLabel = "Credits usage: included {{includedUsed}} of {{includedTotal}}, purchased {{purchasedUsed}} of {{purchasedTotal}}"
|
||
copyKeyAriaLabel = "Copy API key"
|
||
creditsRemaining = "Credits Remaining"
|
||
description = "Your API key for accessing Stirling's suite of PDF tools. Copy it to your project or refresh to generate a new one."
|
||
docsDescription = "Learn more about integrating with Stirling PDF:"
|
||
docsLink = "API Documentation"
|
||
docsTitle = "API Documentation"
|
||
generateError = "We couldn't generate your API key."
|
||
goToAccount = "Go to Account"
|
||
guestInfo = "Guest users do not receive API keys. Create an account to get an API key you can use in your applications."
|
||
includedCredits = "Included credits"
|
||
intro = "Use your API key to programmatically access Stirling PDF's processing capabilities."
|
||
label = "API Key"
|
||
lastApiUse = "Last API Use"
|
||
nextReset = "Next Reset"
|
||
overlayMessage = "Generate a key to see credits and available credits"
|
||
publicKeyAriaLabel = "Public API key"
|
||
purchasedCredits = "Purchased credits"
|
||
refreshAriaLabel = "Refresh API key"
|
||
schemaLink = "API Schema Reference"
|
||
usage = "Include this key in the X-API-KEY header with all API requests."
|
||
|
||
[config.apiKeys.alert]
|
||
apiKeyErrorTitle = "API Key Error"
|
||
apiKeyRefreshed = "API Key Refreshed"
|
||
apiKeyRefreshedBody = "Your API key has been successfully refreshed."
|
||
failedToCreateApiKey = "Failed to create API key."
|
||
failedToFetchApiKey = "Failed to fetch API key."
|
||
failedToRefreshApiKey = "Failed to refresh API key."
|
||
failedToRetrieveApiKey = "Failed to retrieve API key from response."
|
||
|
||
[config.apiKeys.refreshModal]
|
||
confirmCta = "Refresh Keys"
|
||
confirmPrompt = "Are you sure you want to continue?"
|
||
impact = "Any applications or services currently using these keys will stop working until you update them with the new keys."
|
||
title = "Refresh API Keys"
|
||
warning = "⚠️ Warning: This action will generate new API keys and make your previous keys invalid."
|
||
|
||
[config.mcp]
|
||
description = "Model Context Protocol (MCP) lets AI assistants like Claude use your Stirling PDF tools directly. Connect a client once and your assistant can convert, edit, secure and process documents on your behalf."
|
||
guestInfo = "Guest users can't connect MCP clients. Create an account to use the MCP server and let your AI assistant run Stirling PDF tools on your behalf."
|
||
navLabel = "MCP Server"
|
||
tip = "Every action your assistant runs is performed as your account and counts toward your usage, just like using Stirling PDF directly."
|
||
title = "MCP Server"
|
||
viewApiKeys = "View API keys"
|
||
|
||
[config.mcp.copy]
|
||
configLabel = "Config"
|
||
copied = "Copied"
|
||
copy = "Copy"
|
||
endpointLabel = "Endpoint URL"
|
||
tooltip = "Copy {{label}}"
|
||
tooltipCopied = "{{label}} copied"
|
||
|
||
[config.mcp.endpoint]
|
||
label = "Your MCP endpoint"
|
||
|
||
[config.mcp.setup]
|
||
addTo = "Add to"
|
||
hint = "Pick your client, paste the snippet into the file shown, then restart it. You'll sign in with your Stirling account on first use - no keys to copy."
|
||
title = "Connect your AI assistant"
|
||
|
||
[config.overview]
|
||
description = "Current application settings and configuration details."
|
||
error = "Error"
|
||
loading = "Loading configuration..."
|
||
title = "Application Configuration"
|
||
warning = "Configuration Warning"
|
||
|
||
[config.overview.sections]
|
||
basic = "Basic Configuration"
|
||
integration = "Integration Configuration"
|
||
security = "Security Configuration"
|
||
system = "System Configuration"
|
||
|
||
[convert]
|
||
autoRotate = "Auto Rotate"
|
||
autoRotateDescription = "Automatically rotate images to better fit the PDF page"
|
||
blackwhite = "Black & White"
|
||
cbrDpi = "DPI for image rendering"
|
||
cbrOptions = "CBR Options"
|
||
cbrOutputOptions = "PDF to CBR Options"
|
||
cbrToPdf = "CBR → PDF"
|
||
cbzDpi = "DPI for image rendering"
|
||
cbzOptions = "CBZ to PDF Options"
|
||
cbzOutputOptions = "PDF to CBZ Options"
|
||
cbzToPdf = "CBZ → PDF"
|
||
color = "Color"
|
||
colorType = "Color Type"
|
||
combineImages = "Combine Images"
|
||
combineImagesDescription = "Combine all images into one PDF, or create separate PDFs for each image"
|
||
combineSvgs = "Combine SVGs into single PDF"
|
||
combineSvgsDescription = "Combine all SVG files into one PDF with multiple pages, or create separate PDFs for each SVG"
|
||
conversionResults = "Conversion Results"
|
||
convertFiles = "Convert Files"
|
||
convertFrom = "Convert from"
|
||
converting = "Converting..."
|
||
convertTo = "Convert to"
|
||
desc = "Convert files between different formats"
|
||
downloadHtml = "Download HTML intermediate file instead of PDF"
|
||
dpi = "DPI"
|
||
ebookToPdf = "eBook → PDF"
|
||
emailOptions = "Email to PDF Options"
|
||
emlToPdf = "Email → PDF"
|
||
errorConversion = "An error occurred while converting the file."
|
||
fileToPdf = "Office/Document → PDF"
|
||
fillPage = "Fill Page"
|
||
fitDocumentToPage = "Fit Document to Page"
|
||
fitOption = "Fit Option"
|
||
grayscale = "Grayscale"
|
||
imageOptions = "Image Options"
|
||
includeAllRecipients = "Include CC and BCC recipients in header"
|
||
includeAttachments = "Include email attachments"
|
||
maintainAspectRatio = "Maintain Aspect Ratio"
|
||
maxAttachmentSize = "Maximum attachment size (MB)"
|
||
multiple = "Multiple"
|
||
optimizeForEbook = "Optimize PDF for ebook readers (uses Ghostscript)"
|
||
output = "Output"
|
||
outputFormat = "Output Format"
|
||
pdfaDigitalSignatureWarning = "The PDF contains a digital signature. This will be removed in the next step."
|
||
pdfaNote = "PDF/A-1b is more compatible, PDF/A-2b supports more features, PDF/A-3b supports embedded files."
|
||
pdfaOptions = "PDF/A Options"
|
||
pdfOptions = "PDF Options"
|
||
pdfToCbr = "PDF → CBR"
|
||
pdfToCbz = "PDF → CBZ"
|
||
pdfToEpub = "PDF → EPUB"
|
||
selectSourceFormatFirst = "Choose a source format first"
|
||
settings = "Settings"
|
||
single = "Single"
|
||
sourceFormatPlaceholder = "Source format"
|
||
strictMode = "Strict Mode"
|
||
strictModeDesc = "Error if conversion is not perfect (uses VeraPDF verification)"
|
||
svgPdfOptions = "SVG to PDF Options"
|
||
svgToPdf = "SVG → PDF"
|
||
svgVectorNote = "SVG files are rendered as vector graphics for crisp output at any resolution. Dimensions from the SVG determine the PDF page size."
|
||
tags = "transform,change,convert,PDF to Word,PDF to Excel,PDF to image,Word to PDF,Excel to PDF,PowerPoint to PDF,HTML to PDF,export,import,file conversion,format change,save as"
|
||
targetFormatPlaceholder = "Target format"
|
||
title = "Convert"
|
||
webOptions = "Web to PDF Options"
|
||
zoomLevel = "Zoom Level"
|
||
|
||
[convert.ebookOptions]
|
||
embedAllFonts = "Embed all fonts"
|
||
embedAllFontsDesc = "Embed all fonts from the eBook into the generated PDF"
|
||
includePageNumbers = "Include page numbers"
|
||
includePageNumbersDesc = "Add page numbers to the generated PDF"
|
||
includeTableOfContents = "Include table of contents"
|
||
includeTableOfContentsDesc = "Add a generated table of contents to the resulting PDF"
|
||
optimizeForEbookPdf = "Optimize for ebook readers"
|
||
optimizeForEbookPdfDesc = "Optimize the PDF for eBook reading (smaller file size, better rendering on eInk devices)"
|
||
|
||
[convert.epubOptions]
|
||
detectChapters = "Detect chapters"
|
||
detectChaptersDesc = "Detect headings that look like chapters and insert EPUB page breaks"
|
||
kindleEink = "Kindle e-Ink (text optimized)"
|
||
outputFormat = "Output format"
|
||
outputFormatDesc = "Choose the output format for the ebook"
|
||
tabletPhone = "Tablet/Phone (with images)"
|
||
targetDevice = "Target device"
|
||
targetDeviceDesc = "Choose an output profile optimized for the reader device"
|
||
|
||
[cookieBanner.popUp]
|
||
acceptAllBtn = "Okay"
|
||
acceptNecessaryBtn = "No Thanks"
|
||
showPreferencesBtn = "Manage preferences"
|
||
title = "How we use Cookies"
|
||
|
||
[cookieBanner.popUp.description]
|
||
1 = "We use cookies and other technologies to make Stirling PDF work better for you-helping us improve our tools and keep building features you'll love."
|
||
2 = "If you'd rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly."
|
||
|
||
[cookieBanner.preferencesModal]
|
||
acceptAllBtn = "Accept all"
|
||
acceptNecessaryBtn = "Reject all"
|
||
closeIconLabel = "Close modal"
|
||
savePreferencesBtn = "Save preferences"
|
||
serviceCounterLabel = "Service|Services"
|
||
subtitle = "Cookie Usage"
|
||
title = "Consent Preferences Center"
|
||
|
||
[cookieBanner.preferencesModal.analytics]
|
||
description = "These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured-Stirling PDF cannot and will never track the content of the documents you work with."
|
||
title = "Analytics"
|
||
|
||
[cookieBanner.preferencesModal.description]
|
||
1 = "Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users."
|
||
2 = "Stirling PDF cannot-and will never-track or access the content of the documents you use."
|
||
3 = "Your privacy and trust are at the core of what we do."
|
||
|
||
[cookieBanner.preferencesModal.necessary]
|
||
description = "These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms-which is why they can't be turned off."
|
||
|
||
[cookieBanner.preferencesModal.necessary.title]
|
||
1 = "Strictly Necessary Cookies"
|
||
2 = "Always Enabled"
|
||
|
||
[cookieBanner.services]
|
||
posthog = "PostHog Analytics"
|
||
scarf = "Scarf Pixel"
|
||
|
||
[credits]
|
||
|
||
[credits.insufficient]
|
||
|
||
[credits.modal]
|
||
advancedMonitoring = "Advanced monitoring"
|
||
allInOneWorkspace = "All-in-one PDF workspace (viewer, tools & agent)"
|
||
apiSandbox = "API sandbox"
|
||
dedicatedSupportSlas = "Dedicated support & SLAs"
|
||
fasterThroughput = "10x faster throughput"
|
||
fullyPrivateFiles = "Fully private files"
|
||
largeFileProcessing = "Large file processing"
|
||
orgWideAccess = "Org-wide access controls"
|
||
premiumAiModels = "Premium AI models"
|
||
prioritySupport = "Priority support"
|
||
privateDocCloud = "Private Document Cloud"
|
||
ragFineTuning = "RAG + fine-tuning"
|
||
secureApiAccess = "Secure API access"
|
||
standardThroughput = "Standard throughput"
|
||
unlimitedApiAccess = "Unlimited API access"
|
||
unlimitedSeats = "Unlimited seats"
|
||
|
||
[crop]
|
||
autoCrop = "Auto-crop whitespace"
|
||
noFileSelected = "Add a PDF file to begin cropping"
|
||
reset = "Reset to full PDF"
|
||
submit = "Apply Crop"
|
||
title = "Crop"
|
||
|
||
[crop.automation]
|
||
info = "Enter crop coordinates in PDF points. Origin (0,0) is at bottom-left. These values will be applied to all PDFs processed in this automation."
|
||
reference = "Reference: A4 page is 595.28 × 841.89 points (210mm × 297mm). 1 inch = 72 points."
|
||
|
||
[crop.coordinates]
|
||
title = "Position and Size"
|
||
|
||
[crop.coordinates.height]
|
||
desc = "Crop height (points)"
|
||
label = "Height"
|
||
|
||
[crop.coordinates.width]
|
||
desc = "Crop width (points)"
|
||
label = "Width"
|
||
|
||
[crop.coordinates.x]
|
||
desc = "Left edge (points)"
|
||
label = "X Position"
|
||
|
||
[crop.coordinates.y]
|
||
desc = "Bottom edge (points)"
|
||
label = "Y Position"
|
||
|
||
[crop.error]
|
||
failed = "Failed to crop PDF"
|
||
invalidArea = "Crop area extends beyond PDF boundaries"
|
||
|
||
[crop.preview]
|
||
title = "Crop Area Selection"
|
||
|
||
[crop.results]
|
||
title = "Crop Results"
|
||
|
||
[crop.steps]
|
||
selectArea = "Select Crop Area"
|
||
|
||
[crop.tooltip]
|
||
description = "Select the area to crop from your PDF by dragging and resizing the blue overlay on the thumbnail."
|
||
drag = "Drag the overlay to move the crop area"
|
||
precision = "Use coordinate inputs for precise positioning"
|
||
resize = "Drag the corner and edge handles to resize"
|
||
title = "How to Crop PDFs"
|
||
|
||
[database]
|
||
backupCreated = "Database backup successful"
|
||
fileName = "File Name"
|
||
title = "Database Import/Export"
|
||
|
||
[defaultApp]
|
||
setDefault = "Set Default"
|
||
title = "Set as Default PDF App"
|
||
|
||
[defaultApp.error]
|
||
message = "Failed to set default PDF handler"
|
||
title = "Error"
|
||
|
||
[defaultApp.prompt]
|
||
message = "Make Stirling PDF your default application for opening PDF files."
|
||
|
||
[defaultApp.settingsOpened]
|
||
message = "In Windows Settings, search for 'PDF' and select Stirling PDF as your default app"
|
||
title = "Settings Opened"
|
||
|
||
[defaultApp.success]
|
||
message = "Stirling PDF is now your default PDF editor"
|
||
title = "Default App Set"
|
||
|
||
[desktopUpdate]
|
||
downloading = "Downloading update..."
|
||
installing = "Installing update..."
|
||
installingWarning = "The app will close automatically to complete the installation."
|
||
installNow = "Install Now"
|
||
readyToRestart = "Update Ready"
|
||
restartMessage = "The update has been installed. Restart the app to finish."
|
||
restartNow = "Restart Now"
|
||
updateFailed = "Update Failed"
|
||
updateFailedMessage = "Failed to download or install the update."
|
||
|
||
[desktopUpdate.blocked]
|
||
docsLink = "View installation documentation"
|
||
message = "Stirling-PDF does not have permission to update itself on this machine."
|
||
title = "Administrator permissions required"
|
||
|
||
[devAirgapped]
|
||
tags = "air-gapped,offline,isolated,no internet,disconnected,secure,network isolation,standalone"
|
||
|
||
[devApi]
|
||
tags = "API,development,documentation,developer,REST,integration,endpoints,programmatic,automation,scripting"
|
||
|
||
[devFolderScanning]
|
||
tags = "automation,folder,scanning,watch folder,hot folder,automatic processing,batch,monitor folder,auto process,folder monitoring"
|
||
|
||
[devSsoGuide]
|
||
tags = "SSO,single sign-on,authentication,SAML,OAuth,OIDC,login,enterprise,identity provider,IdP"
|
||
|
||
[dropdownList]
|
||
searchPlaceholder = "Search..."
|
||
|
||
[editableSecretField]
|
||
edit = "Edit"
|
||
editSecretValue = "Edit secret value"
|
||
|
||
[editTableOfContents]
|
||
submit = "Apply table of contents"
|
||
tags = "bookmarks,contents,edit,table of contents,TOC,outline,navigation,chapters,sections,add bookmarks,edit bookmarks,PDF outline"
|
||
|
||
[editTableOfContents.actions]
|
||
clipboardUnavailable = "Clipboard access is not available in this browser."
|
||
export = "Export bookmarks"
|
||
exportClipboard = "Copy JSON to clipboard"
|
||
exportJson = "Download JSON"
|
||
importClipboard = "Paste JSON from clipboard"
|
||
importJson = "Import JSON"
|
||
loadFromPdf = "Load from selected PDF"
|
||
noFile = "Select a PDF to extract existing bookmarks."
|
||
selectedFile = "Loaded from {{file}}"
|
||
source = "Load bookmarks"
|
||
|
||
[editTableOfContents.editor]
|
||
addTopLevel = "Add top-level bookmark"
|
||
childBadge = "Child"
|
||
confirmRemove = "Remove this bookmark and all of its children?"
|
||
defaultChildTitle = "Child bookmark"
|
||
defaultSiblingTitle = "New bookmark"
|
||
defaultTitle = "New bookmark"
|
||
description = "Add, nest, and reorder bookmarks to craft your PDF outline."
|
||
heading = "Bookmark editor"
|
||
pagePreview = "Page {{page}}"
|
||
untitled = "Untitled bookmark"
|
||
|
||
[editTableOfContents.editor.actions]
|
||
addChild = "Add child bookmark"
|
||
addSibling = "Add sibling bookmark"
|
||
remove = "Remove bookmark"
|
||
toggle = "Toggle children"
|
||
|
||
[editTableOfContents.editor.empty]
|
||
action = "Add first bookmark"
|
||
description = "Import existing bookmarks or start by adding your first entry."
|
||
title = "No bookmarks yet"
|
||
|
||
[editTableOfContents.editor.field]
|
||
page = "Target page number"
|
||
title = "Bookmark title"
|
||
|
||
[editTableOfContents.error]
|
||
failed = "Failed to update the table of contents"
|
||
|
||
[editTableOfContents.info]
|
||
line1 = "Each bookmark needs a descriptive title and the page it should open."
|
||
line2 = "Use child bookmarks to build a hierarchy for chapters, sections, or subsections."
|
||
line3 = "Import bookmarks from the selected PDF or from a JSON file to save time."
|
||
|
||
[editTableOfContents.messages]
|
||
copied = "Copied to clipboard"
|
||
copiedBody = "Bookmark JSON copied successfully."
|
||
copyFailed = "Copy failed"
|
||
exported = "JSON download ready"
|
||
imported = "Bookmarks imported"
|
||
importedBody = "Your JSON outline replaced the current editor contents."
|
||
importedClipboard = "Clipboard data replaced the current bookmark list."
|
||
invalidJson = "Invalid JSON structure"
|
||
invalidJsonBody = "Please provide a valid bookmark JSON file and try again."
|
||
loadedBody = "Existing bookmarks from the PDF were loaded into the editor."
|
||
loadedTitle = "Bookmarks extracted"
|
||
loadFailed = "Unable to extract bookmarks from the selected PDF."
|
||
noBookmarks = "No bookmarks were found in the selected PDF."
|
||
|
||
[editTableOfContents.results]
|
||
subtitle = "Download the processed file or undo the operation below."
|
||
title = "Updated PDF with bookmarks"
|
||
|
||
[editTableOfContents.settings]
|
||
replaceExisting = "Replace existing bookmarks (uncheck to append)"
|
||
replaceExistingHint = "When disabled, the new outline is appended after the current bookmarks."
|
||
title = "Bookmarks & outline"
|
||
|
||
[editTableOfContents.workbench]
|
||
changeFile = "Change PDF"
|
||
filePrompt = "Select a PDF from your library or upload a new one to begin."
|
||
selectFile = "Select PDF"
|
||
subtitle = "Import bookmarks, build hierarchies, and apply the outline without cramped side panels."
|
||
|
||
[editTableOfContents.workbench.empty]
|
||
description = "Select the Edit Table of Contents tool to load its workspace."
|
||
title = "Open the tool to start editing"
|
||
|
||
[emptyFilesState]
|
||
upload = "Upload"
|
||
|
||
[encryptedPdfUnlock]
|
||
description = "This PDF is password protected. Enter the password so you can continue working with it."
|
||
emptyResponse = "Password removal did not produce a file."
|
||
incorrectPassword = "Incorrect password"
|
||
missingFile = "The selected file is no longer available."
|
||
required = "Enter the password to continue."
|
||
skip = "Skip for now"
|
||
successBody = "Password removed successfully."
|
||
successBodyWithName = "Password removed from {{fileName}}"
|
||
successTitle = "Password removed"
|
||
title = "Remove password to continue"
|
||
unlock = "Unlock & Continue"
|
||
unlockAll = "Use for all ({{count}})"
|
||
unlockAllPartialFail = "Wrong password for: {{names}}"
|
||
unlockAllSuccess = "Unlocked {{count}} file(s)."
|
||
unlockPrompt = "Unlock PDF to continue"
|
||
viewerLocked = "This PDF is password-protected"
|
||
viewerUnlock = "Unlock"
|
||
|
||
[encryptedPdfUnlock.password]
|
||
label = "PDF password"
|
||
placeholder = "Enter the PDF password"
|
||
|
||
[endpointStatistics]
|
||
title = "Endpoint Statistics"
|
||
|
||
[error]
|
||
_value = "Error"
|
||
dismissAllErrors = "Dismiss All Errors"
|
||
generic = "An error occurred"
|
||
|
||
[extractImages]
|
||
allowDuplicates = "Save duplicate images"
|
||
selectText = "Select image format to convert extracted images to"
|
||
submit = "Extract"
|
||
tags = "picture,photo,save,archive,zip,capture,grab"
|
||
title = "Extract Images"
|
||
|
||
[extractImages.error]
|
||
failed = "An error occurred while extracting images from the PDF."
|
||
|
||
[extractImages.settings]
|
||
title = "Settings"
|
||
|
||
[extractPage]
|
||
tags = "extract"
|
||
|
||
[extractPages]
|
||
submit = "Extract Pages"
|
||
tags = "pull,select,copy,extract,extract pages,get pages,pull out,save pages,export pages,copy pages,select pages,specific pages"
|
||
title = "Extract Pages"
|
||
|
||
[extractPages.error]
|
||
failed = "Failed to extract pages"
|
||
|
||
[extractPages.pageNumbers]
|
||
label = "Pages to Extract"
|
||
placeholder = "e.g., 1,3,5-8 or odd & 1-10"
|
||
|
||
[extractPages.results]
|
||
title = "Pages Extracted"
|
||
|
||
[extractPages.settings]
|
||
title = "Settings"
|
||
|
||
[extractPages.tooltip]
|
||
description = "Extracts the selected pages into a new PDF, preserving order."
|
||
|
||
[fileCard]
|
||
openInFileEditor = "Open in File Editor"
|
||
viewInViewer = "View in Viewer"
|
||
|
||
[fileDropdownMenu]
|
||
closeFile = "Close file"
|
||
|
||
[fileEditor]
|
||
addFiles = "Add Files"
|
||
|
||
[fileManager]
|
||
active = "Active"
|
||
addToUpload = "Add to Upload"
|
||
changesNotUploaded = "Changes not uploaded"
|
||
clearAll = "Clear All"
|
||
clearSelection = "Clear"
|
||
closeAllFiles = "Close all files"
|
||
closeFile = "Close File"
|
||
cloudFile = "Cloud file"
|
||
copyCreated = "Copy saved to this device."
|
||
copyFailed = "Could not create a copy."
|
||
delete = "Delete"
|
||
deleteAll = "Delete All"
|
||
deleteSelected = "Delete Files"
|
||
deselectAll = "Uncheck All"
|
||
details = "File Details"
|
||
download = "Download"
|
||
downloadSelected = "Download Files"
|
||
dropFilesHere = "Drop files here"
|
||
fileFormat = "Format"
|
||
fileHistory = "File History"
|
||
fileName = "Name"
|
||
fileSize = "Size"
|
||
filesSelected = "files"
|
||
filesStored = "files stored"
|
||
fileVersion = "Version"
|
||
filterAll = "All"
|
||
filterLocal = "Local"
|
||
filterSharedByMe = "Shared by me"
|
||
filterSharedWithMe = "Shared with me"
|
||
googleDrive = "Google Drive"
|
||
googleDriveNotAvailable = "Google Drive integration not available"
|
||
googleDriveShort = "Drive"
|
||
hideHistory = "Hide History"
|
||
lastModified = "Last Modified"
|
||
lastSynced = "Last synced"
|
||
leaveShare = "Remove from my list"
|
||
leaveShareFailed = "Could not remove the shared file."
|
||
leaveShareSuccess = "Removed from your shared list."
|
||
loadingFiles = "Loading files..."
|
||
localOnly = "Local only"
|
||
makeCopy = "Make a copy"
|
||
mobileShort = "Mobile"
|
||
mobileUpload = "Mobile Upload"
|
||
mobileUploadNotAvailable = "Mobile upload not enabled"
|
||
myFiles = "My Files"
|
||
noFiles = "No files available"
|
||
noFilesFound = "No files found matching your search"
|
||
noRecentFiles = "No recent files found"
|
||
openFile = "Open File"
|
||
openFiles = "Open Files"
|
||
openInFileEditor = "Open in File Editor"
|
||
openInPageEditor = "Open in Page Editor"
|
||
owner = "Owner"
|
||
ownerUnknown = "Unknown"
|
||
recent = "Recent"
|
||
removeBoth = "Remove from both"
|
||
removeFilePrompt = "This file is saved on this device and on your server. Where would you like to remove it from?"
|
||
removeFileTitle = "Remove file"
|
||
removeLocalOnly = "This device only"
|
||
removeServerFailed = "Could not remove the file from the server."
|
||
removeServerOnly = "Server only"
|
||
removeServerOnlyPrompt = "This file is stored only on your server. Would you like to remove it from the server?"
|
||
removeServerSuccess = "Removed from server."
|
||
removeSharedPrompt = "This file is shared with you. You can remove it from this device or your shared list."
|
||
removeSharedServerOnlyBlockedPrompt = "This file is shared with you and stored only on the server."
|
||
removeSharedServerOnlyPrompt = "This file is shared with you and stored only on the server. Remove it from your list?"
|
||
restore = "Restore"
|
||
saveSelected = "Save Files"
|
||
searchFiles = "Search files..."
|
||
selectAll = "Check All"
|
||
selectedCount = "{{count}} checked"
|
||
share = "Share"
|
||
shared = "Shared"
|
||
sharedByYou = "Shared by you"
|
||
sharedEditNoticeBody = "You do not have edit rights to the server version of this file. Any edits you make will be saved as a local copy."
|
||
sharedEditNoticeConfirm = "Got it"
|
||
sharedEditNoticeTitle = "Read-only server copy"
|
||
sharedWithYou = "Shared with you"
|
||
shareSelected = "Share Files"
|
||
sharing = "Sharing"
|
||
showAll = "Show All"
|
||
showHistory = "Show History"
|
||
sortByDate = "Sort by Date"
|
||
sortByName = "Sort by Name"
|
||
sortBySize = "Sort by Size"
|
||
storage = "Storage"
|
||
storageState = "Storage"
|
||
synced = "Synced"
|
||
title = "Upload PDF Files"
|
||
toolChain = "Tools Applied"
|
||
unsupported = "Unsupported"
|
||
unzip = "Unzip"
|
||
updateOnServer = "Update on Server"
|
||
uploadSelected = "Upload Files"
|
||
uploadToServer = "Upload to Server"
|
||
|
||
[files]
|
||
addFiles = "Add files"
|
||
created = "Created"
|
||
selectFromWorkbench = "Add files to the workbench or "
|
||
selectMultipleFromWorkbench = "Add at least {{count}} files to the workbench or "
|
||
size = "File Size"
|
||
title = "Files"
|
||
upload = "Upload"
|
||
uploadFiles = "Upload Files"
|
||
|
||
[fileSelectorPicker]
|
||
empty = "No files available"
|
||
placeholder = "Select file"
|
||
search = "Filter files…"
|
||
tabListLabel = "Saved files, workbench, upload"
|
||
upload = "Upload from computer"
|
||
|
||
[fileSelectorPicker.sort]
|
||
dateAsc = "Oldest first"
|
||
dateDesc = "Newest first"
|
||
dateLabel = "Latest"
|
||
nameAsc = "A to Z"
|
||
nameDesc = "Z to A"
|
||
nameLabel = "A–Z"
|
||
|
||
[fileSelectorPicker.tabs]
|
||
saved = "Saved files"
|
||
upload = "Upload"
|
||
workbench = "Workbench"
|
||
|
||
[fileSidebar]
|
||
addFiles = "Add files"
|
||
collapse = "Collapse sidebar"
|
||
dropHint = "Open files to get started"
|
||
expand = "Expand sidebar"
|
||
files = "Files"
|
||
googleDrive = "Google Drive"
|
||
googleDriveDisabled = "Google Drive is not configured"
|
||
leaveMyFiles = "Leave My Files"
|
||
myFiles = "My Files"
|
||
noFiles = "No files yet"
|
||
openFileManager = "Browse all files & folders"
|
||
openFromComputer = "Open from computer"
|
||
openSettings = "Open settings"
|
||
search = "Search"
|
||
searchPlaceholder = "Search files..."
|
||
|
||
[fileSidebar.fileItem]
|
||
closeViewer = "Close viewer"
|
||
openInViewer = "Open in viewer"
|
||
|
||
[filesPage]
|
||
addToWorkspace = "Add to workspace"
|
||
addToWorkspaceCount = "Add {{count}} to workspace"
|
||
allFiles = "All files"
|
||
back = "Back"
|
||
backToFolder = "Back to {{folder}}"
|
||
backToMyFiles = "Back to My Files"
|
||
breadcrumbs = "Folder path"
|
||
cancel = "Cancel"
|
||
clearSearch = "Clear search"
|
||
clearSelection = "Clear selection"
|
||
closeDetails = "Close details"
|
||
create = "Create"
|
||
cycleBlocked = "Can't move a folder into one of its own subfolders."
|
||
delete = "Delete"
|
||
deleteFolder = "Delete folder"
|
||
deleteFolderBody = "Delete folder \"{{name}}\"?"
|
||
deleteFolderContents = "Also delete {{count}} file(s) inside the folder"
|
||
deleteFolderContentsWarning = "Files will be permanently removed and cannot be recovered."
|
||
deleteFolderError = "Could not delete the folder. Try again."
|
||
deleteFolderKeepHint = "Files inside will be moved to All files."
|
||
deleteFolderTitle = "Delete folder?"
|
||
deselectAll = "Clear selection"
|
||
details = "Details"
|
||
detailsCount = "{{count}} files selected"
|
||
dismissError = "Dismiss"
|
||
download = "Download"
|
||
downloadAll = "Download all"
|
||
downloadVersion = "Download this version"
|
||
dropOverlay = "Drop files to upload"
|
||
dropOverlaySub = "Files start in Local. Use 'Move to' or 'Save to cloud' to organize them into a folder."
|
||
file = "File"
|
||
fileMenu = "File actions"
|
||
folder = "Folder"
|
||
folderItems = "{{count}} items"
|
||
folderMenu = "Folder actions"
|
||
inPath = "in {{path}}"
|
||
inWorkspace = "Open"
|
||
inWorkspaceAria = "Already in workspace"
|
||
loading = "Loading…"
|
||
localFoldersUnavailable = "Folders are cloud-only - save a file to the cloud to organize it."
|
||
moveSkippedRemote = "{{count}} file(s) couldn't be moved on the server (no permission or already deleted)."
|
||
moveTo = "Move to…"
|
||
myFiles = "My Files"
|
||
newFolder = "New folder"
|
||
newFolderStorageDisabled = "Server folder storage isn't enabled. Ask your admin to turn it on."
|
||
newFolderTabUnavailable = "Switch to All or Cloud to create folders."
|
||
offlineNoFolderEdits = "Server folder sync unavailable - folder changes are disabled. Check sign-in and storage configuration."
|
||
open = "Open"
|
||
openVersionInWorkspace = "Open in workspace"
|
||
originFilter = "Filter by source"
|
||
quickView = "Quick view"
|
||
refresh = "Refresh from server"
|
||
remove = "Delete"
|
||
removeConfirm = "Delete {{count}} file(s)? This cannot be undone."
|
||
removeVersion = "Remove this version"
|
||
rename = "Rename"
|
||
renameFolder = "Rename folder"
|
||
resizeFolderTree = "Resize folder tree (arrow keys, Shift for bigger steps; double-click to auto-fit)"
|
||
save = "Save"
|
||
saveToServer = "Save to server"
|
||
saveToServerDisabledHint = "Saving to the server isn't enabled on this server. Ask your admin to enable it."
|
||
search = "Search"
|
||
searchPlaceholder = "Search this folder & subfolders"
|
||
selectAll = "Select all"
|
||
selectAllHint = "Click to select all. Tip: hold Ctrl (or Cmd) to add files one at a time, Shift to select a range."
|
||
selectedCount = "{{count}} selected"
|
||
selectFile = "Select file {{name}}"
|
||
shareDisabledHint = "File sharing isn't enabled on this server. Ask your admin to enable it."
|
||
shareManage = "Manage sharing"
|
||
showDetails = "Show details"
|
||
signInRequired = "Sign in to use cloud storage."
|
||
summary = "{{count}} items"
|
||
tree = "Folders"
|
||
upload = "Upload"
|
||
uploadedToLocal = "Uploaded files start in Local. Use 'Save to cloud' to put them in a folder."
|
||
uploadFromMobile = "Upload from Mobile"
|
||
versionActions = "Version actions"
|
||
versionCollapse = "Collapse middle versions"
|
||
versionOrigin = "Original upload"
|
||
versionsCount = "{{count}} versions"
|
||
versionShowHidden = "Show {{count}} earlier versions"
|
||
viewVersion = "View this version"
|
||
appearance.colour = "Color"
|
||
appearance.icon = "Icon"
|
||
appearance.title = "Appearance"
|
||
appearance.useColour = "Use color {{c}}"
|
||
column.modified = "Modified"
|
||
column.name = "Name"
|
||
column.size = "Size"
|
||
column.type = "Type"
|
||
empty.hint = "Drop PDFs anywhere on this page to upload, or use the New folder button to organize your files."
|
||
empty.newFolderCta = "Create folder"
|
||
empty.title = "This folder is empty"
|
||
empty.uploadCta = "Upload files"
|
||
empty.cloud.hint = "Upload a file to start, or create a folder to organize."
|
||
empty.cloud.offlineHint = "Reconnect to load your cloud library."
|
||
empty.cloud.offlineTitle = "No cached cloud files"
|
||
empty.cloud.title = "No cloud files yet"
|
||
empty.local.hint = "Files saved without uploading stay here. Drop a file to add one."
|
||
empty.local.title = "No local-only files"
|
||
empty.recent.hint = "Files you open or edit will appear here."
|
||
empty.recent.title = "Nothing modified yet"
|
||
empty.shared.hint = "When someone shares a file via link, it appears here."
|
||
empty.shared.title = "Nothing shared with you"
|
||
empty.sharedByMe.hint = "Create a share link or invite a teammate from any of your files to see it here."
|
||
empty.sharedByMe.title = "You haven't shared any files yet"
|
||
error.actionFailed = "Could not {{action}}."
|
||
error.actionFailedDetail = "Could not {{action}}: {{message}}"
|
||
error.deleteFolderFailed = "Could not delete folder."
|
||
error.deleteFolderFailedDetail = "Could not delete folder: {{message}}"
|
||
error.folderAppearanceFailed = "Could not update folder appearance."
|
||
error.folderAppearanceFailedDetail = "Could not update folder appearance: {{message}}"
|
||
error.moveFilesFailed = "Could not move files."
|
||
error.moveFilesFailedDetail = "Could not move files: {{message}}"
|
||
error.moveFolderFailed = "Could not move folder."
|
||
error.moveFolderFailedDetail = "Could not move folder: {{message}}"
|
||
error.removeFilesFailed = "Could not remove files."
|
||
error.removeFilesFailedDetail = "Could not remove files: {{message}}"
|
||
error.uploadFilesFailed = "Could not upload files."
|
||
error.uploadFilesFailedDetail = "Could not upload files: {{message}}"
|
||
field.added = "Added"
|
||
field.count = "Files"
|
||
field.folder = "Folder"
|
||
field.modified = "Modified"
|
||
field.name = "Name"
|
||
field.size = "Size"
|
||
field.toolHistory = "Tool history"
|
||
field.toolHistoryAtVersion = "Cumulative tool chain"
|
||
field.totalSize = "Total size"
|
||
field.type = "Type"
|
||
field.versionHistory = "Version journey"
|
||
folderName.cancel = "Cancel"
|
||
folderName.error = "Could not save folder. Try again."
|
||
folderName.label = "Folder name"
|
||
folderName.placeholder = "Folder name"
|
||
moveDialog.cancel = "Cancel"
|
||
moveDialog.confirm = "Move here"
|
||
moveDialog.error = "Could not move. Try again."
|
||
moveDialog.hint = "Pick a destination folder. Tip: you can also drag and drop files onto folders in the tree on the left."
|
||
moveDialog.newFolderCancel = "Discard"
|
||
moveDialog.newFolderCreate = "Create"
|
||
moveDialog.newFolderError = "Could not create folder. Try again."
|
||
moveDialog.newFolderLabel = "New folder name"
|
||
moveDialog.newFolderPlaceholder = "Folder name"
|
||
moveDialog.newFolderToggle = "Create new folder…"
|
||
moveDialog.title = "Move to folder"
|
||
origin.all = "All sources"
|
||
origin.cloud = "Cloud"
|
||
origin.cloudHint = "Stored on the Stirling server"
|
||
origin.local = "Local"
|
||
origin.localHint = "Only stored in this browser"
|
||
origin.shared = "Shared"
|
||
origin.sharedHint = "Shared with you via link"
|
||
sort.modifiedAsc = "Oldest first"
|
||
sort.modifiedDesc = "Recent first"
|
||
sort.nameAsc = "Name A→Z"
|
||
sort.nameDesc = "Name Z→A"
|
||
sort.sizeAsc = "Smallest first"
|
||
sort.sizeDesc = "Largest first"
|
||
syncError.client = "Folder sync failed."
|
||
syncError.network = "Could not reach the server."
|
||
syncError.server = "Server error during folder sync."
|
||
tabName.local = "Local"
|
||
tabName.recent = "Recent"
|
||
tabName.shared = "Shared with me"
|
||
tabName.sharedByMe = "Shared by me"
|
||
tabs.all = "All"
|
||
tabs.ariaLabel = "File views"
|
||
tabs.recent = "Recent"
|
||
tabs.shared = "Shared with me"
|
||
tabs.sharedByMe = "Shared by me"
|
||
treeMenu.actions = "Folder actions for {{name}}"
|
||
treeMenu.delete = "Delete folder"
|
||
treeMenu.newSubfolder = "New subfolder"
|
||
treeMenu.rename = "Rename"
|
||
typeFilter.allTypes = "All types"
|
||
typeFilter.label = "Filter by type"
|
||
viewMode.grid = "Grid view"
|
||
viewMode.label = "View mode"
|
||
viewMode.list = "List view"
|
||
|
||
[fileToPDF]
|
||
tags = "transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint"
|
||
title = "File to PDF"
|
||
|
||
[fileUpload]
|
||
dropFilesHere = "Drop files here or click the upload button"
|
||
dropFilesHereOpen = "Drop files here or click the open button"
|
||
filesAvailable = "files available"
|
||
loadFromStorage = "Load from Storage"
|
||
noFilesInStorage = "No files available in storage. Upload some files first."
|
||
noFilesInStorageOpen = "No files available in storage. Open some files first."
|
||
open = "Open"
|
||
openFile = "Open File"
|
||
openFiles = "Open Files"
|
||
selectFromStorage = "Select from Storage"
|
||
upload = "Upload"
|
||
uploadFile = "Upload File"
|
||
uploadFiles = "Upload Files"
|
||
|
||
[firstLogin]
|
||
allFieldsRequired = "All fields are required"
|
||
changePassword = "Change Password"
|
||
confirmPassword = "Confirm New Password"
|
||
currentPassword = "Current Password"
|
||
enterCurrentPassword = "Enter your current password"
|
||
enterNewPassword = "Enter new password (min 8 characters)"
|
||
error = "Error"
|
||
loggedInAs = "Logged in as"
|
||
newPassword = "New Password"
|
||
passwordChangedSuccess = "Password changed successfully! Please log in again."
|
||
passwordChangeFailed = "Failed to change password. Please check your current password."
|
||
passwordMustBeDifferent = "New password must be different from current password"
|
||
passwordsDoNotMatch = "New passwords do not match"
|
||
passwordTooShort = "Password must be at least 8 characters"
|
||
reEnterNewPassword = "Re-enter new password"
|
||
title = "First Time Login"
|
||
welcomeMessage = "For security reasons, you must change your password on your first login."
|
||
welcomeTitle = "Welcome!"
|
||
|
||
[flatten]
|
||
submit = "Flatten"
|
||
tags = "simplify,remove,interactive,flatten,flatten form,remove form fields,make static,finalize form,lock form,disable editing,convert to image,non-editable"
|
||
title = "Flatten"
|
||
|
||
[flatten.error]
|
||
failed = "An error occurred while flattening the PDF."
|
||
|
||
[flatten.options]
|
||
stepTitle = "Flatten Options"
|
||
|
||
[flatten.options.flattenOnlyForms]
|
||
desc = "Only flatten form fields, leaving other interactive elements intact"
|
||
label = "Flatten only forms"
|
||
|
||
[flatten.renderDpi]
|
||
help = "Leave blank to use the system default. Higher DPI sharpens output but increases processing time and file size."
|
||
label = "Rendering DPI (optional, recommended 150 DPI)"
|
||
placeholder = "e.g. 150"
|
||
|
||
[flatten.results]
|
||
title = "Flatten Results"
|
||
|
||
[flatten.tooltip.description]
|
||
bullet1 = "Text boxes become regular text (can't be edited)"
|
||
bullet2 = "Checkboxes and buttons become pictures"
|
||
bullet3 = "Great for final versions you don't want changed"
|
||
bullet4 = "Ensures consistent appearance across all devices"
|
||
text = "Flattening makes your PDF non-editable by turning fillable forms and buttons into regular text and images. The PDF will look exactly the same, but no one can change or fill in the forms anymore. Perfect for sharing completed forms, creating final documents for records, or ensuring the PDF looks the same everywhere."
|
||
title = "What does flattening do?"
|
||
|
||
[flatten.tooltip.formsOnly]
|
||
bullet1 = "Forms become non-editable"
|
||
bullet2 = "Links still work when clicked"
|
||
bullet3 = "Comments and notes remain visible"
|
||
bullet4 = "Bookmarks still help you navigate"
|
||
text = "This option only removes the ability to fill in forms, but keeps other features working like clicking links, viewing bookmarks, and reading comments."
|
||
title = "What does 'Flatten only forms' mean?"
|
||
|
||
[flatten.tooltip.header]
|
||
title = "About Flattening PDFs"
|
||
|
||
[footer]
|
||
discord = "Discord"
|
||
issues = "GitHub"
|
||
|
||
[formFill]
|
||
flattenAfterFilling = "Flatten after filling"
|
||
rescanFields = "Re-scan fields"
|
||
rescanFormFields = "Re-scan form fields"
|
||
save = "Save"
|
||
|
||
[formFill.sidebar]
|
||
close = "Close sidebar"
|
||
|
||
[getPdfInfo]
|
||
downloadJson = "Download JSON"
|
||
downloads = "Downloads"
|
||
indexTitle = "Index"
|
||
noneDetected = "None detected"
|
||
noResults = "Run the tool to generate a report."
|
||
processing = "Extracting information..."
|
||
results = "Results"
|
||
submit = "Get Info"
|
||
tags = "infomation,data,stats,statistics"
|
||
title = "Get Info on PDF"
|
||
|
||
[getPdfInfo.compliance]
|
||
failed = "Failed"
|
||
failedCount = "failed"
|
||
noVerification = "No Verification Performed"
|
||
noVerificationDesc = "PDF standards compliance was not verified for this document."
|
||
passed = "Passed"
|
||
passedCount = "passed"
|
||
|
||
[getPdfInfo.error]
|
||
partial = "Some files could not be processed."
|
||
unexpected = "Unexpected error during extraction."
|
||
|
||
[getPdfInfo.other]
|
||
attachments = "Attachments"
|
||
embeddedFiles = "Embedded Files"
|
||
javaScript = "JavaScript"
|
||
layers = "Layers"
|
||
structureTree = "StructureTree"
|
||
xmp = "XMPMetadata"
|
||
|
||
[getPdfInfo.perPage]
|
||
annotations = "Annotations"
|
||
fonts = "Fonts"
|
||
images = "Images"
|
||
links = "Links"
|
||
multimedia = "Multimedia"
|
||
size = "Size"
|
||
xobjects = "XObject Counts"
|
||
|
||
[getPdfInfo.report]
|
||
shortTitle = "PDF Information"
|
||
|
||
[getPdfInfo.sections]
|
||
basicInfo = "Basic Info"
|
||
compliance = "Compliance"
|
||
documentInfo = "Document Info"
|
||
encryption = "Encryption"
|
||
formFields = "Form Fields"
|
||
metadata = "Metadata"
|
||
other = "Other"
|
||
permissions = "Permissions"
|
||
perPageInfo = "Per Page Info"
|
||
tableOfContents = "Table of Contents"
|
||
|
||
[getPdfInfo.status]
|
||
complete = "Extraction complete"
|
||
|
||
[getPdfInfo.summary]
|
||
author = "Author"
|
||
basic = "Basic Information"
|
||
complianceChecked = "Standards verified ({{failed}} failed)"
|
||
compliancePassed = "{{standards}} compliant"
|
||
created = "Created"
|
||
documentInfo = "Document Information"
|
||
fileSize = "File Size"
|
||
language = "Language"
|
||
modified = "Modified"
|
||
noCompliance = "No Compliance Standards"
|
||
overviewTitle = "PDF Overview"
|
||
pages = "Pages"
|
||
pdfVersion = "PDF Version"
|
||
permsAll = "All Permissions Allowed"
|
||
permsMixed = "Some permissions restricted"
|
||
permsRestricted = "{{count}} restrictions"
|
||
securityTitle = "Security Status"
|
||
technical = "Technical"
|
||
title = "PDF Summary"
|
||
|
||
[getPdfInfo.summary.overview]
|
||
text = "This is a {{pages}}-page PDF titled {{title}} created by {{author}} (PDF version {{version}})."
|
||
unknown = "Unknown Author"
|
||
untitled = "an untitled document"
|
||
|
||
[getPdfInfo.summary.security]
|
||
encrypted = "Encrypted PDF - Password protection present"
|
||
unencrypted = "Unencrypted PDF - No password protection"
|
||
|
||
[getPdfInfo.summary.tech]
|
||
bookmarks = "Bookmarks"
|
||
embeddedFiles = "Embedded Files"
|
||
fonts = "Fonts"
|
||
formFields = "Form Fields"
|
||
images = "Images"
|
||
javaScript = "JavaScript"
|
||
layers = "Layers"
|
||
multimedia = "Multimedia"
|
||
|
||
[groupSigning.steps]
|
||
back = "Back"
|
||
completed = "Completed"
|
||
current = "Current"
|
||
stepLabel = "Step {{number}}"
|
||
|
||
[groupSigning.steps.configureDefaults]
|
||
continue = "Continue to Review"
|
||
invisible = "Signatures will be invisible (metadata only)"
|
||
locationLabel = "Location:"
|
||
preview = "Preview"
|
||
reasonLabel = "Reason:"
|
||
title = "Configure Signature Settings"
|
||
visible = "Signatures will be visible on page {{page}}"
|
||
|
||
[groupSigning.steps.review]
|
||
document = "Document"
|
||
dueDate = "Due Date (Optional)"
|
||
dueDatePlaceholder = "Select due date..."
|
||
invisible = "Invisible (metadata only)"
|
||
location = "Location:"
|
||
logo = "Logo:"
|
||
logoHidden = "No logo"
|
||
logoShown = "Stirling PDF logo shown"
|
||
participantCount = "{{count}} participant(s) will sign in order"
|
||
participants = "Participants"
|
||
reason = "Reason:"
|
||
send = "Send Signing Requests"
|
||
signatureSettings = "Signature Settings"
|
||
title = "Review Session Details"
|
||
titleShort = "Review & Send"
|
||
visibility = "Visibility:"
|
||
visible = "Visible on page {{page}}"
|
||
|
||
[groupSigning.steps.selectDocument]
|
||
continue = "Continue to Participant Selection"
|
||
noFile = "Please select a single PDF file from your active files to create a signing session."
|
||
selectedFile = "Selected document"
|
||
title = "Select Document"
|
||
|
||
[groupSigning.steps.selectParticipants]
|
||
continue = "Continue to Signature Settings"
|
||
count = "{{count}} participant(s) selected"
|
||
label = "Select participants"
|
||
placeholder = "Choose participants to sign..."
|
||
title = "Choose Participants"
|
||
|
||
[groupSigning.tooltip]
|
||
header = "About Group Signing"
|
||
|
||
[groupSigning.tooltip.finalization]
|
||
bullet1 = "All signatures are applied in the participant order you specified"
|
||
bullet2 = "You can finalize with partial signatures if needed"
|
||
bullet3 = "Once finalized, the session cannot be modified"
|
||
description = "Once all participants have signed (or you choose to finalize early), you can generate the final signed PDF."
|
||
title = "Finalization Process"
|
||
|
||
[groupSigning.tooltip.roles]
|
||
bullet1 = "Owner (you): Creates session, configures signature defaults, finalizes document"
|
||
bullet2 = "Participants: Create their signature, choose certificate, place on PDF"
|
||
bullet3 = "Participants cannot modify signature visibility, reason, or location settings"
|
||
description = "You control the signature appearance settings for all participants."
|
||
title = "Participant Roles"
|
||
|
||
[groupSigning.tooltip.sequential]
|
||
bullet1 = "First participant must sign before the second can access the document"
|
||
bullet2 = "Ensures proper signing order for legal compliance"
|
||
bullet3 = "You can reorder participants by dragging them in the list"
|
||
description = "Participants sign documents in the order you specify. Each signer receives a notification when it is their turn."
|
||
title = "Sequential Signing"
|
||
|
||
[guestBanner]
|
||
dismiss = "Dismiss banner"
|
||
message = "Create a free account to save your work, access more features, and support the project."
|
||
signUp = "Sign Up Free"
|
||
title = "You're using Stirling PDF as a guest!"
|
||
|
||
[home.addAttachments]
|
||
desc = "Add or remove embedded files (attachments) to/from a PDF"
|
||
tags = "embed,attach,include,attachments,attach files,embed files,include files,add files,file attachment,associated files,supplementary files"
|
||
title = "Add Attachments"
|
||
|
||
[home.addImage]
|
||
desc = "Adds a image onto a set location on the PDF"
|
||
tags = "insert,embed,place,add image,insert image,place image,embed image,add photo,add picture,add logo,graphics,insert picture,place photo,PNG,JPG,JPEG"
|
||
title = "Add image"
|
||
|
||
[home.addPageNumbers]
|
||
desc = "Add Page numbers throughout a document in a set location"
|
||
tags = "number,pagination,count,add page numbers,page numbering,page numbers,footer,header,number pages,sequential,pagination tool"
|
||
title = "Add Page Numbers"
|
||
|
||
[home.addPassword]
|
||
desc = "Add password protection and restrictions to PDF files"
|
||
tags = "encrypt,password,lock,secure,protect,security,encryption,safeguard,confidential,private,restrict access"
|
||
title = "Add Password"
|
||
|
||
[home.addStamp]
|
||
desc = "Add text or add image stamps at set locations"
|
||
tags = "stamp,mark,seal,approved,rejected,confidential,stamp tool,rubber stamp,date stamp,approval stamp,received,void,copy,original"
|
||
title = "Add Stamp to PDF"
|
||
|
||
[home.addText]
|
||
desc = "Add custom text anywhere in your PDF"
|
||
tags = "text,annotation,label,add text,insert text,place text,text box,add label,add caption,type on PDF,write on PDF,add words,add note,text overlay,typewriter"
|
||
title = "Add Text"
|
||
|
||
[home.adjustContrast]
|
||
desc = "Adjust Colors/Contrast, Saturation and Brightness of a PDF"
|
||
tags = "contrast,brightness,saturation,adjust colors,color correction,enhance,lighten,darken,improve quality,color balance,hue,vibrance"
|
||
title = "Adjust Colors/Contrast"
|
||
|
||
[home.annotate]
|
||
desc = "Highlight, draw, add notes and shapes in the viewer"
|
||
tags = "annotate,highlight,draw,markup,comment,notes,review,redline,feedback,markup tools,sticky notes,shapes,arrows,text box,freehand"
|
||
title = "Annotate"
|
||
|
||
[home.automate]
|
||
desc = "Build multi-step workflows by chaining together PDF actions. Ideal for recurring tasks."
|
||
tags = "workflow,sequence,automation,automate,batch,batch processing,pipeline,chain,multi-step,recurring,scheduled,automatic,process multiple,bulk operations"
|
||
title = "Automate"
|
||
|
||
[home.autoRename]
|
||
desc = "Auto renames a PDF file based on its detected header"
|
||
tags = "auto-detect,header-based,organize,relabel,auto rename,automatic rename,smart rename,rename by content,filename,file naming,detect title"
|
||
title = "Auto Rename PDF File"
|
||
|
||
[home.autoSizeSplitPDF]
|
||
tags = "auto,split,size"
|
||
title = "Auto Split by Size/Count"
|
||
|
||
[home.autoSplitPDF]
|
||
tags = "auto,split,QR,auto split,QR code,QR split,barcode,automatic split,divider page,separator page,scan divider,batch scanning"
|
||
title = "Auto Split Pages"
|
||
|
||
[home.bookletImposition]
|
||
desc = "Create booklets with proper page ordering and multi-page layout for printing and binding"
|
||
tags = "booklet,print,binding,imposition,booklet printing,saddle stitch,fold,pamphlet,brochure,print booklet,duplex,two-sided,signature,book layout,page imposition,print layout"
|
||
title = "Booklet Imposition"
|
||
|
||
[home.certSign]
|
||
desc = "Signs a PDF with a Certificate/Key (PEM/P12)"
|
||
tags = "authenticate,PEM,P12,official,encrypt,sign,certificate,PKCS12,JKS,server,manual,auto,digital certificate,certificate signature,PKI,cryptographic signature,trusted signature"
|
||
title = "Sign with Certificate"
|
||
|
||
[home.changeMetadata]
|
||
desc = "Change/Remove/Add metadata from a PDF document"
|
||
tags = "edit,modify,update,metadata,properties,document properties,author,title,subject,keywords,creator,producer,info,document info,file properties"
|
||
title = "Change Metadata"
|
||
|
||
[home.changePermissions]
|
||
desc = "Change document restrictions and permissions"
|
||
tags = "permissions,restrictions,rights,access control,allow,deny,printing,copying,editing,modify permissions,security settings,user rights"
|
||
title = "Change Permissions"
|
||
|
||
[home.compare]
|
||
desc = "Compares and shows the differences between 2 PDF Documents"
|
||
tags = "difference,compare,diff,compare PDFs,compare documents,find differences,show differences,changes,what changed,track changes,revisions,version compare,side by side,contrast,delta"
|
||
title = "Compare"
|
||
|
||
[home.compress]
|
||
desc = "Compress PDFs to reduce their file size."
|
||
tags = "shrink,reduce,optimize,compress,smaller,downsize,file size,reduce size,minimize,make smaller,decrease size,optimize size"
|
||
title = "Compress"
|
||
|
||
[home.convert]
|
||
desc = "Convert files between different formats"
|
||
tags = "transform,change,convert,PDF to Word,PDF to Excel,PDF to image,Word to PDF,Excel to PDF,PowerPoint to PDF,HTML to PDF,export,import,file conversion,format change,save as"
|
||
title = "Convert"
|
||
|
||
[home.crop]
|
||
desc = "Crop a PDF to reduce its size (maintains text!)"
|
||
tags = "trim,cut,resize,crop,crop PDF,trim PDF,trim margins,remove margins,cut edges,trim borders,remove white space,crop pages,trim pages,reduce margins,set margins"
|
||
title = "Crop PDF"
|
||
|
||
[home.devAirgapped]
|
||
desc = "Link to air-gapped setup guide"
|
||
tags = "air-gapped,offline,isolated,no internet,disconnected,secure,network isolation,standalone"
|
||
title = "Air-gapped Setup"
|
||
|
||
[home.devApi]
|
||
desc = "Link to API documentation"
|
||
tags = "API,development,documentation,developer,REST,integration,endpoints,programmatic,automation,scripting"
|
||
title = "API"
|
||
|
||
[home.devFolderScanning]
|
||
desc = "Link to automated folder scanning guide"
|
||
tags = "automation,folder,scanning,watch folder,hot folder,automatic processing,batch,monitor folder,auto process,folder monitoring"
|
||
title = "Automated Folder Scanning"
|
||
|
||
[home.devSsoGuide]
|
||
desc = "Link to SSO guide"
|
||
tags = "SSO,single sign-on,authentication,SAML,OAuth,OIDC,login,enterprise,identity provider,IdP"
|
||
title = "SSO Guide"
|
||
|
||
[home.editTableOfContents]
|
||
desc = "Add or edit bookmarks and table of contents in PDF documents"
|
||
tags = "bookmarks,contents,edit,table of contents,TOC,outline,navigation,chapters,sections,add bookmarks,edit bookmarks,PDF outline"
|
||
title = "Edit Table of Contents"
|
||
|
||
[home.extractImages]
|
||
desc = "Extracts all images from a PDF and saves them to zip"
|
||
tags = "pull,save,export,extract images,get images,save images,export images,extract photos,extract pictures,pull images,download images,rip images,extract graphics,save photos"
|
||
title = "Extract Images"
|
||
|
||
[home.extractPages]
|
||
desc = "Extract specific pages from a PDF document"
|
||
tags = "pull,select,copy,extract,extract pages,get pages,pull out,save pages,export pages,copy pages,select pages,specific pages"
|
||
title = "Extract Pages"
|
||
|
||
[home.flatten]
|
||
desc = "Remove all interactive elements and forms from a PDF"
|
||
tags = "simplify,remove,interactive,flatten,flatten form,remove form fields,make static,finalize form,lock form,disable editing,convert to image,non-editable"
|
||
title = "Flatten"
|
||
|
||
[home.formFill]
|
||
desc = "Fill PDF form fields interactively with a visual editor"
|
||
title = "Fill Form"
|
||
|
||
[home.getPdfInfo]
|
||
desc = "Grabs any and all information possible on PDFs"
|
||
tags = "info,metadata,details,PDF info,document info,properties,file info,get info,show info,view properties,document properties,statistics,page count,file details,inspect"
|
||
title = "Get ALL Info on PDF"
|
||
|
||
[home.manageCertificates]
|
||
tags = "certificates,import,export,manage certificates,digital certificates,certificate management,PFX,P12,keystore,import certificate,export certificate,certificate store,PKI"
|
||
title = "Manage Certificates"
|
||
|
||
[home.merge]
|
||
desc = "Easily merge multiple PDFs into one."
|
||
tags = "combine,join,unite,merge,merge PDFs,combine PDFs,join PDFs,concatenate,append,stitch,combine files,join files,merge documents"
|
||
title = "Merge"
|
||
|
||
[home.mobile]
|
||
brandAlt = "Stirling PDF logo"
|
||
openFiles = "Open files"
|
||
swipeHint = "Swipe left or right to switch views"
|
||
tools = "Tools"
|
||
toolsSlide = "Tool selection panel"
|
||
viewSwitcher = "Switch workspace view"
|
||
workbenchSlide = "Workspace panel"
|
||
workspace = "Workspace"
|
||
|
||
[home.multiTool]
|
||
desc = "Merge, Rotate, Rearrange, Split, and Remove pages"
|
||
tags = "multiple,tools,multi-tool,all-in-one,swiss army,page organizer,page editor,edit pages,manage pages,organize,reorganize"
|
||
title = "PDF Multi Tool"
|
||
|
||
[home.ocr]
|
||
desc = "Cleanup scans and detects text from images within a PDF and re-adds it as text."
|
||
tags = "extract,scan,OCR,optical character recognition,text recognition,scan to text,image to text,scanned document,searchable PDF,make searchable,extract text,recognize text,read scanned"
|
||
title = "OCR / Cleanup scans"
|
||
|
||
[home.overlay-pdfs]
|
||
desc = "Overlay one PDF on top of another"
|
||
tags = "overlay,combine,merge,layer,superimpose,overlay PDF,layer PDFs,combine PDFs,stack,overlay pages,background,foreground,composite"
|
||
title = "Overlay PDFs"
|
||
|
||
[home.pageLayout]
|
||
desc = "Merge multiple pages of a PDF document into a single page"
|
||
tags = "layout,arrange,combine,N-up,2-up,4-up,multiple per page,pages per sheet,layout pages,tile,grid layout,multi-page layout,combine on page,handout"
|
||
title = "Multi-Page Layout"
|
||
|
||
[home.pdfCommentAgent]
|
||
desc = "Ask AI to annotate a PDF with sticky-note comments based on your prompt"
|
||
tags = "AI,agent,comment,annotate,sticky note,review,feedback,notes"
|
||
title = "Add AI comments"
|
||
|
||
[home.pdfOrganiser]
|
||
tags = "organize,rearrange,reorder,arrange pages,sort,move pages,delete pages,remove pages,page management,page organizer,resequence"
|
||
title = "Organize"
|
||
|
||
[home.pdfTextEditor]
|
||
desc = "Edit existing text and images inside PDFs"
|
||
tags = "edit text,modify text,change text,edit content,update text,rewrite,correct,amend,redline,revise,text editor,content editor"
|
||
title = "PDF Text Editor"
|
||
|
||
[home.pdfToSinglePage]
|
||
desc = "Merges all PDF pages into one large single page"
|
||
tags = "combine,merge,single,single page,one page,merge to single,combine all,stitch pages,concatenate vertical,long page,poster"
|
||
title = "PDF to Single Large Page"
|
||
|
||
[home.read]
|
||
desc = "View and annotate PDFs. Highlight text, draw, or insert comments for review and collaboration."
|
||
tags = "view,open,display,read,viewer,PDF viewer,PDF reader,open PDF,view PDF,display PDF,preview,browse"
|
||
title = "Read"
|
||
|
||
[home.redact]
|
||
desc = "Redacts (blacks out) a PDF based on selected text, drawn shapes and/or selected page(s)"
|
||
tags = "censor,blackout,hide,redact,redaction,black out,block out,remove sensitive,hide text,privacy,confidential,GDPR,PII,sensitive data,permanently remove,cover up,legal redaction"
|
||
title = "Redact"
|
||
|
||
[home.removeAnnotations]
|
||
desc = "Removes all comments/annotations from a PDF"
|
||
tags = "delete,clean,strip,remove annotations,remove comments,delete comments,remove markup,remove highlights,clean annotations,strip comments,remove notes,delete markup,clear comments"
|
||
title = "Remove Annotations"
|
||
|
||
[home.removeBlanks]
|
||
desc = "Detects and removes blank pages from a document"
|
||
tags = "delete,clean,empty,remove blank,delete blank pages,empty pages,white pages,remove empty,clean up,cleanup blank"
|
||
title = "Remove Blank pages"
|
||
|
||
[home.removeCertSign]
|
||
desc = "Remove certificate signature from PDF"
|
||
tags = "remove,delete,unlock,remove certificate,remove signature,delete signature,unsigned,remove digital signature,strip signature,remove cert,unsign"
|
||
title = "Remove Certificate Sign"
|
||
|
||
[home.removeImage]
|
||
desc = "Remove image from PDF to reduce file size"
|
||
tags = "remove,delete,clean,remove image,delete image,strip images,remove pictures,delete photos,clean images,reduce size,remove graphics"
|
||
title = "Remove image"
|
||
|
||
[home.removePages]
|
||
desc = "Remove specific pages from a PDF document"
|
||
tags = "delete,extract,exclude,remove pages,delete pages,remove page,delete page,exclude pages,take out pages,discard pages,drop pages"
|
||
title = "Remove Pages"
|
||
|
||
[home.removePassword]
|
||
desc = "Remove password protection from your PDF document."
|
||
tags = "unlock,remove password,unlock PDF,decrypt,remove encryption,unprotect,open protected PDF,password removal,unlock protected,disable password,remove security,remove owner password"
|
||
title = "Remove Password"
|
||
|
||
[home.reorganizePages]
|
||
desc = "Rearrange, duplicate, or delete PDF pages with visual drag-and-drop control."
|
||
tags = "rearrange,reorder,organize,reorganize,move pages,page order,sort pages,arrange pages,shuffle,resequence"
|
||
title = "Reorganize Pages"
|
||
|
||
[home.repair]
|
||
desc = "Tries to repair a corrupt/broken PDF"
|
||
tags = "fix,restore,repair,fix PDF,fix broken,fix corrupt,repair PDF,repair corrupt,broken PDF,corrupt PDF,damaged PDF,recover,fix errors,PDF won't open,can't open PDF,PDF errors,troubleshoot,restore PDF,rebuild,corrupted"
|
||
title = "Repair"
|
||
|
||
[home.replaceColor]
|
||
desc = "Replace or invert colors in PDF documents"
|
||
tags = "replace color,invert color,color replacement,swap colors,change color,invert,negative,color swap,find and replace color,convert color,color change"
|
||
title = "Replace & Invert Color"
|
||
|
||
[home.rotate]
|
||
desc = "Easily rotate your PDFs."
|
||
tags = "turn,flip,orient,rotate,orientation,landscape,portrait,90 degrees,180 degrees,clockwise,counterclockwise,counter-clockwise,fix orientation"
|
||
title = "Rotate"
|
||
|
||
[home.sanitize]
|
||
desc = "Remove potentially harmful elements from PDF files"
|
||
tags = "clean,purge,remove,sanitize,remove scripts,remove javascript,remove metadata,strip metadata,security,clean document,remove hidden data,privacy"
|
||
title = "Sanitize"
|
||
|
||
[home.scalePages]
|
||
desc = "Change the size/scale of a page and/or its contents."
|
||
tags = "resize,adjust,scale,page size,resize page,scale page,change size,adjust size,enlarge,shrink page,fit to page,A4,letter size"
|
||
title = "Adjust page size/scale"
|
||
|
||
[home.scannerEffect]
|
||
desc = "Create a PDF that looks like it was scanned"
|
||
tags = "scan,simulate,create,fake scan,look scanned,scanner effect,make look scanned,photocopy effect,simulate scanner,realistic scan"
|
||
title = "Scanner Effect"
|
||
|
||
[home.scannerImageSplit]
|
||
desc = "Detect and split scanned photos into separate pages"
|
||
tags = "detect,split,photos,auto detect,detect photos,split photos,separate photos,split scanned images,multiple photos,auto split,photo detection,image detection,scan separation"
|
||
title = "Detect & Split Scanned Photos"
|
||
|
||
[home.showJS]
|
||
desc = "Searches and displays any JS injected into a PDF"
|
||
tags = "javascript,code,script,show javascript,show JS,find javascript,detect javascript,view javascript,embedded scripts,malware,security,inspect,debug"
|
||
title = "Show Javascript"
|
||
|
||
[home.sign]
|
||
desc = "Adds signature to PDF by drawing, text or image"
|
||
tags = "signature,autograph,e-sign,electronic signature,digital signature,sign document,approval,signoff,authorize,endorse,ink signature,handwriting"
|
||
title = "Sign"
|
||
|
||
[home.split]
|
||
desc = "Split PDFs into multiple documents"
|
||
tags = "divide,separate,break,split,extract pages,separate pages,divide document,break apart,separate files,unbind,split by page,divide by chapter"
|
||
title = "Split"
|
||
|
||
[home.splitByChapters]
|
||
tags = "split,chapters,structure,split by chapters,split by bookmarks,bookmarks,outline,table of contents,TOC split,chapter split,divide by sections"
|
||
title = "Split PDF by Chapters"
|
||
|
||
[home.splitBySections]
|
||
tags = "split,sections,divide,split by sections,grid split,divide pages,split into sections,cut pages,divide grid,section split,horizontal split,vertical split"
|
||
title = "Split PDF by Sections"
|
||
|
||
[home.swagger]
|
||
tags = "API,documentation,test,swagger,API docs,REST API,endpoints,developer,API reference,API testing,OpenAPI,integration,developer docs"
|
||
title = "API Documentation"
|
||
|
||
[home.timestampPdf]
|
||
desc = "Add an RFC 3161 document timestamp to prove when your PDF existed"
|
||
tags = "timestamp,RFC 3161,TSA,time stamp authority,document timestamp,proof of existence,timestamp token,trusted timestamp,sign timestamp,notarize"
|
||
title = "Timestamp PDF"
|
||
|
||
[home.unlockPDFForms]
|
||
desc = "Remove read-only property of form fields in a PDF document."
|
||
tags = "unlock,enable,edit,unlock forms,enable forms,editable forms,remove read only,make editable,unlock fields,enable editing,form fields,fillable,unprotect forms"
|
||
title = "Unlock PDF Forms"
|
||
|
||
[home.validateSignature]
|
||
desc = "Verify digital signatures and certificates in PDF documents"
|
||
tags = "validate,verify,certificate,validate signature,verify signature,check signature,digital signature,certificate verification,signature validation,authentic,trust,signed,verify certificate"
|
||
title = "Validate PDF Signature"
|
||
|
||
[home.viewPdf]
|
||
title = "View/Edit PDF"
|
||
|
||
[home.watermark]
|
||
desc = "Add a custom watermark to your PDF document."
|
||
tags = "stamp,mark,overlay,watermark,branding,logo,confidential,draft,copyright,trademark,text overlay,image overlay,background text"
|
||
title = "Add Watermark"
|
||
|
||
[HTMLToPDF]
|
||
header = "HTML To PDF"
|
||
tags = "markup,web-content,transformation,convert"
|
||
title = "HTML To PDF"
|
||
|
||
[image.upload]
|
||
hint = "Upload a PNG, JPG, SVG, or other image file to place on the PDF. SVG files will be converted to PNG for compatibility."
|
||
label = "Upload Image"
|
||
placeholder = "Select image file"
|
||
|
||
[imageToPdf]
|
||
tags = "conversion,img,jpg,picture,photo"
|
||
|
||
[imageToPDF]
|
||
header = "Image to PDF"
|
||
title = "Image to PDF"
|
||
|
||
[infoBanner]
|
||
dismiss = "Dismiss"
|
||
|
||
[invite]
|
||
acceptError = "Failed to create account"
|
||
accountFor = "Creating account for"
|
||
alreadyHaveAccount = "Already have an account?"
|
||
choosePassword = "Choose a password"
|
||
confirmPassword = "Confirm password"
|
||
confirmPasswordPlaceholder = "Re-enter your password"
|
||
createAccount = "Create account"
|
||
creating = "Creating Account..."
|
||
email = "Email address"
|
||
emailPlaceholder = "Enter your email address"
|
||
emailRequired = "Email address is required"
|
||
goToLogin = "Go to Login"
|
||
invalidEmail = "Invalid email address"
|
||
invalidInvitation = "Invalid Invitation"
|
||
invalidToken = "Invalid invitation link"
|
||
linkExpires = "Link expires"
|
||
passwordMismatch = "Passwords do not match"
|
||
passwordPlaceholder = "Enter your password"
|
||
passwordRequired = "Password is required"
|
||
signIn = "Sign in"
|
||
validating = "Validating invitation..."
|
||
validationError = "Failed to validate invitation link"
|
||
welcome = "Welcome to Stirling PDF"
|
||
welcomeSubtitle = "Complete your account setup to get started"
|
||
welcomeTitle = "You've been invited!"
|
||
|
||
[landing]
|
||
addFiles = "Add Files"
|
||
heroSubtitle = "Drop in or add an existing PDF to get started."
|
||
heroTitle = "Stirling PDF"
|
||
mobileUpload = "Upload from Mobile"
|
||
openFromComputer = "Open from computer"
|
||
uploadFromComputer = "Upload from computer"
|
||
|
||
[language]
|
||
direction = "ltr"
|
||
|
||
[legal]
|
||
accessibility = "Accessibility"
|
||
cookie = "Cookie Policy"
|
||
iAgreeToThe = "I agree to all of the"
|
||
impressum = "Impressum"
|
||
privacy = "Privacy Policy"
|
||
showCookieBanner = "Cookie Preferences"
|
||
terms = "Terms and Conditions"
|
||
|
||
[licenses]
|
||
title = "3rd Party Licenses"
|
||
|
||
[localMode]
|
||
toolUnavailable = "This tool requires an account. Sign in to Stirling Cloud or connect to a self-hosted server to use it."
|
||
|
||
[localMode.toolPicker]
|
||
message = "Sign in to unlock all tools."
|
||
signIn = "Sign In"
|
||
|
||
[login]
|
||
accountCreatedSuccess = "Account created successfully! You can now sign in."
|
||
backToSignIn = "Back to sign in"
|
||
changePasswordWarning = "Please change your password after logging in for the first time"
|
||
createAccount = "Create an account"
|
||
credentialsUpdated = "Your credentials have been updated. Please sign in again."
|
||
defaultCredentials = "Default Login Credentials"
|
||
email = "Email"
|
||
enterEmail = "Enter your email"
|
||
enterEmailForMagicLink = "Enter your email for magic link"
|
||
enterMfaCode = "Enter 6-digit code"
|
||
enterPassword = "Enter your password"
|
||
enterUsername = "Enter username"
|
||
failedToSignIn = "Failed to sign in with {{provider}}: {{message}}"
|
||
forgotPassword = "Forgot your password?"
|
||
loggingIn = "Logging In..."
|
||
logIn = "Log In"
|
||
login = "Login"
|
||
magicLinkSent = "Magic link sent to {{email}}! Check your email and click the link to sign in."
|
||
mfaCode = "Authentication Code"
|
||
mfaRequired = "Two-factor code required"
|
||
or = "Or"
|
||
password = "Password"
|
||
passwordChangedSuccess = "Password changed successfully! Please sign in with your new password."
|
||
passwordResetSent = "Password reset link sent to {{email}}! Check your email and follow the instructions."
|
||
passwordUpdatedSuccess = "Your password has been updated successfully."
|
||
pleaseEnterBoth = "Please enter both email and password"
|
||
pleaseEnterEmail = "Please enter your email address"
|
||
resetHelp = "Enter your email to receive a secure link to reset your password. If the link has expired, please request a new one."
|
||
resetYourPassword = "Reset your password"
|
||
sending = "Sending…"
|
||
sendMagicLink = "Send Magic Link"
|
||
sendResetLink = "Send reset link"
|
||
sessionExpired = "Your session has expired. Please sign in again."
|
||
signin = "Sign in"
|
||
signingIn = "Signing in..."
|
||
signInWith = "Sign in with"
|
||
title = "Sign in"
|
||
unexpectedError = "Unexpected error: {{message}}"
|
||
updatePassword = "Update password"
|
||
useEmailInstead = "Login with email"
|
||
useMagicLink = "Use magic link instead"
|
||
username = "Username"
|
||
youAreLoggedIn = "You are logged in!"
|
||
|
||
[login.slides.edit]
|
||
alt = "Edit PDFs"
|
||
subtitle = "With over a dozen tools to help you redact, sign, read and manipulate PDFs, you will be sure to find what you are looking for."
|
||
title = "Edit PDFs to display/secure the information you want"
|
||
|
||
[login.slides.overview]
|
||
alt = "Stirling PDF overview"
|
||
subtitle = "A privacy-first cloud suite for PDFs that lets you convert, sign, redact, and manage documents, along with 50+ other powerful tools."
|
||
title = "Your one-stop-shop for all your PDF needs."
|
||
|
||
[login.slides.secure]
|
||
alt = "Secure PDFs"
|
||
subtitle = "Add passwords, redact content, and manage certificates with ease."
|
||
title = "Protect sensitive information in your PDFs"
|
||
|
||
[margin]
|
||
large = "Large"
|
||
medium = "Medium"
|
||
small = "Small"
|
||
xLarge = "Extra Large"
|
||
|
||
[MarkdownToPDF]
|
||
header = "Markdown To PDF"
|
||
tags = "markup,web-content,transformation,convert,md"
|
||
title = "Markdown To PDF"
|
||
|
||
[merge]
|
||
goToFileEditor = "Go to file editor"
|
||
submit = "Merge"
|
||
tags = "merge,Page operations,Back end,server side"
|
||
title = "Merge"
|
||
viewerModeHint = "Merge needs 2 or more files. Head to the file editor to add them."
|
||
|
||
[merge.error]
|
||
failed = "An error occurred while merging the PDFs."
|
||
|
||
[merge.generateTableOfContents]
|
||
label = "Generate table of contents in the merged file?"
|
||
|
||
[merge.generateTableOfContents.tooltip]
|
||
description = "Automatically creates a clickable table of contents in the merged PDF based on the original file names and page numbers."
|
||
title = "Generate Table of Contents"
|
||
|
||
[merge.removeDigitalSignature]
|
||
label = "Remove digital signature in the merged file?"
|
||
|
||
[merge.removeDigitalSignature.tooltip]
|
||
description = "Digital signatures will be invalidated when merging files. Check this to remove them from the final merged PDF."
|
||
title = "Remove Digital Signature"
|
||
|
||
[merge.sortBy]
|
||
ascending = "Ascending"
|
||
dateModified = "Date Modified"
|
||
descending = "Descending"
|
||
description = "Files will be merged in the order shown. Drag to reorder or sort below."
|
||
filename = "File Name"
|
||
label = "Sort By"
|
||
sort = "Sort"
|
||
|
||
[merge.tooltip.header]
|
||
title = "Merge Settings Overview"
|
||
|
||
[mobileScanner]
|
||
addToBatch = "Add to Batch"
|
||
back = "Back"
|
||
batchImages = "Batch"
|
||
camera = "Camera"
|
||
cameraAccessDenied = "Camera access denied. Please enable camera access."
|
||
cameraDescription = "Scan documents using your device camera with automatic edge detection"
|
||
capture = "Capture Photo"
|
||
chooseMethod = "Choose Upload Method"
|
||
chooseMethodDescription = "Select how you want to scan and upload documents"
|
||
clearBatch = "Clear"
|
||
edgeDetection = "Edge Detection"
|
||
fileDescription = "Upload existing photos or documents from your device"
|
||
fileUpload = "File Upload"
|
||
flash = "Flash"
|
||
flashlight = "Flashlight"
|
||
httpsRequired = "Camera access requires HTTPS or localhost. Please use HTTPS or access via localhost."
|
||
noSession = "Invalid Session"
|
||
noSessionMessage = "Please scan a valid QR code to access this page."
|
||
processing = "Processing..."
|
||
retake = "Retake"
|
||
selectFilesPrompt = "Select files to upload"
|
||
selectImage = "Select Image"
|
||
sessionExpired = "This session has expired. Please refresh and try again."
|
||
sessionInvalid = "Session Error"
|
||
sessionNotFound = "Session not found. Please refresh and try again."
|
||
sessionValidationError = "Unable to verify session. Please try again."
|
||
title = "Mobile Scanner"
|
||
upload = "Upload"
|
||
uploadAll = "Upload All"
|
||
uploadFailed = "Upload failed. Please try again."
|
||
uploading = "Uploading..."
|
||
uploadSuccess = "Upload Successful!"
|
||
uploadSuccessMessage = "Your images have been transferred."
|
||
validating = "Validating session..."
|
||
|
||
[mobileUpload]
|
||
description = "Scan to upload photos. Images auto-convert to PDF."
|
||
descriptionNoConvert = "Scan to upload photos from your mobile device."
|
||
error = "Connection Error"
|
||
expiryWarning = "Session Expiring Soon"
|
||
expiryWarningMessage = "This QR code will expire in {{seconds}} seconds. A new code will be generated automatically."
|
||
filesReceived = "{{count}} file(s) received"
|
||
instructions = "Scan with your phone camera. Images convert to PDF automatically."
|
||
instructionsNoConvert = "Scan with your phone camera to upload files."
|
||
pollingError = "Error checking for files"
|
||
sessionCreateError = "Failed to create session"
|
||
title = "Upload from Mobile"
|
||
|
||
[multiTool]
|
||
tags = "Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move,delete,migrate,divide"
|
||
title = "PDF Multi Tool"
|
||
|
||
[navbar]
|
||
search = "Search"
|
||
|
||
[oauth.error]
|
||
message = "Authentication was not successful. You can close this window and try again."
|
||
title = "Authentication Failed"
|
||
|
||
[oauth.success]
|
||
message = "You can close this window and return to Stirling PDF."
|
||
title = "Authentication Successful"
|
||
|
||
[oauthConsent]
|
||
approve = "Allow access"
|
||
approving = "Allowing..."
|
||
decisionFailed = "Could not submit your decision. Please try again."
|
||
deny = "Deny"
|
||
denying = "Denying..."
|
||
loadFailed = "This authorization request is invalid or has expired. Close this tab and try connecting again from the app."
|
||
loading = "Loading authorization request..."
|
||
missingId = "Missing authorization request. Start the connection from your app and try again."
|
||
redirecting = "Returning you to the app..."
|
||
requesting = "{{app}} wants to access your Stirling PDF account"
|
||
scopesIntro = "This will allow {{app}} to:"
|
||
signedInAs = "Signed in as {{name}}"
|
||
signInButton = "Sign in to continue"
|
||
signInPrompt = "Sign in to your Stirling PDF account to continue connecting the app."
|
||
title = "Authorize access"
|
||
unknownApp = "A third-party application"
|
||
|
||
[oauthConsent.access]
|
||
actAsYou = "Act as you - everything {{app}} does runs under your account and counts towards your usage"
|
||
tools = "Use your Stirling PDF tools on your behalf - convert, edit, sign, secure and process your documents"
|
||
|
||
[oauthConsent.scope]
|
||
email = "See your email address"
|
||
openid = "Confirm your identity"
|
||
phone = "See your phone number"
|
||
profile = "See your basic profile information"
|
||
|
||
[ocr]
|
||
desc = "Cleanup scans and detects text from images within a PDF and re-adds it as text."
|
||
tags = "recognition,text,image,scan,read,identify,detection,editable"
|
||
title = "OCR / Scan Cleanup"
|
||
|
||
[ocr.error]
|
||
failed = "OCR operation failed"
|
||
|
||
[ocr.languagePicker]
|
||
additionalLanguages = "Looking for additional languages?"
|
||
loading = "Loading available languages..."
|
||
viewSetupGuide = "View setup guide →"
|
||
|
||
[ocr.operation]
|
||
submit = "Process OCR and Review"
|
||
|
||
[ocr.results]
|
||
title = "OCR Results"
|
||
|
||
[ocr.settings]
|
||
title = "Settings"
|
||
|
||
[ocr.settings.advancedOptions]
|
||
clean = "Clean input file"
|
||
cleanFinal = "Clean final output"
|
||
deskew = "Deskew pages"
|
||
label = "Processing Options"
|
||
sidecar = "Create a text file"
|
||
|
||
[ocr.settings.compatibilityMode]
|
||
label = "Compatibility Mode"
|
||
|
||
[ocr.settings.languages]
|
||
label = "Languages"
|
||
placeholder = "Select languages"
|
||
|
||
[ocr.settings.ocrMode]
|
||
auto = "Auto (skip text layers)"
|
||
force = "Force (re-OCR all, replace text)"
|
||
label = "OCR Mode"
|
||
strict = "Strict (abort if text found)"
|
||
|
||
[ocr.tooltip.advanced.clean]
|
||
text = "Preprocesses the input by removing noise, enhancing contrast, and optimizing the image for better OCR recognition before processing."
|
||
title = "Clean Input File"
|
||
|
||
[ocr.tooltip.advanced.cleanFinal]
|
||
text = "Post-processes the final PDF by removing OCR artifacts and optimizing the text layer for better readability and smaller file size."
|
||
title = "Clean Final Output"
|
||
|
||
[ocr.tooltip.advanced.compatibility]
|
||
text = "Uses OCR 'sandwich PDF' mode: results in larger files, but more reliable with certain languages and older PDF software. By default we use hOCR for smaller, modern PDFs."
|
||
title = "Compatibility Mode"
|
||
|
||
[ocr.tooltip.advanced.deskew]
|
||
text = "Automatically corrects skewed or tilted pages to improve OCR accuracy. Useful for scanned documents that weren't perfectly aligned."
|
||
title = "Deskew Pages"
|
||
|
||
[ocr.tooltip.advanced.header]
|
||
title = "Advanced OCR Processing"
|
||
|
||
[ocr.tooltip.advanced.sidecar]
|
||
text = "Generates a separate .txt file alongside the PDF containing all extracted text content for easy access and processing."
|
||
title = "Create Text File"
|
||
|
||
[ocr.tooltip.header]
|
||
title = "OCR Settings Overview"
|
||
|
||
[ocr.tooltip.languages]
|
||
text = "Improve OCR accuracy by specifying the expected languages. Choose one or more languages to guide detection."
|
||
title = "Languages"
|
||
|
||
[ocr.tooltip.mode]
|
||
bullet1 = "Auto skips pages that already contain text layers."
|
||
bullet2 = "Force re-OCRs every page and replaces all the text."
|
||
bullet3 = "Strict halts if any selectable text is found."
|
||
text = "Optical Character Recognition (OCR) helps you turn scanned or screenshotted pages into text you can search, copy, or highlight."
|
||
title = "OCR Mode"
|
||
|
||
[ocr.tooltip.output]
|
||
bullet1 = "Searchable PDF embeds text behind the original image."
|
||
bullet2 = "HOCR XML returns a structured machine-readable file."
|
||
bullet3 = "Plain-text sidecar creates a separate .txt file with raw content."
|
||
text = "Decide how you want the text output formatted:"
|
||
title = "Output"
|
||
|
||
[onboarding]
|
||
activeFiles = "The <strong>Active Files</strong> view shows all of the PDFs you have loaded into the tool, and allows you to select which ones to process."
|
||
allTools = "This is the <strong>Tools</strong> panel, where you can browse and select from all available PDF tools."
|
||
cropSettings = "Now that we've selected the file we want crop, we can configure the Crop tool to choose the area that we want to crop the PDF to."
|
||
fileCheckbox = "Clicking one of the files selects it for processing. You can select multiple files for batch operations."
|
||
fileReplacement = "The modified file will replace the original file in the Workbench automatically, allowing you to easily run it through more tools."
|
||
filesButton = "The <strong>Files</strong> button on the Quick Access bar allows you to upload PDFs to use the tools on."
|
||
fileSources = "You can upload new files or access recent files from here. For the tour, we'll just use a sample file."
|
||
finish = "Finish"
|
||
next = "Next"
|
||
pinButton = "You can use the <strong>Pin</strong> button if you'd rather your files stay active after running tools on them."
|
||
results = "After the tool has finished running, the <strong>Review</strong> step will show a preview of the results in this panel, and allow you to undo the operation or download the file. "
|
||
runButton = "Once the tool has been configured, this button allows you to run the tool on all the selected PDFs."
|
||
selectCropTool = "Let's select the <strong>Crop</strong> tool to demonstrate how to use one of the tools."
|
||
toolInterface = "This is the <strong>Crop</strong> tool interface. As you can see, there's not much there because we haven't added any PDF files to work with yet."
|
||
workbench = "This is the <strong>Workbench</strong> - the main area where you view and edit your PDFs."
|
||
wrapUp = "You're all set! You can replay this tour anytime - just open <strong>Settings</strong> and find it here in the <strong>Tours</strong> section under Help."
|
||
|
||
[onboarding.buttons]
|
||
back = "Back"
|
||
download = "Download →"
|
||
next = "Next →"
|
||
showMeAround = "Show me around"
|
||
skipForNow = "Skip for now"
|
||
skipTheTour = "Skip the tour"
|
||
|
||
[onboarding.desktopInstall]
|
||
body = "Stirling works best as a desktop app. You can use it offline, access documents faster, and make edits locally on your computer."
|
||
title = "Download"
|
||
titleWithOs = "Download for {{osLabel}}"
|
||
|
||
[onboarding.mfa]
|
||
authenticationCode = "Authentication code"
|
||
qrCodeLoading = "Generating your QR code…"
|
||
|
||
[onboarding.planOverview]
|
||
adminBodyLoginDisabled = "Once you enable login mode, you can manage users, configure settings, and monitor server health. The first <strong>{{freeTierLimit}}</strong> people on your server get to use Stirling free of charge."
|
||
adminBodyLoginEnabled = "As an admin, you can manage users, configure settings, and monitor server health. The first <strong>{{freeTierLimit}}</strong> people on your server get to use Stirling free of charge."
|
||
adminTitle = "Admin Overview"
|
||
userBody = "Invite teammates, assign roles, and keep your documents organized in one secure workspace. Enable login mode whenever you're ready to grow beyond solo use."
|
||
userTitle = "Plan Overview"
|
||
|
||
[onboarding.saas.freeEditor]
|
||
freeLine = "The editor is now <free>completely free</free>."
|
||
premium = "We've added loads of new features, including <strong>Policies</strong> and <strong>Agent Chat</strong>."
|
||
title = "Welcome to Stirling"
|
||
|
||
[onboarding.saas.team]
|
||
addButton = "Add"
|
||
createBody = "Work on documents together: teammates share files, automations and your plan. Add the first member by email to create your team."
|
||
createTitle = "Create your team"
|
||
inviteBody = "Everyone on your team shares files, automations and your plan. Add teammates by email and they'll get an invite."
|
||
inviteTitle = "Invite members to your team"
|
||
|
||
[onboarding.saas.usage]
|
||
body = "Automations, AI and API requests draw from your free allowance. Manual editing never counts against it."
|
||
title = "Your free Processor allowance"
|
||
|
||
[onboarding.securityCheck]
|
||
message = "The application has undergone significant changes recently. Your server admin's attention may be required. Please confirm your role to continue."
|
||
roleAdmin = "Admin"
|
||
rolePlaceholder = "Confirm your role"
|
||
roleUser = "User"
|
||
|
||
[onboarding.serverLicense]
|
||
freeBody = "Our <strong>Open-Core</strong> licensing permits up to <strong>{{freeTierLimit}}</strong> users for free per server. To scale uninterrupted, we recommend the Stirling Server plan - <strong>unlimited seats</strong> and <strong>SSO support</strong> for $99/server/mo."
|
||
freeTitle = "Server License"
|
||
overLimitBody = "Our licensing permits up to <strong>{{freeTierLimit}}</strong> users for free per server. You have <strong>{{overLimitUserCopy}}</strong> Stirling users. To continue uninterrupted, upgrade to the Stirling Server plan - <strong>unlimited seats</strong>, PDF text editing, and full admin control for $99/server/mo."
|
||
overLimitTitle = "Server License Needed"
|
||
seePlans = "See Plans →"
|
||
upgrade = "Upgrade now →"
|
||
|
||
[onboarding.tourOverview]
|
||
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 = "Tour Overview"
|
||
|
||
[onboarding.welcomeSlide]
|
||
body = "Stirling PDF is now ready for teams of all sizes. This update includes a new layout, powerful new admin capabilities, and our most requested feature - <strong>Edit Text</strong>."
|
||
title = "Welcome to Stirling"
|
||
|
||
[onboarding.whatsNew]
|
||
activeFilesView = "Use Active Files to see everything you have open and pick what to work on."
|
||
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."
|
||
leftPanel = "The left <strong>Tools</strong> panel lists everything you can do. Browse categories or search to find a tool quickly."
|
||
pageEditorView = "Switch to the Page Editor to reorder, rotate, or delete pages."
|
||
quickAccess = "Start at the <strong>Quick Access</strong> rail to jump between Reader, Automate, your files, and all the tours."
|
||
topBar = "The top bar lets you swap between <strong>Viewer</strong>, <strong>Page Editor</strong>, and <strong>Active Files</strong>."
|
||
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."
|
||
|
||
[overlay-pdfs]
|
||
desc = "Overlay one PDF on top of another"
|
||
submit = "Submit"
|
||
tags = "Overlay"
|
||
title = "Overlay PDFs"
|
||
|
||
[overlay-pdfs.counts]
|
||
item = "Count for file"
|
||
label = "Overlay Counts (for Fixed Repeat Mode)"
|
||
noFiles = "Add overlay files to configure counts"
|
||
|
||
[overlay-pdfs.error]
|
||
failed = "An error occurred while overlaying PDFs."
|
||
|
||
[overlay-pdfs.mode]
|
||
fixedRepeat = "Fixed Repeat Overlay"
|
||
interleaved = "Interleaved Overlay"
|
||
label = "Select Overlay Mode"
|
||
sequential = "Sequential Overlay"
|
||
|
||
[overlay-pdfs.overlayFiles]
|
||
addMore = "Add more PDFs..."
|
||
label = "Select Overlay PDF Files"
|
||
placeholder = "Choose PDF(s)..."
|
||
|
||
[overlay-pdfs.position]
|
||
background = "Background"
|
||
foreground = "Foreground"
|
||
label = "Select Overlay Position"
|
||
|
||
[overlay-pdfs.results]
|
||
title = "Overlay Results"
|
||
|
||
[overlay-pdfs.settings]
|
||
title = "Settings"
|
||
|
||
[overlay-pdfs.tooltip.counts]
|
||
text = "Provide a positive number for each overlay file showing how many pages to take before moving to the next. Required when mode is Fixed Repeat."
|
||
title = "Counts (Fixed Repeat only)"
|
||
|
||
[overlay-pdfs.tooltip.description]
|
||
text = "Combine a base PDF with one or more overlay PDFs. Overlays can be applied page-by-page in different modes and placed in the foreground or background."
|
||
title = "Description"
|
||
|
||
[overlay-pdfs.tooltip.header]
|
||
title = "Overlay PDFs Overview"
|
||
|
||
[overlay-pdfs.tooltip.mode]
|
||
fixedRepeat = "Fixed Repeat Overlay: Take a set number of pages from each overlay before moving to the next. Use Counts to set the numbers."
|
||
interleaved = "Interleaved Overlay: Take one page from each overlay in turn."
|
||
sequential = "Sequential Overlay: Use pages from the first overlay PDF until it ends, then move to the next."
|
||
text = "Choose how to distribute overlay pages across the base PDF pages."
|
||
title = "Overlay Mode"
|
||
|
||
[overlay-pdfs.tooltip.overlayFiles]
|
||
text = "Select one or more PDFs to overlay on the base. The order of these files affects how pages are applied in Sequential and Fixed Repeat modes."
|
||
title = "Overlay Files"
|
||
|
||
[overlay-pdfs.tooltip.position]
|
||
text = "Foreground places the overlay on top of the page. Background places it behind."
|
||
title = "Overlay Position"
|
||
|
||
[pageEdit]
|
||
deselectAll = "None"
|
||
selectAll = "Check All"
|
||
|
||
[pageEditor]
|
||
title = "Page Editor"
|
||
|
||
[pageEditor.emptyState]
|
||
body = "Add files to start editing pages"
|
||
title = "No PDF files loaded"
|
||
|
||
[pageEditor.toolbar]
|
||
delete = "Delete Selected"
|
||
redo = "Redo"
|
||
rotateLeft = "Rotate Selected Left"
|
||
rotateRight = "Rotate Selected Right"
|
||
undo = "Undo"
|
||
|
||
[pageExtracter]
|
||
title = "Extract Pages"
|
||
|
||
[pageLayout]
|
||
addBorder = "Add Borders"
|
||
borderWidth = "Border Thickness"
|
||
bottom = "Bottom Margin"
|
||
cols = "Columns"
|
||
colsPlaceholder = "Enter columns"
|
||
innerMargin = "Inner Margin"
|
||
left = "Left Margin"
|
||
pagesPerSheet = "Pages per sheet:"
|
||
right = "Right Margin"
|
||
rows = "Rows"
|
||
rowsPlaceholder = "Enter rows"
|
||
submit = "Submit"
|
||
tags = "merge,composite,single-view,organize"
|
||
title = "Multi Page Layout"
|
||
top = "Top Margin"
|
||
|
||
[pageLayout.advanced.tooltip.arrangement]
|
||
bullet1 = "By Rows: Fill each row first."
|
||
bullet2 = "By Columns: Fill each column first."
|
||
text = "Controls whether pages fill the grid row-by-row or column-by-column."
|
||
title = "Page Arrangement"
|
||
|
||
[pageLayout.advanced.tooltip.header]
|
||
title = "Advanced Layout Options"
|
||
|
||
[pageLayout.advanced.tooltip.orientation]
|
||
text = "Choose the final sheet direction. Portrait works better for tall content, while landscape fits wider layouts."
|
||
title = "Orientation"
|
||
|
||
[pageLayout.advanced.tooltip.readingDirection]
|
||
bullet1 = "LTR: Left to right order."
|
||
bullet2 = "RTL: Right to left order."
|
||
text = "Sets horizontal ordering in the grid, useful for left-to-right and right-to-left document conventions."
|
||
title = "Reading Direction"
|
||
|
||
[pageLayout.arrangement]
|
||
byColumns = "By Columns"
|
||
byRows = "By Rows"
|
||
label = "Page arrangement:"
|
||
|
||
[pageLayout.desc]
|
||
16 = "Place 16 pages on a single sheet (4 × 4 grid)."
|
||
2 = "Place 2 pages side-by-side on a single sheet."
|
||
4 = "Place 4 pages on a single sheet (2 × 2 grid)."
|
||
9 = "Place 9 pages on a single sheet (3 × 3 grid)."
|
||
|
||
[pageLayout.error]
|
||
failed = "An error occurred while creating the multi-page layout."
|
||
innerMarginTooLarge = "Inner margin is too large for the selected layout."
|
||
outerHorizontalMarginsTooLarge = "Left/Right margins are too large for this page size."
|
||
outerVerticalMarginsTooLarge = "Top/Bottom margins are too large for this page size."
|
||
|
||
[pageLayout.margins]
|
||
borderThicknessPlaceholder = "Enter border thickness"
|
||
bottomPlaceholder = "Enter bottom margin"
|
||
innerPlaceholder = "Enter inner margin"
|
||
leftPlaceholder = "Enter left margin"
|
||
rightPlaceholder = "Enter right margin"
|
||
topPlaceholder = "Enter top margin"
|
||
|
||
[pageLayout.marginsBorders.tooltip.borders]
|
||
text = "Enable borders to draw lines around each placed page. This can help visual separation or trimming."
|
||
title = "Add Borders"
|
||
|
||
[pageLayout.marginsBorders.tooltip.borderWidth]
|
||
text = "Border thickness is only applied when borders are enabled. Higher values produce thicker lines."
|
||
title = "Border Thickness"
|
||
|
||
[pageLayout.marginsBorders.tooltip.header]
|
||
title = "Margins and Borders"
|
||
|
||
[pageLayout.marginsBorders.tooltip.innerMargin]
|
||
text = "Inner margin adds spacing between cells in the page grid to improve separation and readability."
|
||
title = "Inner Margin"
|
||
|
||
[pageLayout.marginsBorders.tooltip.margins]
|
||
text = "Use top, bottom, left, and right margins to control spacing around the full sheet output."
|
||
title = "Margins"
|
||
|
||
[pageLayout.mode]
|
||
custom = "Custom"
|
||
default = "Default"
|
||
label = "Mode:"
|
||
|
||
[pageLayout.orientation]
|
||
label = "Orientation:"
|
||
landscape = "Landscape"
|
||
portrait = "Portrait"
|
||
|
||
[pageLayout.readingDirection]
|
||
label = "Reading Direction:"
|
||
ltr = "Left to Right"
|
||
rtl = "Right to Left"
|
||
|
||
[pageLayout.tooltip.header]
|
||
title = "Page Layout Guide"
|
||
|
||
[pageLayout.tooltip.mode]
|
||
bullet1 = "Default: Pick a preset and the grid is calculated automatically."
|
||
bullet2 = "Custom: Set rows and columns manually."
|
||
text = "Choose how the grid is configured:"
|
||
title = "Mode"
|
||
|
||
[pageLayout.tooltip.overview]
|
||
text = "Fit multiple pages onto a single sheet for handouts or to save paper."
|
||
title = "What is Page Layout?"
|
||
|
||
[pageLayout.tooltip.pagesPerSheet]
|
||
text = "Choose how many pages per sheet (e.g. 4 → 2×2, 9 → 3×3)."
|
||
title = "Pages per Sheet (Default Mode)"
|
||
|
||
[pageLayout.tooltip.rowsCols]
|
||
text = "Set exact grid dimensions. Total pages per sheet = rows × columns."
|
||
title = "Rows & Columns (Custom Mode)"
|
||
|
||
[pageRemover]
|
||
title = "Page Remover"
|
||
|
||
[pageSelection.tooltip]
|
||
description = "Choose which pages to use for the operation. Supports single pages, ranges, formulas, and the all keyword."
|
||
|
||
[pageSelection.tooltip.complex]
|
||
bullet1 = "<strong>1,3-5,8,2n</strong> → pages 1, 3–5, 8, plus evens"
|
||
bullet2 = "<strong>10-,2n-1</strong> → from page 10 to end + odd pages"
|
||
description = "Mix different types."
|
||
title = "Complex Combinations"
|
||
|
||
[pageSelection.tooltip.header]
|
||
title = "Page Selection Guide"
|
||
|
||
[pageSelection.tooltip.individual]
|
||
bullet1 = "<strong>1,3,5</strong> → selects pages 1, 3, 5"
|
||
bullet2 = "<strong>2,7,12</strong> → selects pages 2, 7, 12"
|
||
description = "Enter numbers separated by commas."
|
||
title = "Individual Pages"
|
||
|
||
[pageSelection.tooltip.mathematical]
|
||
bullet1 = "<strong>2n</strong> → all even pages (2, 4, 6…)"
|
||
bullet2 = "<strong>2n-1</strong> → all odd pages (1, 3, 5…)"
|
||
bullet3 = "<strong>3n</strong> → every 3rd page (3, 6, 9…)"
|
||
bullet4 = "<strong>4n-1</strong> → pages 3, 7, 11, 15…"
|
||
description = "Use n in formulas for patterns."
|
||
title = "Mathematical Functions"
|
||
|
||
[pageSelection.tooltip.ranges]
|
||
bullet1 = "<strong>3-6</strong> → selects pages 3–6"
|
||
bullet2 = "<strong>10-15</strong> → selects pages 10–15"
|
||
bullet3 = "<strong>5-</strong> → selects pages 5 to end"
|
||
description = "Use - for consecutive pages."
|
||
title = "Page Ranges"
|
||
|
||
[pageSelection.tooltip.special]
|
||
bullet1 = "<strong>all</strong> → selects all pages"
|
||
title = "Special Keywords"
|
||
|
||
[payg.activity]
|
||
docs = "docs"
|
||
empty = "No billable activity yet this period."
|
||
subtitle = "Only AI and automation draw from your budget. Everyday tools are free and aren't listed here."
|
||
title = "Recent billable activity"
|
||
|
||
[payg.cap]
|
||
amount = "Cap amount"
|
||
custom = "Custom"
|
||
docsEstimate = "≈ {{docs}} processed PDFs / month"
|
||
docsRate = "at {{rate}} / PDF"
|
||
noCapDesc = "Usage is billed without an upper limit. You can re-enable a cap at any time."
|
||
noCapLabel = "No cap"
|
||
noneShort = "No cap"
|
||
perMonth = "/ month"
|
||
save = "Update cap"
|
||
subtitle = "Set your maximum spend. We convert this to PDFs using the current price tier."
|
||
title = "Monthly spending cap"
|
||
|
||
[payg.checkout]
|
||
connecting = "Connecting to Stripe…"
|
||
errorTitle = "Stripe error"
|
||
|
||
[payg.checkout.error]
|
||
startFailed = "Couldn't start checkout session"
|
||
|
||
[payg.checkout.mock]
|
||
backend = "Backend is in mock mode; no real Stripe session was created."
|
||
continue = "Continue with mock subscription"
|
||
noKey = "VITE_STRIPE_PUBLISHABLE_KEY is unset. Real iframe mounts here once configured."
|
||
title = "Stripe Embedded Checkout (mock mode)"
|
||
|
||
[payg.confirm]
|
||
body = "Your team can now run automation, AI, and API operations beyond your 500 free PDFs."
|
||
capValue = "{{symbol}}{{amount}} / month"
|
||
noCap = "No cap"
|
||
note = "You can change your cap, cancel, or open the Stripe customer portal any time from this page."
|
||
summaryLabel = "Monthly ceiling"
|
||
title = "Welcome to the Processor plan"
|
||
|
||
[payg.docHelp]
|
||
billable = "Only automation runs, AI tools, and API calls count. Manual tools in the editor are always free."
|
||
chains = "Running the same file through several steps of one automation counts it once, not once per step."
|
||
perFile = "Each file you process counts as one PDF. Very long or very large files can count as more than one."
|
||
refunds = "If a job fails on its first step, the PDF is credited back automatically."
|
||
toggle = "What counts as a PDF?"
|
||
|
||
[payg.error]
|
||
body = "We couldn't reach the billing service. Refresh the page to try again."
|
||
title = "Couldn't load your plan"
|
||
|
||
[payg.free.cta]
|
||
benefit1Body = "chain tools, schedule runs, batch process"
|
||
benefit1Title = "Automation pipelines"
|
||
benefit2Body = "summarize, classify, redact, AI-OCR"
|
||
benefit2Title = "AI tools"
|
||
benefit3Body = "call any Stirling endpoint programmatically"
|
||
benefit3Title = "API access"
|
||
button = "Turn on Processor →"
|
||
reassurance = "No minimum · Set a $0 cap to test · Cancel anytime"
|
||
subtitle = "Keep going past your 500 free PDFs with automation, AI, and the API. Set a monthly ceiling, so you stay in control."
|
||
title = "Turn on the Processor plan"
|
||
|
||
[payg.free.editor]
|
||
eyebrow = "Editor plan · Always free"
|
||
|
||
[payg.free.header]
|
||
freeBody = "View, edit, merge, split, sign, watermark, compress, convert and manual OCR — as much as you want, no matter where you trigger it."
|
||
freeTitle = "Unlimited PDF editing"
|
||
|
||
[payg.free.hero]
|
||
capSuffix = "/ {{limit}} free PDFs"
|
||
metaCategories = "Automation · AI · API requests"
|
||
|
||
[payg.free.member]
|
||
ownerOnly = "Only your team owner can turn on Processor. Manual tools stay free for you to use as much as you like."
|
||
|
||
[payg.free.proc]
|
||
eyebrow = "Processor plan · metered"
|
||
|
||
[payg.free.state]
|
||
approachingLimit = "Approaching limit"
|
||
limitReached = "Limit reached"
|
||
plentyLeft = "Plenty left"
|
||
|
||
[payg.gates]
|
||
ai = "AI tools (AI Create, suggestions, AI-OCR)"
|
||
automation = "Automations & pipelines"
|
||
client = "Browser-only tools (viewer, page editor, file management)"
|
||
offsite = "Server tools (compress, OCR, convert, watermark…)"
|
||
pauses = "pauses at cap"
|
||
title = "What happens when the cap is reached"
|
||
|
||
[payg.header]
|
||
eyebrow = "Processor plan · {{start}} – {{end}}"
|
||
freeBody = "View, edit, merge, split, sign, watermark, compress, convert and manual OCR — as much as you want, no matter where you trigger it."
|
||
freeLabel = "Always free"
|
||
freeTitle = "Unlimited PDF editing"
|
||
meterBody = "{{limit}} free PDFs to start, then billed per PDF up to your cap."
|
||
meterLabel = "Metered"
|
||
meterTitle = "Automation · AI · API"
|
||
|
||
[payg.member]
|
||
askLeader = "Only your team owner can change the cap."
|
||
|
||
[payg.members]
|
||
docs = "PDFs"
|
||
subtitle = "Billable PDFs each teammate has processed this period."
|
||
title = "Team member usage"
|
||
|
||
[payg.role]
|
||
leader = "Team owner"
|
||
member = "Member"
|
||
|
||
[payg.signupRequired]
|
||
body = "Stirling PDF gives every signed-up account 500 free operations, enough to keep most workflows humming without paying a cent. You're currently using Stirling as a guest, which doesn't include billable tools like AI, automations, or hosted processing."
|
||
cancel = "Not now"
|
||
cta = "Sign up free"
|
||
subtext = "Creating an account is free and takes a few seconds. No credit card required."
|
||
title = "Sign up to use {{category}}"
|
||
|
||
[payg.signupRequired.category]
|
||
ai = "AI features"
|
||
api = "this tool"
|
||
automation = "automations"
|
||
default = "this feature"
|
||
|
||
[payg.spendCapMeter]
|
||
capSuffix = "/ {{amount}} cap"
|
||
metaCategories = "Automation · AI · API spend"
|
||
resets = "Resets each billing period"
|
||
|
||
[payg.state]
|
||
degraded = "Cap reached"
|
||
full = "Healthy"
|
||
warned = "Approaching cap"
|
||
|
||
[payg.stripe]
|
||
open = "Open billing portal"
|
||
subtitle = "Receipts, invoices, payment method, billing currency."
|
||
title = "Manage billing in Stripe"
|
||
|
||
[payg.stripe.toast.unavailable]
|
||
body = "Billing portal isn't available right now. Try again in a moment."
|
||
title = "Billing portal unavailable"
|
||
|
||
[payg.upgrade]
|
||
backAria = "Back"
|
||
closeAria = "Close"
|
||
|
||
[payg.upgrade.button]
|
||
cancel = "Cancel"
|
||
continue = "Continue →"
|
||
finish = "Finish"
|
||
|
||
[payg.upgrade.cap]
|
||
help = "We'll never charge above this. Set $0 if you want to keep everything free while testing."
|
||
title = "Set your monthly spend ceiling"
|
||
usdNote = "Estimated in USD. You can adjust your cap any time after subscribing, in your own currency."
|
||
|
||
[payg.upgrade.checkout]
|
||
capValue = "{{symbol}}{{amount}} / month"
|
||
edit = "Edit"
|
||
help = "Stripe handles your card details. Stirling never sees them."
|
||
loading = "Loading checkout…"
|
||
noCap = "No cap"
|
||
title = "Add your payment method"
|
||
|
||
[payg.upgrade.help]
|
||
aiBody = "summarize, classify, redact, AI-OCR"
|
||
aiTitle = "AI tools"
|
||
apiBody = "programmatic access to any Stirling endpoint"
|
||
apiTitle = "API calls"
|
||
automationBody = "chained tools or scheduled runs that don't need clicks"
|
||
automationTitle = "Automation pipelines"
|
||
footnote = "Manual tools (viewing, editing, merging, splitting, watermarking, compressing, manual OCR) are always free, even past 500. The distinction is the type of work, not where you click."
|
||
title = "What we count toward billing"
|
||
|
||
[payg.upgrade.promise]
|
||
body = "You only pay for automation pipelines, AI tools, and API calls, the work that goes beyond a single click. Edit, merge, split, sign, compress as much as you want, no charge."
|
||
highlight = "Manual tools stay free, always."
|
||
|
||
[payg.upgrade.steps]
|
||
cap = "Set monthly ceiling"
|
||
payment = "Add payment method"
|
||
|
||
[payg.upgrade.title]
|
||
confirm = "You're subscribed"
|
||
default = "Upgrade to Processor plan"
|
||
|
||
[payg.usage]
|
||
breakdown = "AI {{ai}} • Automation {{automation}} • API {{api}}"
|
||
capLine = "{{cap}}/mo cap"
|
||
estBill = "≈ {{amount}} so far this period"
|
||
firstFree = "First {{free}} free"
|
||
noCap = "No monthly cap"
|
||
ofLimitProcessed = "/ {{limit}} PDFs processed"
|
||
processed = "PDFs processed"
|
||
resetsIn = "Resets in {{days}} days"
|
||
resetsTomorrow = "Resets tomorrow"
|
||
thisPeriod = "This billing period"
|
||
|
||
[payment]
|
||
canCloseWindow = "You can now close this window."
|
||
error = "Payment Error"
|
||
generatingLicense = "Generating your license key..."
|
||
licenseActivated = "License activated! Your license key has been saved. A confirmation email has been sent to your registered email address."
|
||
licenseDelayed = "Payment successful! Your license is being generated. You will receive an email with your license key shortly. If you don't receive it within 10 minutes, please contact support."
|
||
licenseDelayedMessage = "Your license key is being generated. Please check your email shortly or contact support."
|
||
licenseInstructions = "This has been added to your installation. You will receive a copy in your email as well."
|
||
licenseKey = "Your License Key"
|
||
licensePollingError = "Payment successful but we couldn't retrieve your license key automatically. Please check your email or contact support with your payment confirmation."
|
||
licenseRetrievalError = "Payment successful but license retrieval failed. You will receive your license key via email. Please contact support if you don't receive it within 10 minutes."
|
||
licenseSaveError = "Failed to save license key. Please contact support with your license key to complete activation."
|
||
monthly = "Monthly"
|
||
paymentCanceled = "Payment was canceled. No charges were made."
|
||
perMonth = "/month"
|
||
preparing = "Preparing your checkout..."
|
||
redirecting = "Redirecting to secure checkout..."
|
||
success = "Payment Successful!"
|
||
successMessage = "Your subscription has been activated successfully. You will receive a confirmation email shortly."
|
||
syncError = "Payment successful but license sync failed. Your license will be updated shortly. Please contact support if issues persist."
|
||
syncingLicense = "Syncing your upgraded license..."
|
||
upgradeComplete = "Upgrade Complete"
|
||
upgradeCompleteMessage = "Your subscription has been upgraded successfully. Your existing license key has been updated."
|
||
upgradeSuccess = "Payment successful! Your subscription has been upgraded. The license has been updated on your server. You will receive a confirmation email shortly."
|
||
upgradeTitle = "Upgrade to {{planName}}"
|
||
yearly = "Yearly"
|
||
|
||
[payment.emailStage]
|
||
continue = "Continue"
|
||
description = "We'll use this to send your license key and receipts."
|
||
emailLabel = "Email Address"
|
||
emailPlaceholder = "[email protected]"
|
||
modalTitle = "Get Started - {{planName}}"
|
||
|
||
[payment.paymentStage]
|
||
modalTitle = "Complete Payment - {{planName}}"
|
||
|
||
[payment.planStage]
|
||
billedYearly = "Billed yearly at {{currency}}{{amount}}"
|
||
modalTitle = "Select Billing Period - {{planName}}"
|
||
savePercent = "Save {{percent}}%"
|
||
savingsAmount = "You save {{amount}}"
|
||
selectMonthly = "Select Monthly"
|
||
selectYearly = "Select Yearly"
|
||
|
||
[pdfCommentAgent]
|
||
submit = "Generate comments"
|
||
|
||
[pdfCommentAgent.error]
|
||
emptyPrompt = "Please describe what the AI should comment on"
|
||
failed = "Failed to generate comments"
|
||
tooLong = "Prompt is too long (maximum {{max}} characters)"
|
||
|
||
[pdfCommentAgent.prompt]
|
||
label = "What should the AI comment on?"
|
||
placeholder = "e.g. Flag any ambiguous dates and suggest clarifications"
|
||
|
||
[pdfCommentAgent.results]
|
||
title = "Commented PDF"
|
||
|
||
[pdfCommentAgent.settings]
|
||
title = "Comment instructions"
|
||
|
||
[pdfOrganiser]
|
||
placeholder = "(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)"
|
||
tags = "duplex,even,odd,sort,move"
|
||
title = "Page Organizer"
|
||
|
||
[pdfOrganiser.mode]
|
||
1 = "Custom Page Order"
|
||
10 = "Odd-Even Merge"
|
||
11 = "Duplicate all pages"
|
||
2 = "Reverse Order"
|
||
3 = "Duplex Sort"
|
||
4 = "Booklet Sort"
|
||
5 = "Side Stitch Booklet Sort"
|
||
6 = "Odd-Even Split"
|
||
7 = "Remove First"
|
||
8 = "Remove Last"
|
||
9 = "Remove First and Last"
|
||
_value = "Organization mode"
|
||
|
||
[pdfOrganiser.mode.desc]
|
||
BOOKLET_SORT = "Arrange pages for booklet printing (last, first, second, second last, …)."
|
||
CUSTOM = "Use a custom sequence of page numbers or expressions to define a new order."
|
||
DUPLEX_SORT = "Interleave fronts then backs as if a duplex scanner scanned all fronts, then all backs (1, n, 2, n-1, …)."
|
||
DUPLICATE = "Duplicate each page according to the custom order count (e.g., 4 duplicates each page 4×)."
|
||
ODD_EVEN_MERGE = "Merge two PDFs by alternating pages: odd from the first, even from the second."
|
||
ODD_EVEN_SPLIT = "Split the document into two outputs: all odd pages and all even pages."
|
||
REMOVE_FIRST = "Remove the first page from the document."
|
||
REMOVE_FIRST_AND_LAST = "Remove both the first and last pages from the document."
|
||
REMOVE_LAST = "Remove the last page from the document."
|
||
REVERSE_ORDER = "Flip the document so the last page becomes first and so on."
|
||
SIDE_STITCH_BOOKLET_SORT = "Arrange pages for side‑stitch booklet printing (optimized for binding on the side)."
|
||
|
||
[pdfTextEditor]
|
||
conversionFailed = "Failed to convert PDF. Please try again."
|
||
converting = "Converting PDF to editable format..."
|
||
currentFile = "Current file: {{name}}"
|
||
imageLabel = "Placed image"
|
||
noTextOnPage = "No editable text was detected on this page."
|
||
pagePreviewAlt = "Page preview"
|
||
pageSummary = "Page {{number}} of {{total}}"
|
||
tags = "edit text,modify text,change text,edit content,update text,rewrite,correct,amend,redline,revise,text editor,content editor"
|
||
title = "PDF Text Editor"
|
||
viewLabel = "PDF Editor"
|
||
|
||
[pdfTextEditor.actions]
|
||
applyChanges = "Apply Changes"
|
||
downloadCopy = "Download Copy"
|
||
reset = "Reset Changes"
|
||
|
||
[pdfTextEditor.badges]
|
||
earlyAccess = "Early Access"
|
||
modified = "Edited"
|
||
|
||
[pdfTextEditor.empty]
|
||
dropzone = "Drag and drop a PDF here, or click to browse"
|
||
dropzoneWithFiles = "Select a file from the Files tab, or drag and drop a PDF here, or click to browse"
|
||
title = "No document loaded"
|
||
|
||
[pdfTextEditor.errors]
|
||
invalidJson = "Unable to read the JSON file. Ensure it was generated by the PDF to JSON tool."
|
||
pdfConversion = "Unable to convert the edited JSON back into a PDF."
|
||
|
||
[pdfTextEditor.fontAnalysis]
|
||
allFonts = "All fonts"
|
||
currentPageFonts = "Fonts on this page"
|
||
details = "Font Details"
|
||
embedded = "Embedded"
|
||
fallback = "fallback"
|
||
infoMessage = "Font reproduction information available."
|
||
missing = "missing"
|
||
perfect = "perfect"
|
||
perfectMessage = "All fonts can be reproduced perfectly."
|
||
subset = "subset"
|
||
suggestions = "Notes"
|
||
type = "Type"
|
||
warningMessage = "Some fonts may not render correctly."
|
||
warnings = "Warnings"
|
||
webFormat = "Web Format"
|
||
|
||
[pdfTextEditor.groupingMode]
|
||
auto = "Auto"
|
||
paragraph = "Paragraph"
|
||
singleLine = "Single Line"
|
||
|
||
[pdfTextEditor.manual]
|
||
expandWidth = "Expand to page edge"
|
||
merge = "Merge selection"
|
||
mergeTooltip = "Merge selected boxes"
|
||
resetWidth = "Reset width"
|
||
resizeHandle = "Adjust text width"
|
||
ungroup = "Ungroup selection"
|
||
ungroupTooltip = "Split paragraph back into lines"
|
||
widthMenu = "Width options"
|
||
|
||
[pdfTextEditor.modeChange]
|
||
cancel = "Cancel"
|
||
confirm = "Reset and Change Mode"
|
||
title = "Confirm Mode Change"
|
||
warning = "Changing the text grouping mode will reset all unsaved changes. Are you sure you want to continue?"
|
||
|
||
[pdfTextEditor.options.advanced]
|
||
title = "Advanced Settings"
|
||
|
||
[pdfTextEditor.options.autoScaleText]
|
||
description = "Automatically scales text horizontally to fit within its original bounding box when font rendering differs from PDF."
|
||
title = "Auto-scale text to fit boxes"
|
||
|
||
[pdfTextEditor.options.forceSingleElement]
|
||
description = "When enabled, the editor exports each edited text box as one PDF text element to avoid overlapping glyphs or mixed fonts."
|
||
title = "Lock edited text to a single PDF element"
|
||
|
||
[pdfTextEditor.options.groupingMode]
|
||
autoDescription = "Automatically detects page type and groups text appropriately."
|
||
paragraphDescription = "Groups aligned lines into multi-line paragraph text boxes."
|
||
singleLineDescription = "Keeps each PDF text line as a separate text box."
|
||
title = "Text Grouping Mode"
|
||
|
||
[pdfTextEditor.pageType]
|
||
paragraph = "Paragraph page"
|
||
sparse = "Sparse text"
|
||
|
||
[pdfTextEditor.stages]
|
||
processing = "Processing"
|
||
uploading = "Uploading"
|
||
|
||
[pdfTextEditor.tooltip.alpha]
|
||
text = "This alpha viewer is still evolving-certain fonts, colors, transparency effects, and layout details may shift slightly. Please double-check the generated PDF before sharing."
|
||
title = "Alpha Viewer"
|
||
|
||
[pdfTextEditor.tooltip.header]
|
||
title = "Preview Limitations"
|
||
|
||
[pdfTextEditor.tooltip.previewVariance]
|
||
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 = "Preview Variance"
|
||
|
||
[pdfTextEditor.tooltip.textFocus]
|
||
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 and Image Focus"
|
||
|
||
[pdfTextEditor.welcomeBanner]
|
||
bestFor = "Works Best With:"
|
||
bestFor1 = "Simple PDFs containing primarily text and images"
|
||
bestFor2 = "Documents with standard paragraph formatting"
|
||
bestFor3 = "Letters, essays, reports, and basic documents"
|
||
dontShowAgain = "Don't show again"
|
||
experimental = "This is an experimental feature in active development. Expect some instability and issues during use."
|
||
feedback = "This is an early access feature. Please report any issues you encounter to help us improve!"
|
||
gotIt = "Got it"
|
||
howItWorks = "This tool converts your PDF to an editable format where you can modify text content and reposition images. Changes are saved back as a new PDF."
|
||
issue1 = "Text color is not currently preserved (will be added soon)"
|
||
issue2 = "Paragraph mode has more alignment and spacing issues - Single Line mode recommended"
|
||
issue3 = "The preview display differs from the exported PDF - exported PDFs are closer to the original"
|
||
issue4 = "Rotated text alignment may need manual adjustment"
|
||
issue5 = "Transparency and layering effects may vary from original"
|
||
knownIssues = "Known Issues (Being Fixed):"
|
||
limitation1 = "Font rendering may differ slightly from the original PDF"
|
||
limitation2 = "Complex graphics, form fields, and annotations are preserved but not editable"
|
||
limitation3 = "Large files may take time to convert and process"
|
||
limitations = "Current Limitations:"
|
||
notIdealFor = "Not Ideal For:"
|
||
notIdealFor1 = "PDFs with special formatting like bullet points, tables, or multi-column layouts"
|
||
notIdealFor2 = "Magazines, brochures, or heavily designed documents"
|
||
notIdealFor3 = "Instruction manuals with complex layouts"
|
||
title = "Welcome to PDF Text Editor (Early Access)"
|
||
|
||
[PDFToCSV]
|
||
header = "PDF to CSV"
|
||
title = "PDF to CSV"
|
||
|
||
[PDFToHTML]
|
||
header = "PDF to HTML"
|
||
tags = "web content,browser friendly"
|
||
title = "PDF to HTML"
|
||
|
||
[pdfToImage]
|
||
tags = "conversion,img,jpg,picture,photo"
|
||
title = "PDF to Image"
|
||
|
||
[PDFToMarkdown]
|
||
header = "PDF To Markdown"
|
||
tags = "markup,web-content,transformation,convert,md"
|
||
title = "PDF To Markdown"
|
||
|
||
[pdfToPDFA]
|
||
header = "PDF To PDF/A"
|
||
tags = "archive,long-term,standard,conversion,storage,preservation"
|
||
title = "PDF To PDF/A"
|
||
|
||
[pdfToPDFX]
|
||
tags = "print,standard,conversion,production,prepress,archive"
|
||
title = "PDF To PDF/X"
|
||
|
||
[PDFToPresentation]
|
||
header = "PDF to Presentation"
|
||
tags = "slides,show,office,microsoft"
|
||
title = "PDF to Presentation"
|
||
|
||
[PdfToSinglePage]
|
||
tags = "single page"
|
||
|
||
[pdfToSinglePage]
|
||
description = "This tool will merge all pages of your PDF into one large single page. The width will remain the same as the original pages, but the height will be the sum of all page heights."
|
||
submit = "Convert To Single Page"
|
||
tags = "combine,merge,single,single page,one page,merge to single,combine all,stitch pages,concatenate vertical,long page,poster"
|
||
title = "PDF To Single Page"
|
||
|
||
[pdfToSinglePage.error]
|
||
failed = "An error occurred while converting to single page."
|
||
|
||
[pdfToSinglePage.results]
|
||
title = "Single Page Results"
|
||
|
||
[PDFToText]
|
||
header = "PDF to RTF (Text)"
|
||
tags = "richformat,richtextformat,rich text format"
|
||
title = "PDF to RTF (Text)"
|
||
|
||
[PDFToWord]
|
||
header = "PDF to Word"
|
||
tags = "doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile"
|
||
title = "PDF to Word"
|
||
|
||
[PDFToXLSX]
|
||
header = "PDF to Excel"
|
||
tags = "spreadsheet,excel,xlsx,table,extract,convert"
|
||
title = "PDF to Excel (XLSX)"
|
||
|
||
[PDFToXML]
|
||
header = "PDF to XML"
|
||
tags = "data-extraction,structured-content,interop,transformation,convert"
|
||
title = "PDF to XML"
|
||
|
||
[permissions]
|
||
tags = "read,write,edit,print"
|
||
title = "Change Permissions"
|
||
|
||
[pipeline]
|
||
tags = "automate,sequence,scripted,batch-process"
|
||
title = "Pipeline"
|
||
|
||
[plan]
|
||
contact = "Contact Us"
|
||
current = "Current Plan"
|
||
featureComparison = "Feature Comparison"
|
||
from = "From"
|
||
hideComparison = "Hide Feature Comparison"
|
||
licensedSeats = "Licensed: {{count}} seats"
|
||
manage = "Manage"
|
||
perMonth = "/month"
|
||
perSeat = "/seat"
|
||
popular = "Popular"
|
||
selectPlan = "Select Plan"
|
||
showComparison = "Compare All Features"
|
||
upgrade = "Upgrade"
|
||
withServer = "+ Server Plan"
|
||
|
||
[plan.api]
|
||
large = "5,000 Credits"
|
||
medium = "1,000 Credits"
|
||
small = "500 Credits"
|
||
xsmall = "100 Credits"
|
||
|
||
[plan.availablePlans]
|
||
subtitle = "Choose the plan that fits your needs"
|
||
title = "Available Plans"
|
||
|
||
[plan.enterprise]
|
||
highlight1 = "Custom pricing"
|
||
highlight2 = "Dedicated support"
|
||
highlight3 = "Latest features"
|
||
name = "Enterprise"
|
||
requiresServer = "Requires Server"
|
||
requiresServerMessage = "Please upgrade to the Server plan first before upgrading to Enterprise."
|
||
|
||
[plan.feature]
|
||
api = "API Access"
|
||
automation = "Automate tool workflows"
|
||
customPricing = "Custom Pricing"
|
||
fileSize = "File Size Limit"
|
||
pdfTools = "Basic PDF Tools"
|
||
priority = "Priority Support"
|
||
title = "Feature"
|
||
|
||
[plan.features]
|
||
allPdfOperations = "All PDF operations"
|
||
auditing = "Auditing"
|
||
communitySupport = "Community support"
|
||
customPdfMetadata = "Custom PDF metadata"
|
||
editingTextInPdfs = "Editing text in pdfs"
|
||
externalDatabase = "External Database"
|
||
googleDriveIntegration = "Google drive integration"
|
||
prometheusSupport = "Prometheus Support"
|
||
regularUpdates = "Regular updates"
|
||
saml = "SAML"
|
||
secureLoginSupport = "Secure Login Support"
|
||
selfHostedDeployment = "Self-hosted deployment"
|
||
sso = "SSO"
|
||
unlimitedUsers = "Unlimited users"
|
||
upToFiveUsers = "Up to 5 users"
|
||
upToFiveUsersLowercase = "up to 5 users"
|
||
usageTracking = "Usage tracking"
|
||
usersLimitedToSeats = "Users limited to seats"
|
||
|
||
[plan.free]
|
||
forever = "Forever free"
|
||
highlight1 = "Limited Tool Usage Per week"
|
||
highlight2 = "Access to all tools"
|
||
highlight3 = "Community support"
|
||
included = "Included"
|
||
name = "Free"
|
||
|
||
[plan.freeLimit]
|
||
cta = "View Processor Plan"
|
||
dismiss = "Maybe Later"
|
||
message = "That's your whole free allowance for automation, AI and the API. Seriously impressive! Keep the momentum going for just pennies a day."
|
||
title = "Woah, {{total}} PDFs Processed!"
|
||
|
||
[plan.highlights]
|
||
advancedIntegrations = "Advanced integrations"
|
||
allBasicFeatures = "All basic features"
|
||
cancelAnytime = "Cancel anytime"
|
||
customPdfMetadata = "Custom PDF metadata"
|
||
editingTextInPdfsCaps = "Editing text in PDFs"
|
||
enterpriseFeatures = "Enterprise features (SAML, Auditing)"
|
||
perSeatLicensing = "Per-seat licensing"
|
||
saveWithAnnualBilling = "Save with annual billing"
|
||
selfHosted = "Self-hosted"
|
||
selfHostedOnInfrastructure = "Self-hosted on your infrastructure"
|
||
ssoOAuth = "SSO (OAuth2/OIDC)"
|
||
unlimitedUsers = "Unlimited users"
|
||
upToFiveUsers = "Up to 5 users"
|
||
usageTrackingPrometheus = "Usage tracking & Prometheus"
|
||
|
||
[plan.licenseWarning]
|
||
body = "You have {{total}} users but the free tier only supports {{limit}} per server. Upgrade to keep Stirling PDF running smoothly."
|
||
cta = "See plans"
|
||
overLimit = "more than {{limit}}"
|
||
title = "Free self-hosted limit reached"
|
||
|
||
[plan.period]
|
||
month = "month"
|
||
|
||
[plan.pro]
|
||
highlight1 = "Unlimited Tool Usage"
|
||
highlight2 = "Advanced PDF tools"
|
||
highlight3 = "No watermarks"
|
||
name = "Pro"
|
||
|
||
[plan.spendCap]
|
||
cta = "View Spending Limit"
|
||
dismiss = "Not Now"
|
||
message = "You've made the most of this month's cap. That's a load of automation, AI and API work! Bump it up whenever you like to keep going."
|
||
title = "You're on a Roll!"
|
||
|
||
[plan.static]
|
||
activateLicense = "Activate Your License"
|
||
contactToUpgrade = "Contact us to upgrade or customize your plan"
|
||
getLicense = "Get Server License"
|
||
monthlyBilling = "Monthly Billing"
|
||
selectPeriod = "Select Billing Period"
|
||
upgradeToEnterprise = "Upgrade to Enterprise"
|
||
upTo = "Up to"
|
||
yearlyBilling = "Yearly Billing"
|
||
|
||
[plan.static.billingPortal]
|
||
message = "You will need to verify your email address in the Stripe billing portal. Check your email for a login link."
|
||
title = "Email Verification Required"
|
||
|
||
[plan.static.licenseActivation]
|
||
activate = "Activate License"
|
||
checkoutOpened = "Checkout Opened in New Tab"
|
||
doLater = "I'll do this later"
|
||
enterKey = "Enter your license key below to activate your plan:"
|
||
instructions = "Complete your purchase in the Stripe tab. Once your payment is complete, you will receive an email with your license key."
|
||
keyDescription = "Paste the license key from your email"
|
||
success = "License Activated!"
|
||
successMessage = "Your license has been successfully activated. You can now close this window."
|
||
|
||
[plan.team]
|
||
|
||
[plan.trial]
|
||
|
||
[policies]
|
||
deleteConfirmBody = "This removes the policy and its workflow. Documents already processed are not affected."
|
||
deleteConfirmTitle = "Delete {{label}} policy?"
|
||
|
||
[policies.catalog]
|
||
compliance = "Compliance"
|
||
ingestion = "Ingestion"
|
||
retention = "Retention"
|
||
routing = "Routing"
|
||
security = "Security"
|
||
|
||
[policies.detail]
|
||
editSettings = "Edit Settings"
|
||
enforces = "Enforces"
|
||
managedByOrg = "Managed by your organization. Contact a team leader to change this policy."
|
||
noActivityDescription = "Documents will appear here once this policy runs."
|
||
noActivityTitle = "No activity yet"
|
||
onEveryUpload = "On every upload"
|
||
originalsNote = "Originals stay untouched • Enforced version saved alongside"
|
||
pause = "Pause"
|
||
recentActivity = "Recent Activity"
|
||
resume = "Resume"
|
||
retry = "Retry"
|
||
showLess = "Show less"
|
||
showMore = "Show more"
|
||
statActive = "Active"
|
||
statDataProcessed = "Data processed"
|
||
statDocsEnforced = "Docs enforced"
|
||
statusActive = "Active"
|
||
statusPaused = "Paused"
|
||
|
||
[policies.fields]
|
||
selectedCount = "{{count}} selected"
|
||
|
||
[policies.pii]
|
||
fieldLabel = "PII to redact"
|
||
placeholder = "Select PII types"
|
||
|
||
[policies.sidebar]
|
||
activeCount = "{{count}} active"
|
||
infoAriaLabel = "What is a policy?"
|
||
infoTooltip = "A policy is a fixed set of tools that runs automatically whenever it's triggered — for example when a new document arrives — enforcing rules like redacting PII with no manual steps."
|
||
loading = "Loading…"
|
||
railAriaLabel = "{{label}} policy — {{status}}"
|
||
railSuffixActive = " (Active)"
|
||
railSuffixPaused = " (Paused)"
|
||
setUp = "Set up"
|
||
title = "Policies"
|
||
upgradeToEnterprise = "Upgrade to enterprise"
|
||
|
||
[policies.status]
|
||
active = "Active"
|
||
paused = "Paused"
|
||
setup = "Set up"
|
||
|
||
[policies.toolConfig]
|
||
enableAriaLabel = "Enable {{tool}}"
|
||
infoAriaLabel = "What does {{tool}} do?"
|
||
|
||
[policies.wizard]
|
||
allDocTypesDescription = "Enable the Classification policy to filter by document type."
|
||
allDocTypesTitle = "All document types"
|
||
back = "Back"
|
||
builderDesc = "Build the sequence of tools this policy runs on each document."
|
||
clear = "Clear"
|
||
continue = "Continue"
|
||
docTypesLabel = "Document types"
|
||
edit = "Edit"
|
||
editTitle = "Edit {{label}} Policy"
|
||
enablePolicy = "Enable Policy"
|
||
filenameAutoNumber = "Auto-number"
|
||
filenamePositionAria = "Filename position"
|
||
filenamePrefix = "Prefix"
|
||
filenameSuffix = "Suffix"
|
||
filenameTextAria = "Filename text"
|
||
filenameTextPlaceholder = "Text to add (optional)"
|
||
lockedDescription = "Contact a team leader to change this policy."
|
||
lockedTitle = "Managed by your organization"
|
||
maxRetriesLabel = "Max retries"
|
||
noToolsError = "Add at least one configured tool to the workflow first."
|
||
outputAsLabel = "Output as"
|
||
outputFilenameSubhead = "Output filename"
|
||
outputModeAria = "Output mode"
|
||
outputNewFile = "New file"
|
||
outputNewVersion = "New version"
|
||
outputRetriesLabel = "Output & retries"
|
||
outputSubhead = "Output"
|
||
retryDelayAria = "Retry delay minutes"
|
||
retryDelayLabel = "Retry delay (min)"
|
||
runOnExport = "Export"
|
||
runOnLabel = "Run on"
|
||
runOnSubhead = "Run on"
|
||
runOnUpload = "Upload"
|
||
saveChanges = "Save Changes"
|
||
saveError = "Couldn't save the policy. Please try again."
|
||
setupClassification = "Set up Classification"
|
||
setupTitle = "Set up {{label}} Policy"
|
||
sourcesDesc = "Choose where this policy runs and which document types it applies to."
|
||
sourcesLabel = "Sources"
|
||
stepOf = "Step {{step}} of {{total}}"
|
||
toolChainDesc = "Configure the tools this policy runs on each document."
|
||
typesSelected = "{{count}} types selected"
|
||
|
||
[printFile]
|
||
title = "Print File"
|
||
|
||
[provider.googledrive]
|
||
name = "Google Drive"
|
||
scope = "File Import"
|
||
|
||
[provider.googledrive.apiKey]
|
||
description = "Google API Key for Google Picker API from Google Cloud Console"
|
||
label = "API Key"
|
||
|
||
[provider.googledrive.appId]
|
||
description = "Google Drive App ID from Google Cloud Console"
|
||
label = "App ID"
|
||
|
||
[provider.googledrive.clientId]
|
||
description = "Google OAuth 2.0 Client ID from Google Cloud Console"
|
||
label = "Client ID"
|
||
|
||
[provider.googledrive.enabled]
|
||
description = "Allow users to import files directly from Google Drive"
|
||
label = "Enable Google Drive File Picker"
|
||
|
||
[provider.oauth2.generic]
|
||
name = "Generic OAuth2"
|
||
scope = "SSO"
|
||
|
||
[provider.oauth2.generic.autoCreateUser]
|
||
description = "Automatically create user accounts on first OAuth2 login"
|
||
label = "Auto Create Users"
|
||
|
||
[provider.oauth2.generic.blockRegistration]
|
||
description = "Prevent new user registration via OAuth2"
|
||
label = "Block Registration"
|
||
|
||
[provider.oauth2.generic.clientId]
|
||
description = "The OAuth2 client ID from your provider"
|
||
label = "Client ID"
|
||
|
||
[provider.oauth2.generic.clientSecret]
|
||
description = "The OAuth2 client secret from your provider"
|
||
label = "Client Secret"
|
||
|
||
[provider.oauth2.generic.enabled]
|
||
description = "Enable authentication using a custom OAuth2 provider"
|
||
label = "Enable Generic OAuth2"
|
||
|
||
[provider.oauth2.generic.issuer]
|
||
description = "Provider that supports OpenID Connect Discovery (/.well-known/openid-configuration)"
|
||
label = "Issuer URL"
|
||
|
||
[provider.oauth2.generic.provider]
|
||
description = "The name of your OAuth2 provider (e.g., Azure AD, Okta)"
|
||
label = "Provider Name"
|
||
|
||
[provider.oauth2.generic.scopes]
|
||
description = "Comma-separated OAuth2 scopes"
|
||
label = "Scopes"
|
||
|
||
[provider.oauth2.generic.useAsUsername]
|
||
description = "Field to use as username"
|
||
label = "Use as Username"
|
||
|
||
[provider.oauth2.github]
|
||
scope = "Sign-in authentication"
|
||
|
||
[provider.oauth2.github.clientId]
|
||
description = "The OAuth2 client ID from GitHub Developer Settings"
|
||
label = "Client ID"
|
||
|
||
[provider.oauth2.github.clientSecret]
|
||
description = "The OAuth2 client secret from GitHub Developer Settings"
|
||
label = "Client Secret"
|
||
|
||
[provider.oauth2.github.scopes]
|
||
description = "Comma-separated OAuth2 scopes"
|
||
label = "Scopes"
|
||
|
||
[provider.oauth2.github.useAsUsername]
|
||
description = "Field to use as username (email, login, name)"
|
||
label = "Use as Username"
|
||
|
||
[provider.oauth2.google]
|
||
scope = "Sign-in authentication"
|
||
|
||
[provider.oauth2.google.clientId]
|
||
description = "The OAuth2 client ID from Google Cloud Console"
|
||
label = "Client ID"
|
||
|
||
[provider.oauth2.google.clientSecret]
|
||
description = "The OAuth2 client secret from Google Cloud Console"
|
||
label = "Client Secret"
|
||
|
||
[provider.oauth2.google.scopes]
|
||
description = "Comma-separated OAuth2 scopes"
|
||
label = "Scopes"
|
||
|
||
[provider.oauth2.google.useAsUsername]
|
||
description = "Field to use as username (email, name, given_name, family_name)"
|
||
label = "Use as Username"
|
||
|
||
[provider.oauth2.keycloak]
|
||
scope = "SSO"
|
||
|
||
[provider.oauth2.keycloak.clientId]
|
||
description = "The OAuth2 client ID from Keycloak"
|
||
label = "Client ID"
|
||
|
||
[provider.oauth2.keycloak.clientSecret]
|
||
description = "The OAuth2 client secret from Keycloak"
|
||
label = "Client Secret"
|
||
|
||
[provider.oauth2.keycloak.issuer]
|
||
description = "URL of the Keycloak realm's OpenID Connect Discovery endpoint"
|
||
label = "Issuer URL"
|
||
|
||
[provider.oauth2.keycloak.scopes]
|
||
description = "Comma-separated OAuth2 scopes"
|
||
label = "Scopes"
|
||
|
||
[provider.oauth2.keycloak.useAsUsername]
|
||
description = "Field to use as username (email, name, given_name, family_name, preferred_username)"
|
||
label = "Use as Username"
|
||
|
||
[provider.saml2]
|
||
name = "SAML2"
|
||
scope = "SSO (SAML)"
|
||
|
||
[provider.saml2.autoCreateUser]
|
||
description = "Automatically create user accounts on first SAML2 login"
|
||
label = "Auto Create Users"
|
||
|
||
[provider.saml2.blockRegistration]
|
||
description = "Prevent new user registration via SAML2"
|
||
label = "Block Registration"
|
||
|
||
[provider.saml2.enabled]
|
||
description = "Enable SAML2 authentication (Enterprise only)"
|
||
label = "Enable SAML2"
|
||
|
||
[provider.saml2.idpCert]
|
||
description = "The certificate path (e.g., classpath:okta.cert)"
|
||
label = "IDP Certificate"
|
||
|
||
[provider.saml2.idpIssuer]
|
||
description = "The ID of your provider"
|
||
label = "IDP Issuer"
|
||
|
||
[provider.saml2.idpMetadataUri]
|
||
description = "The URI for your provider's metadata"
|
||
label = "IDP Metadata URI"
|
||
|
||
[provider.saml2.idpSingleLoginUrl]
|
||
description = "The URL for initiating SSO"
|
||
label = "IDP Single Login URL"
|
||
|
||
[provider.saml2.idpSingleLogoutUrl]
|
||
description = "The URL for initiating SLO"
|
||
label = "IDP Single Logout URL"
|
||
|
||
[provider.saml2.privateKey]
|
||
description = "Your private key path"
|
||
label = "Private Key"
|
||
|
||
[provider.saml2.provider]
|
||
description = "The name of your SAML2 provider"
|
||
label = "Provider Name"
|
||
|
||
[provider.saml2.registrationId]
|
||
description = "The name of your Service Provider (SP) app name"
|
||
label = "Registration ID"
|
||
|
||
[provider.saml2.spCert]
|
||
description = "Your signing certificate path"
|
||
label = "SP Certificate"
|
||
|
||
[provider.smtp]
|
||
name = "SMTP Mail"
|
||
scope = "Email Notifications"
|
||
|
||
[provider.smtp.enabled]
|
||
description = "Enable email notifications and SMTP functionality"
|
||
label = "Enable Mail"
|
||
|
||
[provider.smtp.from]
|
||
description = "The email address to use as the sender"
|
||
label = "From Address"
|
||
|
||
[provider.smtp.host]
|
||
description = "The hostname or IP address of your SMTP server"
|
||
label = "SMTP Host"
|
||
|
||
[provider.smtp.password]
|
||
description = "Password for SMTP authentication"
|
||
label = "SMTP Password"
|
||
|
||
[provider.smtp.port]
|
||
description = "The port number for SMTP connection (typically 25, 465, or 587)"
|
||
label = "SMTP Port"
|
||
|
||
[provider.smtp.username]
|
||
description = "Username for SMTP authentication"
|
||
label = "SMTP Username"
|
||
|
||
[quickAccess]
|
||
access = "Access"
|
||
accessAddPerson = "Add another person"
|
||
accessBack = "Back"
|
||
accessCopyLink = "Copy link"
|
||
accessEmail = "Email Address"
|
||
accessEmailPlaceholder = "[email protected]"
|
||
accessFileLabel = "File"
|
||
accessGeneral = "General Access"
|
||
accessInviteTitle = "Invite People"
|
||
accessOwner = "Owner"
|
||
accessPanel = "Document access"
|
||
accessPeople = "People with access"
|
||
accessRemove = "Remove"
|
||
accessRestricted = "Restricted"
|
||
accessRestrictedHint = "Only people with access can open"
|
||
accessRole = "Role"
|
||
accessRoleCommenter = "Commenter"
|
||
accessRoleEditor = "Editor"
|
||
accessRoleViewer = "Viewer"
|
||
accessSelectedFile = "Selected file"
|
||
accessSendInvite = "Send Invite"
|
||
accessTitle = "Document Access"
|
||
accessYou = "You"
|
||
activeSessions = "Active Sessions"
|
||
activeTab = "Active"
|
||
activity = "Activity"
|
||
allTools = "Tools"
|
||
automate = "Automate"
|
||
back = "Back"
|
||
backToAllTools = "Back to all tools"
|
||
certSign = "Certificate Sign"
|
||
completedSessions = "Completed Sessions"
|
||
completedTab = "Completed"
|
||
config = "Config"
|
||
createSession = "Create Signing Request"
|
||
dueDate = "Due date (optional)"
|
||
files = "Files"
|
||
filterDeclined = "Declined"
|
||
filterMine = "Mine"
|
||
filterOverdue = "Overdue"
|
||
filterSigned = "Signed"
|
||
help = "Help"
|
||
newRequest = "New Request"
|
||
noActiveSessions = "No pending sign requests or active sessions"
|
||
noCompletedSessions = "No completed sessions"
|
||
noFile = "No file selected"
|
||
read = "Read"
|
||
reader = "Reader"
|
||
refresh = "Refresh"
|
||
requestSignatures = "Request Signatures"
|
||
searchDocuments = "Search documents…"
|
||
selectedFile = "Selected file"
|
||
selectSingleFileToRequest = "Select a single PDF file to request signatures"
|
||
selectUsers = "Select users to sign"
|
||
selectUsersPlaceholder = "Choose participants..."
|
||
sendingRequest = "Sending..."
|
||
settings = "Settings"
|
||
sign = "Sign"
|
||
signatureRequests = "Signature Requests"
|
||
signYourself = "Sign Yourself"
|
||
tours = "Tours"
|
||
wetSign = "Add Signature"
|
||
|
||
[quickAccess.helpMenu]
|
||
adminTour = "Admin Tour"
|
||
adminTourDesc = "Explore admin settings & features"
|
||
toolsTour = "Tools Tour"
|
||
toolsTourDesc = "Learn what the tools can do"
|
||
whatsNewTour = "See what's new in V2"
|
||
whatsNewTourDesc = "Tour the updated layout"
|
||
|
||
[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."
|
||
|
||
[read]
|
||
tags = "view,open,display,read,viewer,PDF viewer,PDF reader,open PDF,view PDF,display PDF,preview,browse"
|
||
|
||
[redact]
|
||
submit = "Redact"
|
||
tags = "Redact,Hide,black out,black,marker,hidden,auto redact,manual redact"
|
||
title = "Redact"
|
||
|
||
[redact.auto]
|
||
colorLabel = "Box Color"
|
||
convertPDFToImageLabel = "Convert PDF to PDF-Image"
|
||
customPaddingLabel = "Custom Extra Padding"
|
||
useRegexLabel = "Use Regex"
|
||
wholeWordSearchLabel = "Whole Word Search"
|
||
|
||
[redact.auto.settings]
|
||
advancedTitle = "Advanced"
|
||
title = "Redaction Settings"
|
||
|
||
[redact.auto.wordsToRedact]
|
||
add = "Add"
|
||
examples = "Examples: Confidential, Top-Secret"
|
||
placeholder = "Enter a word"
|
||
title = "Words to Redact"
|
||
|
||
[redact.error]
|
||
failed = "An error occurred while redacting the PDF."
|
||
|
||
[redact.manual]
|
||
apply = "Apply"
|
||
applyWarning = "⚠️ Permanent application, cannot be undone and the data underneath will be deleted"
|
||
colorLabel = "Redaction Color"
|
||
controlsTitle = "Manual Redaction Controls"
|
||
instructions = "Select text or draw areas on the PDF to mark content for redaction."
|
||
title = "Redaction Tools"
|
||
|
||
[redact.modeSelector]
|
||
automatic = "Automatic"
|
||
automaticDisabledTooltip = "Select files in the file manager to redact multiple files at once"
|
||
manual = "Manual"
|
||
mode = "Mode"
|
||
title = "Redaction Method"
|
||
|
||
[redact.tooltip.advanced.color]
|
||
text = "Customize the appearance of redaction boxes. Black is standard, but you can choose any color. Padding adds extra space around the found text."
|
||
title = "Box Color & Padding"
|
||
|
||
[redact.tooltip.advanced.convert]
|
||
text = "Converts the PDF to an image-based PDF after redaction. This ensures text behind redaction boxes is completely removed and unrecoverable."
|
||
title = "Convert to PDF-Image"
|
||
|
||
[redact.tooltip.advanced.header]
|
||
title = "Advanced Redaction Settings"
|
||
|
||
[redact.tooltip.advanced.regex]
|
||
bullet1 = "Example: \\d{4}-\\d{2}-\\d{2} to match any dates in YYYY-MM-DD format"
|
||
bullet2 = "Use with caution - test thoroughly"
|
||
text = "Enable regular expressions for advanced pattern matching. Useful for finding phone numbers, emails, or complex patterns."
|
||
title = "Use Regex"
|
||
|
||
[redact.tooltip.advanced.wholeWord]
|
||
text = "Only match complete words, not partial matches. 'John' won't match 'Johnson' when enabled."
|
||
title = "Whole Word Search"
|
||
|
||
[redact.tooltip.manual.apply]
|
||
bullet1 = "Mark as many areas as needed before applying"
|
||
bullet2 = "All pending redactions are applied at once"
|
||
bullet3 = "Redactions cannot be undone after applying"
|
||
text = "After marking content, click 'Apply' to permanently redact all marked areas. The pending count shows how many redactions are ready to be applied."
|
||
title = "Apply Redactions"
|
||
|
||
[redact.tooltip.manual.header]
|
||
title = "Manual Redaction Controls"
|
||
|
||
[redact.tooltip.manual.markArea]
|
||
text = "Draw rectangular areas on the PDF to mark regions for redaction. Useful for redacting images, signatures, or irregular shapes."
|
||
title = "Mark Area Tool"
|
||
|
||
[redact.tooltip.manual.markText]
|
||
text = "Select text directly on the PDF to mark it for redaction. Click and drag to highlight specific text that you want to redact."
|
||
title = "Mark Text Tool"
|
||
|
||
[redact.tooltip.mode.automatic]
|
||
text = "Automatically finds and redacts specified text throughout the document. Perfect for removing consistent sensitive information like names, addresses, or confidential markers."
|
||
title = "Automatic Redaction"
|
||
|
||
[redact.tooltip.mode.header]
|
||
title = "Redaction Method"
|
||
|
||
[redact.tooltip.mode.manual]
|
||
text = "Click and drag to manually select specific areas to redact. Gives you precise control over what gets redacted. (Coming soon)"
|
||
title = "Manual Redaction"
|
||
|
||
[redact.tooltip.words]
|
||
bullet1 = "Add one word at a time"
|
||
bullet2 = "Press Enter or click 'Add Another' to add"
|
||
bullet3 = "Click × to remove words"
|
||
|
||
[redact.tooltip.words.description]
|
||
text = "Enter words or phrases to find and redact in your document. Each word will be searched for separately."
|
||
title = "Text Matching"
|
||
|
||
[redact.tooltip.words.examples]
|
||
text = "Typical words to redact include: bank details, email addresses, or specific names."
|
||
title = "Common Examples"
|
||
|
||
[redact.tooltip.words.header]
|
||
title = "Words to Redact"
|
||
|
||
[releases]
|
||
title = "Release Notes"
|
||
|
||
[removeAnnotations]
|
||
submit = "Remove"
|
||
tags = "comments,highlight,notes,markup,remove"
|
||
title = "Remove Annotations"
|
||
|
||
[removeAnnotations.error]
|
||
failed = "An error occurred while removing annotations from the PDF."
|
||
|
||
[removeAnnotations.info]
|
||
description = "This tool will remove all annotations (comments, highlights, notes, etc.) from your PDF documents."
|
||
|
||
[removeAnnotations.settings]
|
||
title = "Settings"
|
||
|
||
[removeAnnotations.tooltip.description]
|
||
title = "What it does"
|
||
|
||
[removeAnnotations.tooltip.header]
|
||
title = "About Remove Annotations"
|
||
|
||
[removeBlanks]
|
||
submit = "Remove blank pages"
|
||
tags = "delete,clean,empty,remove blank,delete blank pages,empty pages,white pages,remove empty,clean up,cleanup blank"
|
||
title = "Remove Blanks"
|
||
|
||
[removeBlanks.error]
|
||
failed = "Failed to remove blank pages"
|
||
|
||
[removeBlanks.includeBlankPages]
|
||
label = "Include detected blank pages"
|
||
|
||
[removeBlanks.results]
|
||
title = "Removed Blank Pages"
|
||
|
||
[removeBlanks.settings]
|
||
title = "Settings"
|
||
|
||
[removeBlanks.threshold]
|
||
label = "Pixel Whiteness Threshold"
|
||
|
||
[removeBlanks.tooltip.header]
|
||
title = "Remove Blank Pages Settings"
|
||
|
||
[removeBlanks.tooltip.includeBlankPages]
|
||
bullet1 = "Useful for reviewing what was removed"
|
||
bullet2 = "Helps verify the detection accuracy"
|
||
bullet3 = "Can be disabled to reduce output file size"
|
||
text = "When enabled, creates a separate PDF containing all the blank pages that were detected and removed from the original document."
|
||
title = "Include Detected Blank Pages"
|
||
|
||
[removeBlanks.tooltip.threshold]
|
||
bullet1 = "0 = Pure black (most restrictive)"
|
||
bullet2 = "128 = Medium gray"
|
||
bullet3 = "255 = Pure white (least restrictive)"
|
||
text = "Controls how white a pixel must be to be considered 'white'. This helps determine what counts as a blank area on the page."
|
||
title = "Pixel Whiteness Threshold"
|
||
|
||
[removeBlanks.tooltip.whitePercent]
|
||
bullet1 = "Lower values (e.g., 80%) = More pages removed"
|
||
bullet2 = "Higher values (e.g., 95%) = Only very blank pages removed"
|
||
bullet3 = "Use higher values for documents with light backgrounds"
|
||
text = "Sets the minimum percentage of white pixels required for a page to be considered blank and removed."
|
||
title = "White Percentage Threshold"
|
||
|
||
[removeBlanks.whitePercent]
|
||
label = "White Percentage Threshold"
|
||
|
||
[removeCertSign]
|
||
description = "This tool will remove digital certificate signatures from your PDF document."
|
||
submit = "Remove Signature"
|
||
tags = "authenticate,PEM,P12,official,decrypt"
|
||
title = "Remove Certificate Signature"
|
||
|
||
[removeCertSign.error]
|
||
failed = "An error occurred while removing certificate signatures."
|
||
|
||
[removeCertSign.results]
|
||
title = "Certificate Removal Results"
|
||
|
||
[removeImage]
|
||
submit = "Remove image"
|
||
tags = "remove,delete,clean,remove image,delete image,strip images,remove pictures,delete photos,clean images,reduce size,remove graphics"
|
||
title = "Remove image"
|
||
|
||
[removeImage.error]
|
||
failed = "Failed to remove images from the PDF."
|
||
|
||
[removeImage.results]
|
||
title = "Remove Images Results"
|
||
|
||
[removeImagePdf]
|
||
tags = "Remove Image,Page operations,Back end,server side"
|
||
|
||
[removePages]
|
||
submit = "Remove Pages"
|
||
tags = "Remove pages,delete pages"
|
||
title = "Remove Pages"
|
||
|
||
[removePages.error]
|
||
failed = "An error occurred while removing pages."
|
||
|
||
[removePages.pageNumbers]
|
||
error = "Invalid page number format. Use numbers, ranges (1-5), or mathematical expressions (2n+1)"
|
||
label = "Pages to Remove"
|
||
placeholder = "e.g., 1,3,5-8,10"
|
||
|
||
[removePages.results]
|
||
title = "Page Removal Results"
|
||
|
||
[removePages.settings]
|
||
title = "Settings"
|
||
|
||
[removePages.tooltip.examples]
|
||
bullet1 = "Remove first page: 1"
|
||
bullet2 = "Remove last 3 pages: -3"
|
||
bullet3 = "Remove every other page: 2n"
|
||
bullet4 = "Remove specific scattered pages: 1,5,10,15"
|
||
text = "Here are some common page selection patterns:"
|
||
title = "Common Examples"
|
||
|
||
[removePages.tooltip.header]
|
||
title = "Remove Pages Settings"
|
||
|
||
[removePages.tooltip.pageNumbers]
|
||
bullet1 = "Individual pages: 1,3,5 (removes pages 1, 3, and 5)"
|
||
bullet2 = "Page ranges: 1-5,10-15 (removes pages 1-5 and 10-15)"
|
||
bullet3 = "Mathematical: 2n+1 (removes odd pages)"
|
||
bullet4 = "Open ranges: 5- (removes from page 5 to end)"
|
||
text = "Specify which pages to remove from your PDF. You can select individual pages, ranges, or use mathematical expressions."
|
||
title = "Page Selection"
|
||
|
||
[removePassword]
|
||
desc = "Remove password protection from your PDF document."
|
||
submit = "Remove Password"
|
||
tags = "secure,Decrypt,security,unpassword,delete password"
|
||
title = "Remove Password"
|
||
|
||
[removePassword.error]
|
||
failed = "An error occurred while removing the password from the PDF."
|
||
|
||
[removePassword.password]
|
||
label = "Current Password"
|
||
placeholder = "Enter current password"
|
||
stepTitle = "Remove Password"
|
||
|
||
[removePassword.results]
|
||
title = "Decrypted PDFs"
|
||
|
||
[removePassword.tooltip]
|
||
description = "Removing password protection requires the password that was used to encrypt the PDF. This will decrypt the document, making it accessible without a password."
|
||
|
||
[reorganizePages]
|
||
submit = "Reorganize Pages"
|
||
tags = "rearrange,reorder,organize,reorganize,move pages,page order,sort pages,arrange pages,shuffle,resequence"
|
||
|
||
[reorganizePages.error]
|
||
failed = "Failed to reorganize pages"
|
||
|
||
[reorganizePages.results]
|
||
title = "Pages Reorganized"
|
||
|
||
[reorganizePages.settings]
|
||
title = "Settings"
|
||
|
||
[repair]
|
||
description = "This tool will attempt to repair corrupted or damaged PDF files. No additional settings are required."
|
||
submit = "Repair"
|
||
tags = "fix,restore,correction,recover"
|
||
title = "Repair"
|
||
|
||
[repair.error]
|
||
failed = "An error occurred while repairing the PDF."
|
||
|
||
[repair.results]
|
||
title = "Repair Results"
|
||
|
||
[replace-color]
|
||
submit = "Replace"
|
||
title = "Replace-Invert-Color"
|
||
|
||
[replace-color.selectText]
|
||
1 = "Replace or invert color options"
|
||
10 = "Choose text Color"
|
||
11 = "Choose background Color"
|
||
5 = "High contrast color options"
|
||
6 = "White text on black background"
|
||
7 = "Black text on white background"
|
||
8 = "Yellow text on black background"
|
||
9 = "Green text on black background"
|
||
|
||
[replaceColor]
|
||
tags = "Replace Color,Page operations,Back end,server side"
|
||
|
||
[replaceColor.error]
|
||
failed = "An error occurred while processing the color replacement."
|
||
|
||
[replaceColor.labels]
|
||
colourOperation = "Color operation"
|
||
settings = "Settings"
|
||
|
||
[replaceColor.options]
|
||
cmyk = "Convert to CMYK"
|
||
custom = "Custom"
|
||
highContrast = "High contrast"
|
||
invertAll = "Invert all colors"
|
||
|
||
[replaceColor.tooltip.cmyk]
|
||
text = "Convert the PDF from RGB color space to CMYK color space, optimized for professional printing. This process converts colors to the Cyan, Magenta, Yellow, Black model used by printers."
|
||
title = "Convert to CMYK"
|
||
|
||
[replaceColor.tooltip.custom]
|
||
bullet1 = "Text color - Choose the color for text elements"
|
||
bullet2 = "Background color - Set the background color for the document"
|
||
text = "Define your own text and background colors using the color pickers. Perfect for creating branded documents or specific accessibility requirements."
|
||
title = "Custom Colors"
|
||
|
||
[replaceColor.tooltip.description]
|
||
text = "Transform PDF colors to improve readability and accessibility. Choose from high contrast presets, invert all colors, or create custom color schemes."
|
||
title = "Description"
|
||
|
||
[replaceColor.tooltip.header]
|
||
title = "Replace & Invert Color Settings Overview"
|
||
|
||
[replaceColor.tooltip.highContrast]
|
||
bullet1 = "White text on black background - Classic dark mode"
|
||
bullet2 = "Black text on white background - Standard high contrast"
|
||
bullet3 = "Yellow text on black background - High visibility option"
|
||
bullet4 = "Green text on black background - Alternative high contrast"
|
||
text = "Apply predefined high contrast color combinations designed for better readability and accessibility compliance."
|
||
title = "High Contrast"
|
||
|
||
[replaceColor.tooltip.invertAll]
|
||
text = "Completely invert all colors in the PDF, creating a negative-like effect. Useful for creating dark mode versions of documents or reducing eye strain in low-light conditions."
|
||
title = "Invert All Colors"
|
||
|
||
[rotate]
|
||
rotateLeft = "Rotate Counterclockwise"
|
||
rotateRight = "Rotate Clockwise"
|
||
selectRotation = "Select Rotation Angle (Clockwise)"
|
||
submit = "Apply Rotation"
|
||
tags = "turn,flip,orient,rotate,orientation,landscape,portrait,90 degrees,180 degrees,clockwise,counterclockwise,counter-clockwise,fix orientation"
|
||
title = "Rotate PDF"
|
||
|
||
[rotate.error]
|
||
failed = "An error occurred while rotating the PDF."
|
||
|
||
[rotate.preview]
|
||
title = "Rotation Preview"
|
||
|
||
[rotate.tooltip.controls]
|
||
text = "Use the rotation buttons to adjust orientation. Left button rotates counterclockwise, right button rotates clockwise. Each click rotates by 90 degrees."
|
||
title = "Controls"
|
||
|
||
[rotate.tooltip.description]
|
||
text = "Rotate your PDF pages clockwise or counterclockwise in 90-degree increments. All pages in the PDF will be rotated. The preview shows how your document will look after rotation."
|
||
|
||
[rotate.tooltip.header]
|
||
title = "Rotate Settings Overview"
|
||
|
||
[sanitize]
|
||
desc = "Remove potentially harmful elements from PDF files."
|
||
sanitizationResults = "Sanitization Results"
|
||
submit = "Sanitize PDF"
|
||
tags = "clean,purge,remove,sanitize,remove scripts,remove javascript,remove metadata,strip metadata,security,clean document,remove hidden data,privacy"
|
||
title = "Sanitize"
|
||
|
||
[sanitize.error]
|
||
failed = "An error occurred while sanitizing the PDF."
|
||
|
||
[sanitize.options]
|
||
note = "Select the elements you want to remove from the PDF. At least one option must be selected."
|
||
title = "Sanitization Options"
|
||
|
||
[sanitize.options.removeEmbeddedFiles]
|
||
desc = "Remove any files embedded within the PDF"
|
||
label = "Remove Embedded Files"
|
||
|
||
[sanitize.options.removeFonts]
|
||
desc = "Remove embedded fonts from the PDF"
|
||
label = "Remove Fonts"
|
||
|
||
[sanitize.options.removeJavaScript]
|
||
desc = "Remove JavaScript actions and scripts from the PDF"
|
||
label = "Remove JavaScript"
|
||
|
||
[sanitize.options.removeLinks]
|
||
desc = "Remove external links and launch actions from the PDF"
|
||
label = "Remove Links"
|
||
|
||
[sanitize.options.removeMetadata]
|
||
desc = "Remove document information metadata (title, author, etc.)"
|
||
label = "Remove Document Metadata"
|
||
|
||
[sanitize.options.removeXMPMetadata]
|
||
desc = "Remove XMP metadata from the PDF"
|
||
label = "Remove XMP Metadata"
|
||
|
||
[sanitize.steps]
|
||
settings = "Settings"
|
||
|
||
[sanitizePdf]
|
||
tags = "clean,secure,safe,remove-threats"
|
||
|
||
[sanitizePDF]
|
||
title = "Sanitize PDF"
|
||
|
||
[scalePages]
|
||
tags = "resize,adjust,scale,page size,resize page,scale page,change size,adjust size,enlarge,shrink page,fit to page,A4,letter size"
|
||
title = "Adjust page-scale"
|
||
|
||
[scannerEffect]
|
||
tags = "scan,simulate,create,fake scan,look scanned,scanner effect,make look scanned,photocopy effect,simulate scanner,realistic scan"
|
||
|
||
[ScannerImageSplit.selectText]
|
||
1 = "Angle Threshold:"
|
||
10 = "Extra padding (in pixels) around each saved photo so edges aren't cut."
|
||
2 = "Tilt (in degrees) needed before we auto-straighten a photo."
|
||
3 = "Tolerance:"
|
||
4 = "How closely a color must match the page background to count as background. Higher = looser, lower = stricter."
|
||
5 = "Minimum Area:"
|
||
6 = "Smallest photo size (in pixels²) we'll keep to avoid tiny fragments."
|
||
7 = "Minimum Contour Area:"
|
||
8 = "Smallest edge/shape we consider when finding photos (filters dust and specks)."
|
||
9 = "Border Size:"
|
||
|
||
[scannerImageSplit]
|
||
submit = "Extract Image Scans"
|
||
tags = "separate,auto-detect,scans,multi-photo,organize"
|
||
title = "Extracted Images"
|
||
|
||
[scannerImageSplit.error]
|
||
failed = "An error occurred while extracting image scans."
|
||
|
||
[scannerImageSplit.tooltip]
|
||
headsUp = "Heads-up"
|
||
headsUpDesc = "Overlapping photos or backgrounds very close in color to the photos can reduce accuracy-try a lighter or darker background and leave more space."
|
||
problem1 = "Photos not detected → increase Tolerance to 30-50"
|
||
problem2 = "Too many false detections → increase Minimum Area to 15,000-20,000"
|
||
problem3 = "Crops are too tight → increase Border Size to 5-10"
|
||
problem4 = "Tilted photos not straightened → lower Angle Threshold to ~5°"
|
||
problem5 = "Dust/noise boxes → increase Minimum Contour Area to 1000-2000"
|
||
quickFixes = "Quick fixes"
|
||
setupTips = "Setup tips"
|
||
tip1 = "Use a plain, light background"
|
||
tip2 = "Leave a small gap (≈1 cm) between photos"
|
||
tip3 = "Scan at 300-600 DPI"
|
||
tip4 = "Clean the scanner glass"
|
||
title = "Photo Splitter"
|
||
useCase1 = "Scan whole album pages in one go"
|
||
useCase2 = "Split flatbed batches into separate files"
|
||
useCase3 = "Break collages into individual photos"
|
||
useCase4 = "Pull photos from documents"
|
||
whatThisDoes = "What this does"
|
||
whatThisDoesDesc = "Automatically finds and extracts each photo from a scanned page or composite image-no manual cropping."
|
||
whenToUse = "When to use"
|
||
|
||
[search]
|
||
noResults = "No results found"
|
||
placeholder = "Enter search term..."
|
||
searching = "Searching..."
|
||
title = "Search PDF"
|
||
|
||
[selfHosted.offline]
|
||
hideTools = "Hide unavailable tools ▴"
|
||
messageNoFallback = "Tools are unavailable until your server comes back online."
|
||
messageWithFallback = "Some tools require a server connection."
|
||
showTools = "View unavailable tools ▾"
|
||
title = "Your Stirling-PDF server is unreachable"
|
||
toolNotAvailableLocally = "Your Stirling-PDF server is offline and \"{{endpoint}}\" is not available on the local backend."
|
||
|
||
[session]
|
||
expired = "Your session has expired. Please refresh the page and try again."
|
||
|
||
[sessionManagement.tooltip]
|
||
header = "Managing Signing Sessions"
|
||
|
||
[sessionManagement.tooltip.addParticipants]
|
||
bullet1 = "New participants added to the end of signing order"
|
||
bullet2 = "Cannot add participants after session is finalized"
|
||
bullet3 = "Each participant receives a notification when it's their turn"
|
||
description = "You can add more participants to an active session at any time before finalization."
|
||
title = "Adding Participants"
|
||
|
||
[sessionManagement.tooltip.finalization]
|
||
bullet1 = "<b>Full finalization</b>: All participants have signed"
|
||
bullet2 = "<b>Partial finalization</b>: Some participants haven't signed yet"
|
||
bullet3 = "Unsigned participants will be excluded from the final document"
|
||
bullet4 = "Once finalized, you can load the signed PDF into active files"
|
||
description = "Finalization combines all signatures into a single signed PDF. This action cannot be undone."
|
||
title = "Session Finalization"
|
||
|
||
[sessionManagement.tooltip.participantRemoval]
|
||
bullet1 = "Cannot remove participants who have already signed"
|
||
bullet2 = "Removed participants no longer receive notifications"
|
||
bullet3 = "Signing order adjusts automatically"
|
||
description = "Participants can be removed from sessions before they sign."
|
||
title = "Removing Participants"
|
||
|
||
[sessionManagement.tooltip.signatureOrder]
|
||
bullet1 = "Each signature is applied sequentially to the PDF"
|
||
bullet2 = "Later signers can see earlier signatures"
|
||
bullet3 = "Critical for approval workflows and legal chains of custody"
|
||
description = "The order you specify when creating the session determines who signs first."
|
||
title = "Signature Order"
|
||
|
||
[settings]
|
||
close = "Close"
|
||
|
||
[settings.configuration]
|
||
advanced = "Advanced"
|
||
database = "Database"
|
||
endpoints = "Endpoints"
|
||
features = "Features"
|
||
mcp = "MCP Server"
|
||
storageSharing = "File Storage & Sharing"
|
||
systemSettings = "System Settings"
|
||
title = "Configuration"
|
||
|
||
[settings.connection]
|
||
localDescription = "You are using the local backend without an account. Some tools requiring cloud processing or a self-hosted server are unavailable."
|
||
logout = "Log Out"
|
||
server = "Server"
|
||
signIn = "Sign In"
|
||
title = "Connection Mode"
|
||
user = "Logged in as"
|
||
|
||
[settings.connection.mode]
|
||
local = "Local Only"
|
||
saas = "Stirling Cloud"
|
||
selfhosted = "Self-Hosted"
|
||
|
||
[settings.developer]
|
||
apiKeys = "API Keys"
|
||
title = "Developer"
|
||
|
||
[settings.general]
|
||
autoUnzip = "Auto-unzip API responses"
|
||
autoUnzipDescription = "Automatically extract files from ZIP responses"
|
||
autoUnzipFileLimit = "Auto-unzip file limit"
|
||
autoUnzipFileLimitDescription = "Maximum number of files to extract from ZIP"
|
||
autoUnzipFileLimitTooltip = "Only unzip if the ZIP contains this many files or fewer. Set higher to extract larger ZIPs."
|
||
autoUnzipTooltip = "Automatically extract ZIP files returned from API operations. Disable to keep ZIP files intact. This does not affect automation workflows."
|
||
defaultPdfEditor = "Default PDF editor"
|
||
defaultPdfEditorActive = "Stirling PDF is your default PDF editor"
|
||
defaultPdfEditorChecking = "Checking..."
|
||
defaultPdfEditorInactive = "Another application is set as default"
|
||
defaultPdfEditorSet = "Already Default"
|
||
defaultStartupView = "Default view on launch"
|
||
defaultStartupViewDescription = "Choose which view is active when the app starts"
|
||
defaultToolPickerMode = "Default tool picker mode"
|
||
defaultToolPickerModeDescription = "Choose whether the tool picker opens in fullscreen or sidebar by default"
|
||
defaultViewerZoom = "Default reader zoom"
|
||
defaultViewerZoomDescription = "Set the default zoom level when opening PDFs in the reader"
|
||
description = "Configure general application preferences."
|
||
hideUnavailableConversions = "Hide unavailable conversions"
|
||
hideUnavailableConversionsDescription = "Remove disabled conversion options in the Convert tool instead of showing them grayed out."
|
||
hideUnavailableTools = "Hide unavailable tools"
|
||
hideUnavailableToolsDescription = "Remove tools that have been disabled by your server instead of showing them grayed out."
|
||
language = "Language"
|
||
languageDescription = "Choose the display language"
|
||
logout = "Log out"
|
||
setAsDefault = "Set as Default"
|
||
theme = "Theme"
|
||
themeDark = "Dark"
|
||
themeDescription = "Switch between light and dark mode"
|
||
themeLight = "Light"
|
||
title = "General"
|
||
user = "User"
|
||
|
||
[settings.general.enableFeatures]
|
||
action = "Configure"
|
||
and = "and"
|
||
benefit = "Enables user roles, team collaboration, admin controls, and enterprise features."
|
||
dismiss = "Dismiss"
|
||
intro = "Enable user authentication, team management, and workspace features for your organization."
|
||
learnMore = "Learn more in documentation"
|
||
title = "For System Administrators"
|
||
|
||
[settings.general.mode]
|
||
fullscreen = "Fullscreen"
|
||
sidebar = "Sidebar"
|
||
|
||
[settings.general.startupView]
|
||
automate = "Automate"
|
||
read = "Reader"
|
||
tools = "Tools"
|
||
|
||
[settings.general.updates]
|
||
checkForUpdates = "Check for Updates"
|
||
currentBackendVersion = "Current Backend Version"
|
||
currentFrontendVersion = "Current Frontend Version"
|
||
description = "Check for updates and view version information"
|
||
latestVersion = "Latest Version"
|
||
managedByAdmin = "Managed by administrator"
|
||
modeAuto = "Install updates automatically"
|
||
modeDisabled = "Don't check for updates"
|
||
modePrompt = "Ask me before installing updates"
|
||
serverNeedsUpdate = "Server needs to be updated by administrator"
|
||
title = "Software Updates"
|
||
updateBehavior = "Update behavior"
|
||
updateBehaviorDescription = "Choose whether to prompt before installing updates, install them automatically, or skip update checks entirely."
|
||
updateBehaviorError = "Could not change update behavior"
|
||
updateBehaviorErrorLocked = "This setting is locked by your administrator."
|
||
updateBehaviorLockedDescription = "Your administrator has configured how Stirling-PDF handles updates on this machine. Contact them to change this."
|
||
updateBehaviorSaved = "Update behavior saved."
|
||
versionMismatch = "Warning: A mismatch has been detected between the client version and the AppConfig version. Using different versions can lead to compatibility issues, errors, and security risks. Please ensure that server and client are using the same version."
|
||
viewDetails = "View Details"
|
||
|
||
[settings.general.versionInfo]
|
||
description = "Desktop and server version details"
|
||
desktop = "Desktop Version"
|
||
server = "Server Version"
|
||
title = "Version Information"
|
||
|
||
[settings.general.zoomLevel]
|
||
auto = "Auto"
|
||
fitPage = "Fit page"
|
||
fitWidth = "Fit width"
|
||
|
||
[settings.help]
|
||
label = "Tours"
|
||
title = "Help"
|
||
|
||
[settings.help.adminTour]
|
||
description = "Explore team management, system settings, and enterprise features."
|
||
start = "Start"
|
||
title = "Admin Tour"
|
||
|
||
[settings.help.toolsTour]
|
||
description = "Walk through uploading files, picking a tool, and reviewing results."
|
||
start = "Start"
|
||
title = "Tools Tour"
|
||
|
||
[settings.hotkeys]
|
||
capturing = "Press keys… (Esc to cancel)"
|
||
change = "Change shortcut"
|
||
customBadge = "Custom"
|
||
defaultLabel = "Default: {{shortcut}}"
|
||
description = "Customize keyboard shortcuts for quick tool access. Click \"Change shortcut\" and press a new key combination. Press Esc to cancel."
|
||
errorConflict = "Shortcut already used by {{tool}}."
|
||
none = "Not assigned"
|
||
noShortcut = "No shortcut set"
|
||
reset = "Reset"
|
||
searchPlaceholder = "Search tools..."
|
||
shortcut = "Shortcut"
|
||
title = "Keyboard Shortcuts"
|
||
|
||
[settings.hotkeys.errorModifier]
|
||
mac = "Include ⌘ (Command), ⌥ (Option), or another modifier in your shortcut."
|
||
windows = "Include Ctrl, Alt, or another modifier in your shortcut."
|
||
|
||
[settings.legal]
|
||
label = "Legal"
|
||
title = "Legal"
|
||
|
||
[settings.legal.cookiePreferences]
|
||
description = "Review or change your cookie consent choices."
|
||
manage = "Manage"
|
||
|
||
[settings.legal.documents]
|
||
description = "Policies and legal information for this service."
|
||
title = "Legal Documents"
|
||
|
||
[settings.licensingAnalytics]
|
||
audit = "Audit"
|
||
plan = "Plan"
|
||
title = "Licensing & Analytics"
|
||
usageAnalytics = "Usage Analytics"
|
||
|
||
[settings.planBilling]
|
||
currentPlan = "Current Plan"
|
||
loading = "Loading billing information..."
|
||
notAvailable = "Plan & Billing is only available when connected to Stirling Cloud (SaaS mode)."
|
||
title = "Plan & Billing"
|
||
|
||
[settings.planBilling.billing]
|
||
manageBilling = "Manage Billing"
|
||
nextBillingDate = "Next billing date"
|
||
overageCost = "Current overage cost: {{amount}} ({{credits}} credits)"
|
||
|
||
[settings.planBilling.credits]
|
||
estimatedCost = "Estimated cost: {{amount}}"
|
||
freeTierInfo = "Free plan includes {{freeCredits}} credits per month. Upgrade to Team for {{teamCredits}} credits/month and pay-as-you-go overage billing."
|
||
included = "{{count}} credits/month (included)"
|
||
noOverage = "No overage charges this month. You're using your included {{count}} credits."
|
||
overage = "+ {{count}} overage"
|
||
overageInfo = "Overage credits are billed at {{price}} per credit. You'll only pay for what you use beyond your monthly allowance."
|
||
title = "Credit Usage"
|
||
|
||
[settings.planBilling.errors]
|
||
fetchFailed = "Unable to fetch billing data"
|
||
retry = "Retry"
|
||
|
||
[settings.planBilling.status]
|
||
active = "Active"
|
||
canceled = "Canceled"
|
||
pastDue = "Past Due"
|
||
trial = "Trial"
|
||
|
||
[settings.planBilling.team]
|
||
managedByTeam = "Managed by team"
|
||
memberCount = "{{count}} team members"
|
||
|
||
[settings.planBilling.tier]
|
||
enterprise = "Enterprise"
|
||
enterpriseDescription = "Custom enterprise features and support"
|
||
free = "Free"
|
||
freeDescription = "50 credits per month"
|
||
team = "Team"
|
||
teamBadge = "Team"
|
||
teamDescription = "500 credits/month included, automatic overage billing for uninterrupted service"
|
||
teamTooltipCredits = "Team plan includes {{credits}} credits/month."
|
||
teamTooltipFineprint = "Only pay for what you use beyond included credits."
|
||
teamTooltipOverage = "Automatic overage billing at {{price}}/credit ensures uninterrupted service."
|
||
|
||
[settings.planBilling.trial]
|
||
daysRemaining = "{{days}} days remaining"
|
||
daysRemainingFull = "Your trial ends in {{days}} days"
|
||
endDate = "Expires: {{date}}"
|
||
endsOn = "Trial ends"
|
||
title = "Free Trial Active"
|
||
|
||
[settings.planBilling.upgrade]
|
||
cta = "Upgrade to Team"
|
||
featureApi = "API access for automation"
|
||
featureCredits = "{{teamCredits}} credits per month (vs {{freeCredits}} on Free)"
|
||
featureMembers = "Unlimited team members"
|
||
featureSupport = "Priority support"
|
||
featureThroughput = "Faster processing throughput"
|
||
opensInBrowser = "Opens in browser to complete upgrade"
|
||
subtitle = "Upgrade to Team for:"
|
||
title = "Upgrade Your Plan"
|
||
|
||
[settings.policiesPrivacy]
|
||
legal = "Legal"
|
||
privacy = "Privacy"
|
||
title = "Policies & Privacy"
|
||
|
||
[settings.preferences]
|
||
title = "Preferences"
|
||
|
||
[settings.search]
|
||
placeholder = "Search settings pages..."
|
||
|
||
[settings.security]
|
||
description = "Update your password to keep your account secure."
|
||
title = "Security"
|
||
|
||
[settings.security.password]
|
||
confirm = "Confirm new password"
|
||
confirmPlaceholder = "Re-enter your new password"
|
||
current = "Current password"
|
||
currentPlaceholder = "Enter your current password"
|
||
error = "Unable to update password. Please verify your current password and try again."
|
||
mismatch = "New passwords do not match."
|
||
new = "New password"
|
||
newPlaceholder = "Enter a new password"
|
||
required = "All fields are required."
|
||
ssoDisabled = "Password changes are managed by your identity provider."
|
||
subtitle = "Change your password. You will be logged out after updating."
|
||
success = "Password updated successfully. Please sign in again."
|
||
update = "Update password"
|
||
|
||
[settings.securityAuth]
|
||
connections = "Connections"
|
||
security = "Security"
|
||
telegram = "Telegram"
|
||
title = "Security & Authentication"
|
||
|
||
[settings.team]
|
||
title = "Team"
|
||
|
||
[settings.tooltips]
|
||
enableLoginFirst = "Enable login mode first"
|
||
requiresEnterprise = "Requires Enterprise license"
|
||
|
||
[settings.workspace]
|
||
people = "People"
|
||
teams = "Teams"
|
||
title = "Workspace"
|
||
|
||
[setup.login]
|
||
connectingTo = "Connecting to:"
|
||
oauthPending = "Opening browser for authentication..."
|
||
orContinueWith = "Or continue with email"
|
||
skipSignIn = "Continue without signing in"
|
||
sso = "Single Sign-On"
|
||
submit = "Login"
|
||
|
||
[setup.login.error]
|
||
emptyEmail = "Please enter your email"
|
||
emptyPassword = "Please enter your password"
|
||
emptyUsername = "Please enter your username"
|
||
oauthFailed = "OAuth login failed. Please try again."
|
||
|
||
[setup.saas]
|
||
title = "Sign in to Stirling"
|
||
|
||
[setup.selfhosted]
|
||
changeServerLocked = "Your organization has restricted this app to a specific server"
|
||
link = "or connect to a self-hosted account"
|
||
subtitle = "Enter your server credentials"
|
||
switchToLocal = "Use local tools instead"
|
||
title = "Sign in to Server"
|
||
|
||
[setup.selfhosted.unreachable]
|
||
changeServer = "Connect to a different server"
|
||
continueOffline = "Use local tools instead"
|
||
message = "Could not reach {{url}}. Check that the server is running and accessible."
|
||
retry = "Retry"
|
||
title = "Cannot connect to server"
|
||
|
||
[setup.server]
|
||
subtitle = "Enter your self-hosted server URL"
|
||
testing = "Testing connection..."
|
||
title = "Connect to Server"
|
||
useLast = "Last used server: {{serverUrl}}"
|
||
|
||
[setup.server.error]
|
||
configFetch = "Failed to fetch server configuration (status {{status}})"
|
||
configFetchError = "Failed to fetch server configuration: {{error}}"
|
||
emptyUrl = "Please enter a server URL"
|
||
invalidUrl = "Invalid URL format. Please enter a valid URL like https://your-server.com"
|
||
testFailed = "Connection test failed"
|
||
unreachable = "Could not connect to server"
|
||
|
||
[setup.server.error.securityDisabled]
|
||
body = "This server does not have login enabled. To connect to this server, you must enable authentication:"
|
||
step1 = "Set DOCKER_ENABLE_SECURITY=true in your environment"
|
||
step2 = "Or set security.enableLogin=true in settings.yml"
|
||
step3 = "Restart the server"
|
||
title = "Login Not Enabled"
|
||
|
||
[setup.server.url]
|
||
description = "Enter the full URL of your self-hosted Stirling PDF server"
|
||
label = "Server URL"
|
||
|
||
[showJS]
|
||
done = "JavaScript extracted"
|
||
processing = "Extracting JavaScript..."
|
||
results = "Result"
|
||
submit = "Show"
|
||
tags = "JS"
|
||
title = "Show Javascript"
|
||
|
||
[showJS.view]
|
||
title = "Extracted JavaScript"
|
||
|
||
[sign]
|
||
activate = "Activate Signature Placement"
|
||
add = "Add"
|
||
addToAll = "Add to all pages"
|
||
applySignatures = "Apply Signatures"
|
||
clear = "Clear"
|
||
deactivate = "Stop Placing Signatures"
|
||
delete = "Delete"
|
||
first = "First page"
|
||
header = "Sign PDFs"
|
||
last = "Last page"
|
||
maintainRatio = "Toggle maintain aspect ratio"
|
||
next = "Next page"
|
||
noSavedSigs = "No saved signatures found"
|
||
personalSigs = "Personal Signatures"
|
||
previous = "Previous page"
|
||
redo = "Redo"
|
||
save = "Save Signature"
|
||
sharedSigs = "Shared Signatures"
|
||
submit = "Sign Document"
|
||
tags = "signature,autograph,e-sign,electronic signature,digital signature,sign document,approval,signoff,authorize,endorse,ink signature,handwriting"
|
||
title = "Sign"
|
||
undo = "Undo"
|
||
updateAndPlace = "Update and Place"
|
||
upload = "Upload Image"
|
||
|
||
[sign.canvas]
|
||
clear = "Clear canvas"
|
||
clickToOpen = "Click to open the drawing canvas"
|
||
colorLabel = "Color"
|
||
colorPickerTitle = "Choose stroke color"
|
||
heading = "Draw your signature"
|
||
modalTitle = "Draw your signature"
|
||
penSizeLabel = "Pen size"
|
||
penSizePlaceholder = "Size"
|
||
|
||
[sign.draw]
|
||
clear = "Clear"
|
||
title = "Draw your signature"
|
||
|
||
[sign.error]
|
||
failed = "An error occurred while signing the PDF."
|
||
|
||
[sign.image]
|
||
backgroundRemovalFailedMessage = "Could not remove the background from the image. Using original image instead."
|
||
backgroundRemovalFailedTitle = "Background removal failed"
|
||
hint = "Upload a PNG or JPG image of your signature"
|
||
label = "Upload signature image"
|
||
placeholder = "Select image file"
|
||
processing = "Processing image..."
|
||
removeBackground = "Remove white background (make transparent)"
|
||
|
||
[sign.instructions]
|
||
canvas = "After drawing your signature in the canvas, close the modal then click anywhere on the PDF to place it."
|
||
image = "After uploading your signature image above, click anywhere on the PDF to place it."
|
||
noSignature = "Create a signature above to enable placement tools."
|
||
paused = "Placement paused"
|
||
resumeHint = "Resume placement to click and add your signature."
|
||
saved = "Select a saved signature above, then click anywhere on the PDF to place it."
|
||
text = "After entering your name above, click anywhere on the PDF to place your signature."
|
||
title = "How to add signature"
|
||
|
||
[sign.mode]
|
||
move = "Move Signature"
|
||
pause = "Pause placement"
|
||
place = "Place Signature"
|
||
resume = "Resume placement"
|
||
|
||
[sign.results]
|
||
title = "Signature Results"
|
||
|
||
[sign.saved]
|
||
carouselPosition = "{{current}} of {{total}}"
|
||
defaultCanvasLabel = "Drawing signature"
|
||
defaultImageLabel = "Uploaded signature"
|
||
defaultLabel = "Signature"
|
||
defaultTextLabel = "Typed signature"
|
||
delete = "Remove"
|
||
description = "Reuse saved signatures at any time."
|
||
emptyDescription = "Draw, upload, or type a signature above, then use \"Save to library\" to keep up to {{max}} favorites ready to use."
|
||
emptyTitle = "No saved signatures yet"
|
||
heading = "Saved signatures"
|
||
label = "Label"
|
||
limitDescription = "Remove a saved signature before adding new ones (max {{max}})."
|
||
limitTitle = "Limit reached"
|
||
next = "Next"
|
||
noChanges = "Current signature is already saved."
|
||
personalDescription = "Only you can see these signatures."
|
||
personalHeading = "Personal Signatures"
|
||
prev = "Previous"
|
||
saveButton = "Save signature"
|
||
savePersonal = "Save Personal"
|
||
saveShared = "Save Shared"
|
||
saveUnavailable = "Create a signature first to save it."
|
||
sharedDescription = "All users can see and use these signatures."
|
||
sharedHeading = "Shared Signatures"
|
||
tempStorageDescription = "Signatures are stored in your browser only. They will be lost if you clear browser data or switch browsers."
|
||
tempStorageTitle = "Temporary browser storage"
|
||
use = "Use signature"
|
||
|
||
[sign.saved.status]
|
||
saved = "Saved"
|
||
|
||
[sign.saved.type]
|
||
canvas = "Drawing"
|
||
image = "Upload"
|
||
text = "Text"
|
||
|
||
[sign.step]
|
||
createDesc = "Choose how you want to create the signature"
|
||
place = "Place & save"
|
||
placeDesc = "Position the signature on your PDF"
|
||
|
||
[sign.steps]
|
||
configure = "Configure Signature"
|
||
|
||
[sign.text]
|
||
colorLabel = "Text color"
|
||
fontLabel = "Font"
|
||
fontSizeLabel = "Font size"
|
||
fontSizePlaceholder = "Type or select font size (8-200)"
|
||
name = "Text"
|
||
placeholder = "Enter text"
|
||
|
||
[sign.type]
|
||
canvas = "Canvas"
|
||
draw = "Draw"
|
||
image = "Image"
|
||
saved = "Saved"
|
||
text = "Text"
|
||
title = "Signature Type"
|
||
|
||
[signatureSettings.tooltip]
|
||
header = "Signature Appearance Settings"
|
||
|
||
[signatureSettings.tooltip.location]
|
||
bullet1 = "Examples: \"New York, USA\", \"London Office\", \"Remote\""
|
||
bullet2 = "Not the same as page position"
|
||
bullet3 = "May be required for certain legal jurisdictions"
|
||
description = "Optional geographic location where the signature was applied. Stored in certificate metadata."
|
||
title = "Signature Location"
|
||
|
||
[signatureSettings.tooltip.logo]
|
||
bullet1 = "Displayed alongside signature and text"
|
||
bullet2 = "Supports PNG, JPG formats"
|
||
bullet3 = "Enhances professional appearance"
|
||
description = "Add a company logo to visible signatures for branding and authenticity."
|
||
title = "Company Logo"
|
||
|
||
[signatureSettings.tooltip.reason]
|
||
bullet1 = "Examples: \"Approval\", \"Contract Agreement\", \"Review Complete\""
|
||
bullet2 = "Visible in PDF signature properties"
|
||
bullet3 = "Useful for audit trails and compliance"
|
||
description = "Optional text explaining why the document is being signed. Stored in certificate metadata."
|
||
title = "Signature Reason"
|
||
|
||
[signatureSettings.tooltip.visibility]
|
||
bullet1 = "<b>Visible</b>: Signature appears on PDF with custom appearance"
|
||
bullet2 = "<b>Invisible</b>: Certificate embedded without visual mark"
|
||
bullet3 = "Invisible signatures still provide cryptographic validation"
|
||
description = "Controls whether the signature is visible on the document or embedded invisibly."
|
||
title = "Signature Visibility"
|
||
|
||
[signRequest]
|
||
declined = "Sign request declined"
|
||
fetchFailed = "Failed to load sign request"
|
||
signed = "Document signed successfully"
|
||
|
||
[signSession]
|
||
created = "Signing request sent"
|
||
createFailed = "Failed to create signing request"
|
||
|
||
[signup]
|
||
accountCreatedSuccessfully = "Account created successfully! You can now sign in."
|
||
alreadyHaveAccount = "I already have an account"
|
||
checkEmailConfirmation = "Check your email for a confirmation link to complete your registration."
|
||
confirmPassword = "Confirm password"
|
||
confirmPasswordPlaceholder = "Confirm password"
|
||
confirmPasswordRequired = "Please confirm your password"
|
||
creatingAccount = "Creating Account..."
|
||
email = "Email"
|
||
emailRequired = "Email is required"
|
||
enterEmail = "Enter your email"
|
||
enterName = "Enter your name"
|
||
enterPassword = "Enter your password"
|
||
invalidEmail = "Please enter a valid email address"
|
||
name = "Name"
|
||
nameRequired = "Name is required"
|
||
or = "or"
|
||
password = "Password"
|
||
passwordRequired = "Password is required"
|
||
passwordsDoNotMatch = "Passwords do not match"
|
||
passwordTooShort = "Password must be at least 6 characters long"
|
||
pleaseFillAllFields = "Please fill in all fields"
|
||
signUp = "Sign Up"
|
||
signUpWith = "Sign up with"
|
||
skip = "Skip"
|
||
subtitle = "Join Stirling PDF to get started"
|
||
title = "Create an account"
|
||
unexpectedError = "Unexpected error: {{message}}"
|
||
|
||
[sizes]
|
||
large = "Large"
|
||
medium = "Medium"
|
||
small = "Small"
|
||
x-large = "X-Large"
|
||
|
||
[split]
|
||
resultsTitle = "Split Results"
|
||
selectMethod = "Select a split method"
|
||
splitPages = "Enter pages to split on:"
|
||
submit = "Split"
|
||
tags = "divide,separate,break,split,extract pages,separate pages,divide document,break apart,separate files,unbind,split by page,divide by chapter"
|
||
title = "Split PDF"
|
||
|
||
[split.error]
|
||
failed = "An error occurred while splitting the PDF."
|
||
|
||
[split.methods.byChapters]
|
||
name = "Chapters"
|
||
tooltip = "Uses PDF bookmarks to determine split points"
|
||
|
||
[split.methods.byDocCount]
|
||
name = "Document Count"
|
||
tooltip = "Enter how many files you want to create"
|
||
|
||
[split.methods.byPageCount]
|
||
name = "Page Count"
|
||
tooltip = "Enter the number of pages for each split file"
|
||
|
||
[split.methods.byPageDivider]
|
||
name = "Page Divider"
|
||
tooltip = "Use QR code divider sheets between documents when scanning"
|
||
|
||
[split.methods.byPages]
|
||
name = "Page Numbers"
|
||
tooltip = "Enter page numbers separated by commas or ranges with hyphens"
|
||
|
||
[split.methods.byPoster]
|
||
name = "Printable Chunks"
|
||
tooltip = "Divide oversized pages into smaller chunks suitable for printing on standard paper (A4, Letter, etc.)"
|
||
|
||
[split.methods.bySections]
|
||
name = "Sections"
|
||
tooltip = "Split each page into horizontal and vertical sections"
|
||
|
||
[split.methods.bySize]
|
||
name = "File Size"
|
||
tooltip = "Specify maximum file size (e.g. 10MB, 500KB)"
|
||
|
||
[split.methods.prefix]
|
||
splitAt = "Split at"
|
||
splitBy = "Split by"
|
||
splitInto = "Split into"
|
||
|
||
[split.methodSelection.tooltip]
|
||
bullet1 = "Click on a method card to select it"
|
||
bullet2 = "Hover over each card to see a quick description"
|
||
bullet3 = "The settings step will appear after you select a method"
|
||
bullet4 = "You can change methods at any time before processing"
|
||
title = "Choose Your Split Method"
|
||
|
||
[split.methodSelection.tooltip.header]
|
||
text = "Choose how you want to split your PDF document. Each method is optimized for different use cases and document types."
|
||
title = "Split Method Selection"
|
||
|
||
[split.poster]
|
||
rightToLeft = "Split right-to-left"
|
||
|
||
[split.poster.pageSize]
|
||
description = "Size of output pages for printing"
|
||
label = "Target Page Size"
|
||
|
||
[split.poster.xFactor]
|
||
description = "Number of columns to split each page into"
|
||
label = "Horizontal Divisions"
|
||
|
||
[split.poster.yFactor]
|
||
description = "Number of rows to split each page into"
|
||
label = "Vertical Divisions"
|
||
|
||
[split.settings]
|
||
selectMethodFirst = "Please select a split method first"
|
||
|
||
[split.steps]
|
||
chooseMethod = "Choose Method"
|
||
settings = "Settings"
|
||
|
||
[split.tooltip.byChapters]
|
||
bullet1 = "Bookmark Level: Which level to split on (1=top level)"
|
||
bullet2 = "Include Metadata: Preserve document properties"
|
||
bullet3 = "Allow Duplicates: Handle repeated bookmark names"
|
||
text = "Use PDF bookmarks to automatically split at chapter boundaries. Requires PDFs with bookmark structure."
|
||
title = "Split by Chapters"
|
||
|
||
[split.tooltip.byDocCount]
|
||
bullet1 = "Enter the number of output files you want"
|
||
bullet2 = "Pages are distributed as evenly as possible"
|
||
bullet3 = "Useful when you need a specific number of files"
|
||
text = "Create a specific number of output files by evenly distributing pages across them."
|
||
title = "Split by Document Count"
|
||
|
||
[split.tooltip.byPageCount]
|
||
bullet1 = "Enter the number of pages per output file"
|
||
bullet2 = "Last file may have fewer pages if not evenly divisible"
|
||
bullet3 = "Useful for batch processing workflows"
|
||
text = "Create multiple PDFs with a specific number of pages each. Perfect for creating uniform document chunks."
|
||
title = "Split by Page Count"
|
||
|
||
[split.tooltip.byPageDivider]
|
||
bullet1 = "Print divider sheets from the download link"
|
||
bullet2 = "Insert divider sheets between your documents"
|
||
bullet3 = "Scan all documents together as one PDF"
|
||
bullet4 = "Upload - divider pages are automatically detected and removed"
|
||
bullet5 = "Enable Duplex Mode if scanning both sides of divider sheets"
|
||
text = "Automatically split scanned documents using physical divider sheets with QR codes. Perfect for processing multiple documents scanned together."
|
||
title = "Split by Page Divider"
|
||
|
||
[split.tooltip.byPages]
|
||
bullet1 = "Single split points: 3,7 (splits after pages 3 and 7)"
|
||
bullet2 = "Range split points: 3-8 (splits before page 3 and after page 8)"
|
||
bullet3 = "Mixed: 2,5-10,15 (splits after page 2, before page 5, after page 10, and after page 15)"
|
||
text = "Split your PDF at specific page numbers. Using 'n' splits after page n. Using 'n-m' splits before page n and after page m."
|
||
title = "Split at Page Numbers"
|
||
|
||
[split.tooltip.byPoster]
|
||
bullet1 = "Target Page Size: Choose output paper size (A4, Letter, etc.)"
|
||
bullet2 = "Horizontal/Vertical Divisions: Grid size for splitting"
|
||
bullet3 = "Right-to-Left: Reverse column order for RTL layouts"
|
||
bullet4 = "Print and assemble the pieces to create your poster"
|
||
text = "Split large PDF pages into smaller printable chunks suitable for standard paper sizes. Perfect for creating poster prints from oversized pages."
|
||
title = "Split for Poster Print"
|
||
|
||
[split.tooltip.bySections]
|
||
bullet1 = "Horizontal: Number of rows to create"
|
||
bullet2 = "Vertical: Number of columns to create"
|
||
bullet3 = "Merge: Combine all sections into one PDF"
|
||
text = "Divide each page into a grid of sections. Useful for splitting documents with multiple columns or extracting specific areas."
|
||
title = "Split by Grid Sections"
|
||
|
||
[split.tooltip.bySize]
|
||
bullet1 = "Use MB for larger files (e.g., 10MB)"
|
||
bullet2 = "Use KB for smaller files (e.g., 500KB)"
|
||
bullet3 = "System will split at page boundaries"
|
||
text = "Create multiple PDFs that don't exceed a specified file size. Ideal for file size limitations or email attachments."
|
||
title = "Split by File Size"
|
||
|
||
[split.value.docCount]
|
||
label = "Number of Files"
|
||
placeholder = "e.g. 3, 5"
|
||
|
||
[split.value.fileSize]
|
||
label = "File Size"
|
||
placeholder = "e.g. 10MB, 500KB"
|
||
|
||
[split.value.pageCount]
|
||
label = "Pages per File"
|
||
placeholder = "e.g. 5, 10"
|
||
|
||
[split-by-sections]
|
||
merge = "Merge Into One PDF"
|
||
tags = "Section Split, Divide, Customize"
|
||
title = "Split PDF by Sections"
|
||
|
||
[split-by-sections.customPages]
|
||
label = "Custom Page Numbers"
|
||
placeholder = "e.g. 2,4,6"
|
||
|
||
[split-by-sections.horizontal]
|
||
label = "Horizontal Divisions"
|
||
placeholder = "Enter number of horizontal divisions"
|
||
|
||
[split-by-sections.splitMode]
|
||
custom = "Custom pages"
|
||
description = "Choose how to split the pages"
|
||
label = "Split Mode"
|
||
splitAll = "Split all pages"
|
||
splitAllExceptFirst = "Split all except first"
|
||
splitAllExceptFirstAndLast = "Split all except first and last"
|
||
splitAllExceptLast = "Split all except last"
|
||
|
||
[split-by-sections.vertical]
|
||
label = "Vertical Divisions"
|
||
placeholder = "Enter number of vertical divisions"
|
||
|
||
[split-by-size-or-count]
|
||
title = "Split PDF by Size or Count"
|
||
|
||
[split-by-size-or-count.value]
|
||
label = "Enter Value"
|
||
placeholder = "Enter size (e.g., 2MB or 3KB) or count (e.g., 5)"
|
||
|
||
[splitByChapters]
|
||
allowDuplicates = "Allow Duplicates"
|
||
bookmarkLevel = "Bookmark Level"
|
||
includeMetadata = "Include Metadata"
|
||
title = "Split PDF by Chapters"
|
||
|
||
[splitPdfByChapters]
|
||
tags = "split,chapters,bookmarks,organize"
|
||
|
||
[storageShare]
|
||
accessDenied = "You do not have access to this shared file. Ask the owner to share it with you."
|
||
accessDeniedBody = "You do not have access to this file. Ask the owner to share it with you."
|
||
accessDeniedTitle = "No access"
|
||
accessed = "Accessed"
|
||
accessFailed = "Unable to load activity."
|
||
accessLimitedCommenter = "Comment access is coming soon. Ask the owner for editor access if you need to download."
|
||
accessLimitedTitle = "Limited access"
|
||
accessLimitedViewer = "This link is view-only. Ask the owner for editor access if you need to download."
|
||
addUser = "Add"
|
||
bulkDescription = "Create one link to share all checked files with signed-in users."
|
||
bulkTitle = "Share checked files"
|
||
commenterHint = "Commenting is coming soon."
|
||
copied = "Link copied to clipboard"
|
||
copy = "Copy"
|
||
copyFailed = "Copy failed"
|
||
copyLink = "Copy share link"
|
||
createdAt = "Created"
|
||
description = "Create a share link for this file. Signed-in users with the link can access it."
|
||
download = "Download"
|
||
downloaded = "Downloaded"
|
||
downloadFailed = "Unable to download this file."
|
||
downloadsCount = "Downloads: {{count}}"
|
||
emailWarningBody = "This looks like an email address. If this person is not already a Stirling PDF user, they will not be able to access the file."
|
||
emailWarningConfirm = "Share anyway"
|
||
emailWarningTitle = "Email address"
|
||
errorTitle = "Share failed"
|
||
expiredBody = "This share link is invalid or has expired."
|
||
expiredTitle = "Link expired"
|
||
failure = "Unable to generate a share link. Please try again."
|
||
fileCount = "{{count}} files"
|
||
fileLabel = "File"
|
||
generate = "Generate Link"
|
||
generated = "Share link generated"
|
||
goToLogin = "Go to login"
|
||
hideActivity = "Hide activity"
|
||
invalidUsername = "Enter a valid username or email address."
|
||
lastAccessed = "Last accessed"
|
||
linkAccessTitle = "Share link access"
|
||
linkLabel = "Share link"
|
||
linksDisabled = "Share links are disabled."
|
||
linksDisabledBody = "Share links are disabled by your server settings."
|
||
loadFailed = "Unable to open shared file."
|
||
loading = "Loading share link..."
|
||
loginPrompt = "Sign in to access this shared file."
|
||
loginRequired = "Login required"
|
||
manage = "Manage sharing"
|
||
manageDescription = "Create and manage links to share this file."
|
||
manageLoadFailed = "Unable to load share links."
|
||
manageTitle = "Manage Sharing"
|
||
noActivity = "No activity yet."
|
||
noLinks = "No active share links yet."
|
||
noSharedUsers = "No users have access yet."
|
||
openInApp = "Open in Stirling PDF"
|
||
ownerLabel = "Owner"
|
||
ownerOnly = "Only the owner can manage sharing."
|
||
ownerUnknown = "Unknown"
|
||
removeLink = "Remove link"
|
||
removeUser = "Remove"
|
||
requiresLogin = "This shared file requires login."
|
||
revoked = "Share link removed"
|
||
revokeFailed = "Unable to remove the share link."
|
||
roleCommenter = "Commenter"
|
||
roleEditor = "Editor"
|
||
roleLabel = "Role"
|
||
roleViewer = "Viewer"
|
||
selectSingleFile = "Select a single file to manage sharing."
|
||
sharedUsersTitle = "Shared users"
|
||
shareHeading = "Shared file"
|
||
sharingDisabled = "Sharing is disabled."
|
||
sharingDisabledBody = "Sharing has been disabled by your server settings."
|
||
title = "Share File"
|
||
titleDefault = "Shared file"
|
||
tryAgain = "Please try again later."
|
||
unknownUser = "Unknown user"
|
||
userAdded = "User added to shared list."
|
||
userAddFailed = "Unable to share with that user."
|
||
usernameLabel = "Username or email"
|
||
usernamePlaceholder = "Enter a username or email"
|
||
userRemoved = "User removed from shared list."
|
||
userRemoveFailed = "Unable to remove that user."
|
||
viewActivity = "View activity"
|
||
viewed = "Viewed"
|
||
viewsCount = "Views: {{count}}"
|
||
|
||
[storageUpload]
|
||
bulkDescription = "This uploads the checked files to your server storage."
|
||
bulkTitle = "Upload checked files"
|
||
description = "This uploads the current file to server storage for your own access."
|
||
errorTitle = "Upload failed"
|
||
failure = "Upload failed. Please check your login and storage settings."
|
||
featureDisabled = "Saving to the server isn't enabled on this server."
|
||
fileCount = "{{count}} files"
|
||
fileLabel = "File"
|
||
hint = "Public links and access modes are controlled by your server settings."
|
||
more = " +{{count}} more"
|
||
success = "Uploaded to server"
|
||
title = "Upload to Server"
|
||
updateButton = "Update on Server"
|
||
uploadButton = "Upload to Server"
|
||
|
||
[survey]
|
||
title = "Stirling-PDF Survey"
|
||
|
||
[swagger]
|
||
tags = "api,documentation,swagger,endpoints,development"
|
||
title = "API Documentation"
|
||
|
||
[tableExtraxt]
|
||
tags = "CSV,Table Extraction,extract,convert"
|
||
|
||
[team]
|
||
cancelInviteError = "Failed to cancel invitation"
|
||
confirmCancelInvite = "Are you sure you want to cancel this invitation?"
|
||
confirmLeave = "Are you sure you want to leave this team?"
|
||
confirmLeaveLeader = "As a team leader, leaving will remove you from the team. Are you sure?"
|
||
confirmRemove = "Are you sure you want to remove this member?"
|
||
editName = "Edit team name"
|
||
inviteCancelled = "Invitation canceled"
|
||
inviteError = "Failed to send invitation"
|
||
inviteSent = "Invitation sent successfully"
|
||
leader = "Leader"
|
||
leaveButton = "Leave Team"
|
||
leaveError = "Failed to leave team"
|
||
leaveSuccess = "Successfully left team"
|
||
loading = "Loading team information..."
|
||
memberCount = "{{count}} members"
|
||
memberRemoved = "Member removed successfully"
|
||
namePlaceholder = "Enter team name"
|
||
personal = "Personal"
|
||
removeError = "Failed to remove member"
|
||
renameError = "Failed to rename team"
|
||
renameSuccess = "Team renamed successfully"
|
||
|
||
[team.invitationBanner]
|
||
acceptButton = "Accept"
|
||
message = "has invited you to join"
|
||
rejectButton = "Decline"
|
||
|
||
[team.invite]
|
||
cancelLabel = "Cancel"
|
||
invalidEmail = "Invalid email address"
|
||
placeholder = "Enter email address"
|
||
sendButton = "Send Invitation"
|
||
title = "Invite Team Member"
|
||
|
||
[team.members]
|
||
emailColumn = "Email"
|
||
empty = "No team members yet"
|
||
nameColumn = "Name"
|
||
pending = "Pending"
|
||
remove = "Remove"
|
||
roleColumn = "Role"
|
||
title = "Team Members"
|
||
|
||
[textAlign]
|
||
center = "Center"
|
||
left = "Left"
|
||
right = "Right"
|
||
|
||
[textInput]
|
||
clear = "Clear input"
|
||
|
||
[time.relative]
|
||
daysAgo = "{{count}}d ago"
|
||
hoursAgo = "{{count}}h ago"
|
||
justNow = "just now"
|
||
minutesAgo = "{{count}}m ago"
|
||
|
||
[timestampPdf]
|
||
desc = "Add an RFC 3161 document timestamp to your PDF using a trusted Time Stamp Authority (TSA) server."
|
||
results = "Timestamp Results"
|
||
submit = "Apply Timestamp"
|
||
tags = "timestamp,RFC 3161,TSA,time stamp authority,document timestamp,proof of existence,timestamp token,trusted timestamp,sign timestamp,notarize"
|
||
title = "Timestamp PDF"
|
||
|
||
[timestampPdf.error]
|
||
failed = "An error occurred while timestamping the PDF."
|
||
|
||
[timestampPdf.options]
|
||
note = "Only a SHA-256 hash of your document is sent to the TSA server; the PDF file itself is never sent to the TSA server."
|
||
title = "Timestamp Server (TSA)"
|
||
|
||
[timestampPdf.options.tsaUrl]
|
||
desc = "Pick a trusted Time Stamp Authority"
|
||
label = "Select a TSA server"
|
||
|
||
[timestampPdf.steps]
|
||
settings = "Settings"
|
||
|
||
[toast]
|
||
dismiss = "Dismiss"
|
||
toggleDetails = "Toggle details"
|
||
|
||
[tool]
|
||
endpointUnavailable = "This tool is unavailable on your server."
|
||
endpointUnavailableClickable = "Not available in this mode. Click to sign in."
|
||
filesLoading = "Files are still loading, please wait."
|
||
filesLoadingProgress = "{{loaded}} / {{total}} files loading..."
|
||
invalidParams = "Fill in the required settings."
|
||
noFiles = "Add a file to get started."
|
||
scopeFiles = "files"
|
||
scopeThisFile = "this file"
|
||
selectFilesHint = "Select files in Active Files to run this tool"
|
||
singleFileScope = "Only applying to: {{fileName}}"
|
||
viewerMode = "Switch to the file editor to add multiple files."
|
||
|
||
[toolPanel]
|
||
alpha = "Alpha"
|
||
backToAllTools = "Back to all tools"
|
||
collapse = "Collapse panel"
|
||
expand = "Expand panel"
|
||
goBack = "Go back"
|
||
placeholder = "Choose a tool to get started"
|
||
premiumFeature = "Premium feature:"
|
||
toolsHeader = "Tools"
|
||
viewAllTools = "View all tools"
|
||
|
||
[toolPanel.fullscreen]
|
||
comingSoon = "Coming soon:"
|
||
favorite = "Add to favorites"
|
||
favorites = "Favorites"
|
||
heading = "All tools (fullscreen view)"
|
||
noResults = "Try adjusting your search or toggle descriptions to find what you need."
|
||
recommended = "Recommended"
|
||
selfHostedOffline = "Requires your Stirling-PDF server (currently offline):"
|
||
showDetails = "Show Details"
|
||
unavailable = "Disabled by server administrator:"
|
||
unavailableDependency = "Unavailable - required tool missing on server:"
|
||
unfavorite = "Remove from favorites"
|
||
|
||
[toolPanel.modePrompt]
|
||
chooseFullscreen = "Use fullscreen mode"
|
||
chooseSidebar = "Use sidebar mode"
|
||
description = "Preview both layouts and decide how you want to explore Stirling PDF tools."
|
||
dismiss = "Maybe later"
|
||
fullscreenDescription = "Browse every tool in a catalog that covers the workspace until you pick one."
|
||
fullscreenTitle = "Fullscreen mode - (legacy)"
|
||
recommended = "Recommended"
|
||
sidebarDescription = "Keep tools alongside your workspace for quick switching."
|
||
sidebarTitle = "Sidebar mode"
|
||
title = "Choose how you browse tools"
|
||
|
||
[toolPicker]
|
||
allTools = "ALL TOOLS"
|
||
noToolsFound = "No tools found"
|
||
quickAccess = "QUICK ACCESS"
|
||
searchPlaceholder = "Search tools..."
|
||
|
||
[toolPicker.categories]
|
||
advancedTools = "Advanced Tools"
|
||
recommendedTools = "Recommended Tools"
|
||
standardTools = "Standard Tools"
|
||
|
||
[toolPicker.subcategories]
|
||
advancedFormatting = "Advanced Formatting"
|
||
automation = "Automation"
|
||
developerTools = "Developer Tools"
|
||
documentReview = "Document Review"
|
||
documentSecurity = "Document Security"
|
||
extraction = "Extraction"
|
||
general = "General"
|
||
pageFormatting = "Page Formatting"
|
||
removal = "Removal"
|
||
signing = "Signing"
|
||
verification = "Verification"
|
||
|
||
[tools]
|
||
noSearchResults = "No tools found"
|
||
noTools = "No tools available"
|
||
|
||
[tooltip]
|
||
close = "Close tooltip"
|
||
|
||
[unlockPDFForms]
|
||
description = "This tool will remove read-only restrictions from PDF form fields, making them editable and fillable."
|
||
submit = "Unlock Forms"
|
||
tags = "remove,delete,form,field,readonly"
|
||
title = "Remove Read-Only from Form Fields"
|
||
|
||
[unlockPDFForms.error]
|
||
failed = "An error occurred while unlocking PDF forms."
|
||
|
||
[unlockPDFForms.results]
|
||
title = "Unlocked Forms Results"
|
||
|
||
[update]
|
||
allReleases = "All Releases"
|
||
breaking = "Breaking"
|
||
breakingChanges = "Breaking Changes"
|
||
breakingChangesDefault = "This version contains breaking changes."
|
||
breakingChangesDetected = "Breaking Changes Detected"
|
||
breakingChangesMessage = "Some versions contain breaking changes. Please review the migration guides below before updating."
|
||
close = "Close"
|
||
closeModal = "Close update modal"
|
||
current = "Current Version"
|
||
defaultRecommendation = "This update contains important fixes and improvements."
|
||
downloadLatest = "Download Latest"
|
||
later = "Later"
|
||
latest = "Latest Version"
|
||
loadingDetailedInfo = "Loading detailed information..."
|
||
migrationGuide = "Migration Guide"
|
||
migrationGuides = "Migration Guides"
|
||
migrationGuidesDesc = "Review important changes before updating."
|
||
modalSubtitle = "A new version of Stirling PDF is ready to install."
|
||
modalTitle = "Update Available"
|
||
notes = "Notes"
|
||
releaseNotes = "Release Notes"
|
||
showLess = "Show fewer versions"
|
||
showMore = "Show all {{count}} versions"
|
||
stable = "STABLE"
|
||
updateAvailable = "Update Available"
|
||
urgentUpdateAvailable = "Urgent Update"
|
||
version = "Version"
|
||
versionHistory = "Version History"
|
||
viewGuide = "View Guide"
|
||
whatsNewIn = "What's new in"
|
||
|
||
[update.priority]
|
||
low = "Low"
|
||
minor = "Minor"
|
||
normal = "Normal"
|
||
urgent = "Urgent"
|
||
|
||
[upgradeBanner]
|
||
attentionBody = "Your admin needs to sign in to see more info. Please contact them immediately."
|
||
attentionBodyAdmin = "Review the license requirements to keep this server compliant."
|
||
attentionTitle = "This server needs admin attention"
|
||
message = "Get the most out of Stirling PDF with unlimited users and advanced features"
|
||
seeInfo = "See info"
|
||
title = "Upgrade to Server Plan"
|
||
upgradeButton = "Upgrade Now"
|
||
|
||
[URLToPDF]
|
||
tags = "web-capture,save-page,web-to-doc,archive"
|
||
title = "URL To PDF"
|
||
|
||
[usage]
|
||
aboutUsageAnalytics = "About Usage Analytics"
|
||
configureSettings = "Configure Analytics Settings"
|
||
error = "Error loading usage statistics"
|
||
noData = "No data available"
|
||
noDataMessage = "No usage statistics are currently available."
|
||
usageAnalyticsExplanation = "Usage analytics track endpoint requests and tool usage patterns. Combined with the Audit Logging dashboard, you get complete visibility into system activity, performance, and security events."
|
||
viewAuditLogs = "View Audit Logs"
|
||
|
||
[usage.chart]
|
||
title = "Endpoint Usage Chart"
|
||
|
||
[usage.controls]
|
||
all = "All"
|
||
dataTypeLabel = "Data Type:"
|
||
refresh = "Refresh"
|
||
top10 = "Top 10"
|
||
top20 = "Top 20"
|
||
|
||
[usage.controls.dataType]
|
||
all = "All"
|
||
api = "API"
|
||
ui = "UI"
|
||
|
||
[usage.showing]
|
||
all = "All"
|
||
top10 = "Top 10"
|
||
top20 = "Top 20"
|
||
|
||
[usage.stats]
|
||
selectedVisits = "Selected Visits"
|
||
showing = "Showing"
|
||
totalEndpoints = "Total Endpoints"
|
||
totalVisits = "Total Visits"
|
||
|
||
[usage.table]
|
||
endpoint = "Endpoint"
|
||
noData = "No data available"
|
||
percentage = "Percentage"
|
||
title = "Detailed Statistics"
|
||
unknownEndpoint = "Unknown endpoint"
|
||
visits = "Visits"
|
||
|
||
[validateSignature]
|
||
date = "Date"
|
||
downloadCsv = "Download CSV"
|
||
downloadJson = "Download JSON"
|
||
downloadPdf = "Download PDF Report"
|
||
finalizing = "Preparing downloads..."
|
||
location = "Location"
|
||
noResults = "Run the validation to generate a report."
|
||
noSignatures = "No digital signatures found in this document"
|
||
noSignaturesShort = "No signatures"
|
||
processing = "Validating signatures..."
|
||
reason = "Reason"
|
||
results = "Validation Results"
|
||
selectCustomCert = "Custom Certificate File X.509 (Optional)"
|
||
signatureDate = "Signature Date"
|
||
signer = "Signer"
|
||
submit = "Validate Signatures"
|
||
tags = "signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate"
|
||
title = "Validate PDF Signatures"
|
||
totalSignatures = "Total Signatures"
|
||
|
||
[validateSignature.cert]
|
||
algorithm = "Algorithm"
|
||
bits = "bits"
|
||
details = "Certificate Details"
|
||
issuer = "Issuer"
|
||
keySize = "Key Size"
|
||
keyUsage = "Key Usage"
|
||
selfSigned = "Self-Signed"
|
||
serialNumber = "Serial Number"
|
||
subject = "Subject"
|
||
validFrom = "Valid From"
|
||
validUntil = "Valid Until"
|
||
version = "Version"
|
||
|
||
[validateSignature.downloadType]
|
||
csv = "CSV"
|
||
json = "JSON"
|
||
pdf = "PDF"
|
||
|
||
[validateSignature.error]
|
||
allFailed = "Unable to validate the selected files."
|
||
partial = "Some files could not be validated."
|
||
reportGeneration = "Could not generate the PDF report. JSON and CSV are available."
|
||
unexpected = "Unexpected error during validation."
|
||
|
||
[validateSignature.issue]
|
||
certExpired = "Certificate expired"
|
||
certRevocationUnknown = "Certificate revocation status unknown"
|
||
certRevoked = "Certificate revoked"
|
||
chainInvalid = "Certificate chain invalid"
|
||
signatureInvalid = "Signature cryptographic check failed"
|
||
trustInvalid = "Certificate not trusted"
|
||
|
||
[validateSignature.report]
|
||
continued = "Continued"
|
||
downloads = "Downloads"
|
||
entryLabel = "Signature Summary"
|
||
filesEvaluated = "{{count}} files evaluated"
|
||
footer = "Validated via Stirling PDF"
|
||
generatedAt = "Generated"
|
||
noPdf = "PDF report will be available after a successful validation."
|
||
page = "Page"
|
||
shortTitle = "Signature Summary"
|
||
signatureCountLabel = "{{count}} signatures"
|
||
signaturesFound = "{{count}} signatures detected"
|
||
signaturesValid = "{{count}} fully valid"
|
||
title = "Signature Validation Report"
|
||
|
||
[validateSignature.report.fields]
|
||
created = "Created"
|
||
fileSize = "File Size"
|
||
signatureCount = "Total Signatures"
|
||
signatureDate = "Signature Date"
|
||
|
||
[validateSignature.settings]
|
||
certHint = "Upload a trusted X.509 certificate to validate against a custom trust source."
|
||
title = "Validation Settings"
|
||
|
||
[validateSignature.signature]
|
||
_value = "Signature"
|
||
|
||
[validateSignature.status]
|
||
complete = "Validation complete"
|
||
invalid = "Invalid"
|
||
valid = "Valid"
|
||
|
||
[viewer]
|
||
cannotPreviewFile = "Cannot Preview File"
|
||
disableColorFilter = "Disable Color Filter"
|
||
dualPageView = "Dual Page View"
|
||
enableDarkFilter = "Enable Dark Filter"
|
||
enableSepiaFilter = "Enable Sepia Filter"
|
||
firstPage = "First Page"
|
||
lastPage = "Last Page"
|
||
moreOptions = "More"
|
||
nextPage = "Next Page"
|
||
onlyPdfSupported = "This file format is not supported for preview."
|
||
pageNavigation = "Page navigation"
|
||
previousPage = "Previous Page"
|
||
resetZoom = "Reset zoom"
|
||
singlePageView = "Single Page View"
|
||
unknownFile = "Unknown file"
|
||
view = "View"
|
||
zoom = "Zoom"
|
||
zoomIn = "Zoom In"
|
||
zoomOut = "Zoom Out"
|
||
|
||
[viewer.attachments]
|
||
empty = "No attachments in this document"
|
||
loading = "Loading attachments..."
|
||
noDocument = "Open a PDF to view its attachments."
|
||
noMatch = "No attachments match your search"
|
||
noSupport = "Attachment support is unavailable for this viewer."
|
||
searchPlaceholder = "Search attachments"
|
||
title = "Attachments"
|
||
|
||
[viewer.comments]
|
||
addComment = "Add comment"
|
||
addCommentPlaceholder = "Add comment..."
|
||
addLink = "Add link"
|
||
addReplyPlaceholder = "Add reply..."
|
||
deleteAnnotationAndComment = "Delete annotation & comment"
|
||
deleteDescription = "This annotation has a comment attached. You can remove just the comment from the sidebar while keeping the annotation, or delete everything."
|
||
deleteTitle = "Remove annotation from comments?"
|
||
goToLink = "Go to link"
|
||
hint = "Place comments with the Comment, Insert Text, or Replace Text tools. They will appear here by page."
|
||
locateAnnotation = "Locate in document"
|
||
moreActions = "More actions"
|
||
nComments = "{{count}} comments"
|
||
oneComment = "1 comment"
|
||
pageLabel = "Page {{page}}"
|
||
removeCommentOnly = "Remove comment only"
|
||
saveReply = "Save reply"
|
||
title = "Comments"
|
||
typeComment = "Comment"
|
||
typeInsertText = "Insert Text"
|
||
typeReplaceText = "Replace Text"
|
||
viewComment = "View comment"
|
||
|
||
[viewer.error]
|
||
noFileProvided = "Error: No file provided to viewer"
|
||
|
||
[viewer.formBar]
|
||
apply = "Apply Changes"
|
||
dismiss = "Dismiss"
|
||
download = "Download PDF"
|
||
hasFieldsDesc = "This PDF contains fillable fields"
|
||
title = "Form Fields"
|
||
unsavedBadge = "Unsaved"
|
||
unsavedDesc = "You have unsaved changes"
|
||
|
||
[viewer.link]
|
||
delete = "Delete link"
|
||
|
||
[viewer.nonPdf]
|
||
columnDefault = "Column {{index}}"
|
||
convertToPdf = "Convert to PDF"
|
||
csvStats = "{{rows}} rows · {{columns}} columns · {{size}}"
|
||
emptyFile = "Empty file"
|
||
htmlPreview = "HTML preview"
|
||
htmlPreviewWarning = "HTML preview - external resources may not load · {{size}}"
|
||
invalidJson = "Invalid JSON - showing raw content"
|
||
lineNumbers = "Line numbers"
|
||
loading = "Loading..."
|
||
renderMarkdown = "Render markdown"
|
||
sortedBy = "Sorted by: {{column}}"
|
||
textStats = "{{lines}} lines · {{size}}"
|
||
|
||
[viewer.redaction]
|
||
removeMark = "Remove this mark"
|
||
|
||
[viewer.search]
|
||
clear = "Clear search"
|
||
close = "Close search"
|
||
next = "Next result"
|
||
previous = "Previous result"
|
||
resultsOf = "of {{total}}"
|
||
|
||
[viewer.signature]
|
||
delete = "Delete signature"
|
||
|
||
[viewPdf]
|
||
tags = "view,read,annotate,text,image,highlight,edit"
|
||
title = "View/Edit PDF"
|
||
|
||
[warning]
|
||
tooltipTitle = "Warning"
|
||
|
||
[watchedFolders]
|
||
alreadyInFolder = "Already in this folder"
|
||
defaultFolderWarning = "This is a default folder and will be recreated on next reload."
|
||
deleteConfirmBody = "This will remove the folder and its run history. Files already downloaded are not affected."
|
||
deleteConfirmTitle = "Delete folder?"
|
||
folderNotFound = "Folder not found"
|
||
newFolder = "New folder"
|
||
noFolders = "No watched folders yet"
|
||
sidebarTitle = "Watched Folders"
|
||
title = "Watched Folders"
|
||
|
||
[watchedFolders.actions]
|
||
back = "Back"
|
||
collapse = "Collapse"
|
||
dismiss = "Dismiss"
|
||
download = "Download"
|
||
downloadInput = "Download input"
|
||
downloadOutput = "Download output"
|
||
expand = "Expand"
|
||
retry = "Retry"
|
||
|
||
[watchedFolders.card]
|
||
delete = "Delete folder"
|
||
edit = "Edit folder"
|
||
|
||
[watchedFolders.home]
|
||
addAnother = "Add another Watched Folder"
|
||
addAnotherDesc = "Automatically process files with a new pipeline"
|
||
create = "Create your first Watched Folder"
|
||
deleteFolder = "Delete folder"
|
||
editFolder = "Edit folder"
|
||
empty = "No watched folders yet"
|
||
emptyDesc = "Set up a Watched Folder once. Drop PDFs in and they're automatically compressed, OCR'd, split, merged — whatever your pipeline does."
|
||
emptyTitle = "Automate your PDF workflows"
|
||
file = "file"
|
||
files = "files"
|
||
pause = "Pause"
|
||
resume = "Resume"
|
||
|
||
[watchedFolders.howItWorks]
|
||
step1Desc = "Drag PDFs onto any Watched Folder card — or send them from your file list"
|
||
step1Title = "Drop files"
|
||
step2Desc = "Your configured tools process each file automatically"
|
||
step2Title = "Pipeline runs"
|
||
step3Desc = "Download processed files from inside the folder"
|
||
step3Title = "Output ready"
|
||
title = "How Watched Folders work"
|
||
|
||
[watchedFolders.modal]
|
||
advanced = "Advanced"
|
||
automation = "Automation"
|
||
automationNameFallback = "Watched Folder automation"
|
||
automationRequired = "Add at least one configured step before saving."
|
||
autoNumber = "Auto-number"
|
||
autoNumberExample = "e.g. document.pdf → document (1).pdf"
|
||
autoScanHelp = "New PDF files in this folder are processed automatically every 10 seconds."
|
||
changeFolder = "Change"
|
||
chooseFolder = "Choose"
|
||
clearFolder = "Clear"
|
||
color = "Accent color"
|
||
createFolder = "Create Folder"
|
||
createTitle = "New Watched Folder"
|
||
editTitle = "Edit Watched Folder"
|
||
inputFolder = "Input folder"
|
||
inputFolderNotChosen = "No folder chosen — required for auto-scan"
|
||
inputSource = "Input source"
|
||
inputSourceBrowser = "Browser — drop files here"
|
||
inputSourceLocal = "Local folder (auto-scan)"
|
||
inputSourceLocalUnsupported = "Local folder (auto-scan) — Chrome/Edge only"
|
||
localOutputFolder = "Local output folder"
|
||
maxRetries = "Max retries"
|
||
name = "Folder name"
|
||
namePlaceholder = "My Watched Folder"
|
||
nameRequired = "Folder name is required"
|
||
nameTooLong = "Folder name must be 50 characters or less"
|
||
outputFolderNotSet = "Not set — outputs stay in app"
|
||
outputFolderUnsupported = "Not supported in this browser"
|
||
outputModeNewDesc = "Output is saved as a new separate file"
|
||
outputModeVersion = "Replace original?"
|
||
outputModeVersionDesc = "Output becomes a new version of the input file rather than a separate file"
|
||
outputName = "Output filename prefix"
|
||
outputNamePrefix = "Filename prefix"
|
||
outputNameSuffix = "Suffix"
|
||
positionPrefix = "Prefix"
|
||
positionSuffix = "Suffix"
|
||
replaceOriginal = "Replace original file"
|
||
retryDelay = "Delay (minutes)"
|
||
saveChanges = "Save Changes"
|
||
saveFailed = "Failed to save folder. Please try again."
|
||
sectionFolder = "Folder"
|
||
sectionSourceOutput = "Source & Output"
|
||
sectionSteps = "Steps"
|
||
|
||
[watchedFolders.status]
|
||
active = "Active"
|
||
done = "Done"
|
||
paused = "Paused"
|
||
processing = "Processing"
|
||
|
||
[watchedFolders.time]
|
||
daysAgo = "{{count}}d ago"
|
||
hoursAgo = "{{count}}h ago"
|
||
justNow = "just now"
|
||
minutesAgo = "{{count}}m ago"
|
||
|
||
[watchedFolders.workbench]
|
||
activity = "Activity"
|
||
addFiles = "Add files"
|
||
allTime = "All time"
|
||
cancel = "Cancel"
|
||
chartTooltipComplete = "{{count}} complete"
|
||
chartTooltipFailed = "{{count}} failed"
|
||
clearSelection = "Clear selection"
|
||
countProcessing = "{{count}} processing"
|
||
countQueued = "{{count}} queued"
|
||
countSelected = "{{count}} selected"
|
||
dataSaved = "Saved"
|
||
dayRunning = "day running"
|
||
daysRunning = "days running"
|
||
delete = "Delete"
|
||
deleteConfirmBody = "Remove notifications only clears the activity log. Delete outputs also removes the processed files from storage. Your original input files are never touched."
|
||
deleteOutputs = "Delete outputs"
|
||
directionIn = "in"
|
||
directionOut = "out"
|
||
dropToProcess = "Drop to process"
|
||
export = "Export"
|
||
exportSeparately = "Export separately"
|
||
exportZip = "Export zip"
|
||
failed = "Failed"
|
||
filesProcessedOverTime = "Files processed over time"
|
||
filterAll = "All"
|
||
filterPending = "Pending"
|
||
inputs = "Inputs"
|
||
inputSize = "Input size"
|
||
legendComplete = "Complete"
|
||
noActivity = "No activity yet — drop a PDF to start"
|
||
noActivityMatch = "No matching activity"
|
||
noInputFolder = "No input folder — edit to configure"
|
||
outputs = "Outputs"
|
||
pause = "Pause"
|
||
preview = "Preview"
|
||
previewInput = "Preview input"
|
||
previewLoadFailed = "Could not load file preview."
|
||
previewOutput = "Preview output"
|
||
queued = "Queued"
|
||
queuedWaiting = "Queued — waiting to run"
|
||
removeEntries = "Remove {{count}} entries"
|
||
removeEntry = "Remove entry"
|
||
removeNotificationsOnly = "Remove notifications only"
|
||
resume = "Resume"
|
||
retryAll = "Retry all"
|
||
retryIn = "retry in {{count}}m"
|
||
retryingSoon = "retrying…"
|
||
retryMixedConfirm = "Some selected files have already completed and will be skipped. Only failed files will be retried. Continue?"
|
||
running = "Running"
|
||
search = "Search…"
|
||
selectAll = "Select all {{count}}"
|
||
sortNameAsc = "A → Z"
|
||
sortNameDesc = "Z → A"
|
||
sortNewest = "Newest"
|
||
sortOldest = "Oldest"
|
||
watching = "Watching: {{name}}"
|
||
|
||
[watermark]
|
||
desc = "Add text or image watermarks to PDF files"
|
||
submit = "Add Watermark"
|
||
tags = "stamp,mark,overlay,watermark,branding,logo,confidential,draft,copyright,trademark,text overlay,image overlay,background text"
|
||
title = "Add Watermark"
|
||
|
||
[watermark.error]
|
||
failed = "An error occurred while adding watermark to the PDF."
|
||
|
||
[watermark.results]
|
||
title = "Watermark Results"
|
||
|
||
[watermark.settings]
|
||
alphabet = "Font/Language"
|
||
color = "Watermark Color"
|
||
convertToImage = "Flatten PDF pages to images"
|
||
opacity = "Opacity (%)"
|
||
rotation = "Rotation (degrees)"
|
||
size = "Size"
|
||
|
||
[watermark.settings.image]
|
||
choose = "Choose Image"
|
||
|
||
[watermark.settings.spacing]
|
||
height = "Height Spacing"
|
||
horizontal = "Horizontal Spacing"
|
||
vertical = "Vertical Spacing"
|
||
width = "Width Spacing"
|
||
|
||
[watermark.settings.text]
|
||
placeholder = "Enter watermark text"
|
||
|
||
[watermark.steps]
|
||
file = "Watermark File"
|
||
formatting = "Formatting"
|
||
textStyle = "Style"
|
||
type = "Watermark Type"
|
||
wording = "Wording"
|
||
|
||
[watermark.tooltip.appearance]
|
||
bullet1 = "Rotation: -360° to 360° for angled watermarks"
|
||
bullet2 = "Opacity: 0-100% for transparency control"
|
||
bullet3 = "Lower opacity creates subtle watermarks"
|
||
text = "Control how your watermark looks and blends with the document."
|
||
title = "Appearance Settings"
|
||
|
||
[watermark.tooltip.file.header]
|
||
title = "Image Upload"
|
||
|
||
[watermark.tooltip.file.recommendations]
|
||
bullet1 = "Use logos or stamps with transparent backgrounds"
|
||
bullet2 = "Simple designs work better than complex images"
|
||
bullet3 = "Consider the final document size when choosing resolution"
|
||
text = "Tips for optimal image watermark results."
|
||
title = "Best Practices"
|
||
|
||
[watermark.tooltip.file.upload]
|
||
bullet1 = "Supports common formats: PNG, JPG, GIF, BMP"
|
||
bullet2 = "PNG with transparency works best"
|
||
bullet3 = "Higher resolution images maintain quality better"
|
||
text = "Upload an image file to use as your watermark."
|
||
title = "Image Selection"
|
||
|
||
[watermark.tooltip.formatting.header]
|
||
title = "Formatting & Layout"
|
||
|
||
[watermark.tooltip.formatting.security]
|
||
bullet1 = "Prevents text selection and copying"
|
||
bullet2 = "Makes watermarks harder to remove"
|
||
bullet3 = "Results in larger file sizes"
|
||
bullet4 = "Best for sensitive or copyrighted content"
|
||
text = "Convert the final PDF to an image-based format for enhanced security."
|
||
title = "Security Option"
|
||
|
||
[watermark.tooltip.formatting.size]
|
||
bullet1 = "Larger sizes create more prominent watermarks"
|
||
text = "Adjust the size of your watermark (text or image)."
|
||
title = "Size Control"
|
||
|
||
[watermark.tooltip.language]
|
||
text = "Choose the appropriate language setting to ensure proper font rendering for your text."
|
||
title = "Language Support"
|
||
|
||
[watermark.tooltip.spacing]
|
||
bullet1 = "Width spacing: Horizontal distance between watermarks"
|
||
bullet2 = "Height spacing: Vertical distance between watermarks"
|
||
bullet3 = "Higher values create more spread out patterns"
|
||
text = "Adjust the spacing between repeated watermarks across the page."
|
||
title = "Spacing Control"
|
||
|
||
[watermark.tooltip.textStyle.color]
|
||
bullet1 = "Light gray (#d3d3d3) for subtle watermarks"
|
||
bullet2 = "Black or dark colors for high contrast"
|
||
bullet3 = "Custom colors for branding purposes"
|
||
text = "Choose a color that provides good contrast with your document content."
|
||
title = "Color Selection"
|
||
|
||
[watermark.tooltip.textStyle.header]
|
||
title = "Text Style"
|
||
|
||
[watermark.tooltip.type.description]
|
||
text = "Select between text or image watermarks based on your needs."
|
||
title = "Choose Your Watermark"
|
||
|
||
[watermark.tooltip.type.header]
|
||
title = "Watermark Type Selection"
|
||
|
||
[watermark.tooltip.type.image]
|
||
bullet1 = "Upload any image format"
|
||
bullet2 = "Maintains image quality"
|
||
bullet3 = "Perfect for logos and stamps"
|
||
text = "Use logos, stamps, or any image as a watermark. Great for branding and visual identification."
|
||
title = "Image Watermarks"
|
||
|
||
[watermark.tooltip.type.text]
|
||
bullet1 = "Customizable fonts and languages"
|
||
bullet2 = "Adjustable colors and transparency"
|
||
bullet3 = "Ideal for legal or branding text"
|
||
text = "Perfect for adding copyright notices, company names, or confidentiality labels. Supports multiple languages and custom colors."
|
||
title = "Text Watermarks"
|
||
|
||
[watermark.tooltip.wording.header]
|
||
title = "Text Content"
|
||
|
||
[watermark.tooltip.wording.text]
|
||
bullet1 = "Keep it concise for better readability"
|
||
bullet2 = "Common examples: 'CONFIDENTIAL', 'DRAFT', company name"
|
||
bullet3 = "Emoji characters are not supported and will be filtered out"
|
||
text = "Enter the text that will appear as your watermark across the document."
|
||
title = "Watermark Text"
|
||
|
||
[watermark.type]
|
||
1 = "Text"
|
||
2 = "Image"
|
||
|
||
[watermark.watermarkType]
|
||
image = "Image"
|
||
text = "Text"
|
||
|
||
[wetSignature.tooltip]
|
||
header = "Signature Creation Methods"
|
||
|
||
[wetSignature.tooltip.draw]
|
||
bullet1 = "Customize pen color and thickness"
|
||
bullet2 = "Clear and redraw until satisfied"
|
||
bullet3 = "Works on touch devices (tablets, phones)"
|
||
description = "Create a handwritten signature using your mouse or touchscreen. Best for personal, authentic signatures."
|
||
title = "Draw Signature"
|
||
|
||
[wetSignature.tooltip.type]
|
||
bullet1 = "Choose from multiple fonts"
|
||
bullet2 = "Customize text size and color"
|
||
bullet3 = "Perfect for standardized signatures"
|
||
description = "Generate a signature from typed text. Fast and consistent, suitable for business documents."
|
||
title = "Type Signature"
|
||
|
||
[wetSignature.tooltip.upload]
|
||
bullet1 = "Supports PNG, JPG, and other image formats"
|
||
bullet2 = "Transparent backgrounds recommended for best results"
|
||
bullet3 = "Image will be resized to fit signature area"
|
||
description = "Upload a pre-created signature image. Ideal if you have a scanned signature or company logo."
|
||
title = "Upload Signature Image"
|
||
|
||
[workbenchBar]
|
||
activeFiles = "Active Files"
|
||
annotations = "Annotations"
|
||
applyRedactionsFirst = "Apply redactions first"
|
||
closeAll = "Close All Files"
|
||
closePdf = "Close PDF"
|
||
deleteSelected = "Delete Selected Pages"
|
||
deselectAll = "Deselect All"
|
||
downloadAll = "Download All"
|
||
exitRedaction = "Exit Redaction Mode"
|
||
exportAll = "Export PDF"
|
||
exportSelected = "Export Selected Pages"
|
||
formFill = "Fill Form"
|
||
multiTool = "Multi-Tool"
|
||
panMode = "Pan Mode"
|
||
print = "Print PDF"
|
||
readAloud = "Read Aloud"
|
||
readAloudLanguage = "Language"
|
||
readAloudSpeed = "Speed"
|
||
redact = "Redact"
|
||
rotateLeft = "Rotate Left"
|
||
rotateRight = "Rotate Right"
|
||
ruler = "Ruler / Measure"
|
||
save = "Save"
|
||
saveAll = "Save All"
|
||
saveAs = "Save As"
|
||
saveChanges = "Save Changes"
|
||
search = "Search PDF"
|
||
selectAll = "Select All"
|
||
selectByNumber = "Select by Page Numbers"
|
||
selectLanguage = "Select language"
|
||
toggleAnnotations = "Toggle Annotations Visibility"
|
||
toggleAttachments = "Toggle Attachments"
|
||
toggleBookmarks = "Toggle Bookmarks"
|
||
toggleComments = "Comments"
|
||
toggleLayers = "Toggle Layers"
|
||
toggleSidebar = "Toggle Sidebar"
|
||
viewer = "Viewer"
|
||
|
||
[workflow.participant]
|
||
accessExpired = "Your access to this document has expired."
|
||
certificateFile = "Certificate File"
|
||
certificateFilePlaceholder = "Select certificate file"
|
||
certificatePassword = "Certificate Password"
|
||
certificateType = "Certificate Type"
|
||
certTypeJks = "JKS Keystore"
|
||
certTypeP12 = "P12/PKCS12 Certificate"
|
||
certTypeServer = "Server Certificate (if available)"
|
||
completedDeclined = "You have declined this document."
|
||
completedSigned = "You have signed this document."
|
||
decline = "Decline"
|
||
downloadDocument = "Download Document"
|
||
dueDate = "Due Date: {{date}}"
|
||
errorTitle = "Error"
|
||
from = "From: {{name}}"
|
||
loadingSession = "Loading session..."
|
||
location = "Location"
|
||
locationPlaceholder = "e.g., San Francisco, CA"
|
||
pageNumber = "Page Number (optional)"
|
||
reason = "Reason"
|
||
reasonPlaceholder = "e.g., Document approval"
|
||
sessionNotFound = "Session not found or access denied."
|
||
signDocument = "Sign Document"
|
||
statusDeclined = "Declined"
|
||
statusNotified = "Notified"
|
||
statusPending = "Pending"
|
||
statusSigned = "Signed"
|
||
statusViewed = "Viewed"
|
||
submitSignature = "Submit Signature"
|
||
|
||
[workspace]
|
||
title = "Workspace"
|
||
|
||
[workspace.people]
|
||
active = "Active"
|
||
activeSession = "Active session"
|
||
addMembers = "Add Members"
|
||
admin = "Admin"
|
||
confirmDelete = "Are you sure you want to delete this user? This action cannot be undone."
|
||
confirmUnlock = "Are you sure you want to unlock this user account?"
|
||
deleteUser = "Delete User"
|
||
deleteUserError = "Failed to delete user"
|
||
deleteUserSuccess = "User deleted successfully"
|
||
description = "Manage workspace members and their permissions"
|
||
disable = "Disable"
|
||
disabled = "Disabled"
|
||
editRole = "Edit Role"
|
||
enable = "Enable"
|
||
loading = "Loading people..."
|
||
locked = "locked"
|
||
lockedBadge = "Locked"
|
||
loginRequired = "Enable login mode first"
|
||
member = "Member"
|
||
noMembersFound = "No members found"
|
||
role = "Role"
|
||
searchMembers = "Search members..."
|
||
team = "Team"
|
||
title = "People"
|
||
unlockAccount = "Unlock Account"
|
||
unlockUserError = "Failed to unlock user account"
|
||
unlockUserSuccess = "User account unlocked successfully"
|
||
user = "User"
|
||
|
||
[workspace.people.actions]
|
||
upgrade = "Upgrade"
|
||
|
||
[workspace.people.addMember]
|
||
authType = "Authentication Type"
|
||
error = "Failed to create user"
|
||
forceMFA = "Force MFA setup on next login"
|
||
forcePasswordChange = "Force password change on first login"
|
||
password = "Password"
|
||
passwordPlaceholder = "Enter password"
|
||
passwordRequired = "Password is required"
|
||
role = "Role"
|
||
submit = "Add Member"
|
||
success = "User created successfully"
|
||
team = "Team (Optional)"
|
||
teamPlaceholder = "Select a team"
|
||
username = "Username (Email)"
|
||
usernamePlaceholder = "[email protected]"
|
||
usernameRequired = "Username and password are required"
|
||
|
||
[workspace.people.authType]
|
||
oauth = "OAuth2"
|
||
password = "Password"
|
||
saml = "SAML2"
|
||
ssoDescription = "User will authenticate via SSO provider"
|
||
|
||
[workspace.people.changePassword]
|
||
action = "Change password"
|
||
confirmPassword = "Confirm password"
|
||
confirmPlaceholder = "Re-enter the new password"
|
||
copiedToClipboard = "Password copied to clipboard"
|
||
copyFailed = "Failed to copy password"
|
||
copyTooltip = "Copy to clipboard"
|
||
emailUnavailable = "This user's email is not a valid email address. Notifications are disabled."
|
||
error = "Failed to update password"
|
||
forcePasswordChange = "Force user to change password on next login"
|
||
generatedPreview = "Generated password:"
|
||
generateRandom = "Generate secure password"
|
||
includePassword = "Include the new password in the email"
|
||
newPassword = "New password"
|
||
notifyOnly = "An email will be sent without the password, letting the user know an admin changed it."
|
||
passwordMismatch = "Passwords do not match"
|
||
passwordRequired = "Please enter a new password"
|
||
placeholder = "Enter a new password"
|
||
sendEmail = "Email the user about this change"
|
||
smtpDisabled = "Email notifications require SMTP to be enabled in settings."
|
||
submit = "Update password"
|
||
subtitle = "Update the password for"
|
||
success = "Password updated successfully"
|
||
title = "Change password"
|
||
|
||
[workspace.people.editMember]
|
||
editing = "Editing:"
|
||
error = "Failed to update user"
|
||
role = "Role"
|
||
submit = "Update Member"
|
||
success = "User updated successfully"
|
||
team = "Team (Optional)"
|
||
teamPlaceholder = "Select a team"
|
||
title = "Edit Member"
|
||
|
||
[workspace.people.emailInvite]
|
||
allFailed = "Failed to invite users"
|
||
emails = "Email Addresses"
|
||
emailsPlaceholder = "[email protected], [email protected]"
|
||
emailsRequired = "At least one email address is required"
|
||
error = "Failed to send invites"
|
||
partialFailure = "Some invites failed"
|
||
submit = "Send Invites"
|
||
success = "user(s) invited successfully"
|
||
|
||
[workspace.people.inviteLink]
|
||
copied = "Link copied to clipboard"
|
||
email = "Email Address"
|
||
emailDescription = "Optional - leave blank for a general invite link that can be used by anyone"
|
||
emailPlaceholder = "[email protected] (optional)"
|
||
emailSent = "Invite link generated and sent via email"
|
||
error = "Failed to generate invite link"
|
||
expiryHours = "Expiry Hours"
|
||
generate = "Generate Link"
|
||
generated = "Invite Link Generated"
|
||
sendEmail = "Send invite link via email"
|
||
sendEmailDescription = "If enabled, the invite link will be sent to the specified email address"
|
||
submit = "Generate Invite Link"
|
||
|
||
[workspace.people.inviteMembers]
|
||
label = "Invite Members"
|
||
subtitle = "Type or paste in emails below, separated by commas. Your workspace will be billed by members."
|
||
|
||
[workspace.people.inviteMode]
|
||
email = "Email"
|
||
emailDisabled = "Email invites require SMTP configuration and mail.enableInvites=true in settings"
|
||
link = "Link"
|
||
username = "Username"
|
||
|
||
[workspace.people.license]
|
||
currentUsage = "Currently using {{current}} of {{max}} user licenses"
|
||
fromLicense = "from license"
|
||
grandfathered = "Grandfathered"
|
||
grandfatheredShort = "{{count}} grandfathered"
|
||
noSlotsAvailable = "No slots available"
|
||
slotsAvailable = "{{count}} user slot(s) available"
|
||
users = "users"
|
||
|
||
[workspace.people.mfa]
|
||
adminDisableError = "Failed to disable MFA for user"
|
||
adminDisableSuccess = "MFA disabled successfully for user"
|
||
disableByAdmin = "Disable MFA"
|
||
|
||
[workspace.people.roleDescriptions]
|
||
admin = "Can manage settings and invite members, with full administrative access."
|
||
member = "Can view and edit shared files, but cannot manage workspace settings or members."
|
||
user = "User"
|
||
|
||
[workspace.people.toggleEnabled]
|
||
error = "Failed to update user status"
|
||
success = "User status updated successfully"
|
||
|
||
[workspace.teams]
|
||
addMember = "Add Member"
|
||
backToTeams = "Back to Teams"
|
||
cannotAddToInternal = "Cannot add members to the Internal team"
|
||
cannotDeleteInternal = "Cannot delete the Internal team"
|
||
cannotRenameInternal = "Cannot rename the Internal team"
|
||
confirmDelete = "Are you sure you want to delete this team? This team must be empty to delete."
|
||
confirmRemove = "Remove user from this team?"
|
||
createNewTeam = "Create New Team"
|
||
deleteTeamLabel = "Delete Team"
|
||
description = "Manage teams and organize workspace members"
|
||
loadError = "Failed to load team details"
|
||
loading = "Loading teams..."
|
||
loadingDetails = "Loading team details..."
|
||
memberCount = "{{count}} members"
|
||
noMembers = "No members in this team"
|
||
noTeamsFound = "No teams found"
|
||
removeMember = "Remove from team"
|
||
removeMemberError = "Failed to remove user from team"
|
||
removeMemberSuccess = "User removed from team"
|
||
renameTeamLabel = "Rename Team"
|
||
system = "System"
|
||
teamName = "Team Name"
|
||
teamNotFound = "Team not found"
|
||
title = "Teams"
|
||
totalMembers = "Total Members"
|
||
viewTeam = "View Team"
|
||
|
||
[workspace.teams.addMemberToTeam]
|
||
addingTo = "Adding to"
|
||
currentlyIn = "currently in"
|
||
error = "Failed to add member to team"
|
||
selectUser = "Select User"
|
||
selectUserPlaceholder = "Choose a user"
|
||
selectUserRequired = "Please select a user"
|
||
submit = "Add Member"
|
||
success = "Member added to team successfully"
|
||
title = "Add Member to Team"
|
||
userRequired = "Please select a user"
|
||
willBeMoved = "Note: This user will be moved from their current team to this team."
|
||
|
||
[workspace.teams.changeTeam]
|
||
changing = "Moving"
|
||
error = "Failed to change team"
|
||
label = "Change Team"
|
||
selectTeam = "Select Team"
|
||
selectTeamPlaceholder = "Choose a team"
|
||
selectTeamRequired = "Please select a team"
|
||
submit = "Change Team"
|
||
success = "Team changed successfully"
|
||
title = "Change Team"
|
||
|
||
[workspace.teams.createTeam]
|
||
error = "Failed to create team"
|
||
nameRequired = "Team name is required"
|
||
submit = "Create Team"
|
||
success = "Team created successfully"
|
||
teamName = "Team Name"
|
||
teamNamePlaceholder = "Enter team name"
|
||
title = "Create New Team"
|
||
|
||
[workspace.teams.deleteTeam]
|
||
error = "Failed to delete team. Make sure the team is empty."
|
||
success = "Team deleted successfully"
|
||
|
||
[workspace.teams.renameTeam]
|
||
error = "Failed to rename team"
|
||
nameRequired = "Team name is required"
|
||
newTeamName = "New Team Name"
|
||
newTeamNamePlaceholder = "Enter new team name"
|
||
renaming = "Renaming:"
|
||
submit = "Rename Team"
|
||
success = "Team renamed successfully"
|
||
title = "Rename Team"
|
||
|
||
[zipWarning]
|
||
cancel = "Cancel"
|
||
confirm = "Extract"
|
||
message = "This ZIP contains {{count}} files. Extract anyway?"
|
||
title = "Large ZIP File"
|