mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-07-14 10:34:06 +02:00
8561 lines
309 KiB
TOML
8561 lines
309 KiB
TOML
addToDoc = "Add to Document"
|
||
alphabet = "Alphabet"
|
||
apply = "Apply"
|
||
applyAndContinue = "Save & Leave"
|
||
areYouSure = "Are you sure you want to leave?"
|
||
back = "Back"
|
||
black = "Black"
|
||
blue = "Blue"
|
||
bored = "Bored Waiting?"
|
||
cancel = "Cancel"
|
||
confirm = "Confirm"
|
||
changedCredsMessage = "Credentials changed!"
|
||
chooseFile = "Choose File"
|
||
close = "Close"
|
||
color = "Colour"
|
||
comingSoon = "Coming soon"
|
||
confirmClose = "Confirm Close"
|
||
confirmCloseCancel = "Cancel"
|
||
confirmCloseConfirm = "Close File"
|
||
confirmCloseMessage = "Are you sure you want to close this file?"
|
||
confirmCloseDiscard = "Discard changes and close"
|
||
confirmCloseSave = "Save and close"
|
||
confirmCloseUnsaved = "This file has unsaved changes."
|
||
confirmCloseUnsavedList = "You have {{count}} file{{plural}} with unsaved changes.\n\n{{fileList}}"
|
||
confirmCloseSaveFailedTitle = "Save Failed"
|
||
confirmCloseSaveFailed = "Saved with errors. {{count}} file{{plural}} could not be saved."
|
||
confirmPasswordErrorMessage = "New Password and Confirm New Password must match."
|
||
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"
|
||
deleteCurrentUserMessage = "Cannot delete currently logged in user."
|
||
deleteUsernameExistsMessage = "The username does not exist and cannot be deleted."
|
||
details = "Details"
|
||
disabledCurrentUserMessage = "The current user cannot be disabled"
|
||
discardChanges = "Discard & Leave"
|
||
discardRedactions = "Discard & Leave"
|
||
donate = "Donate"
|
||
downgradeCurrentUserLongMessage = "Cannot downgrade current user's role. Hence, current user will not be shown."
|
||
downgradeCurrentUserMessage = "Cannot downgrade current user's role"
|
||
download = "Download"
|
||
downloadComplete = "Download Complete"
|
||
downloadPdf = "Download PDF"
|
||
downloadUnavailable = "Download unavailable for this item"
|
||
edit = "Edit"
|
||
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"
|
||
fileSavedToDisk = "File saved to disk"
|
||
fileNotSavedToDisk = "Not saved to disk"
|
||
fileSelected = "Selected: {{filename}}"
|
||
filesSelected = "{{count}} files selected"
|
||
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"
|
||
goHomepage = "Go to Homepage"
|
||
goToPage = "Go"
|
||
green = "Green"
|
||
help = "Help"
|
||
imgPrompt = "Select Image(s)"
|
||
incorrectPasswordMessage = "Current password is incorrect."
|
||
info = "Info"
|
||
invalidPasswordMessage = "The password must not be empty and must not have spaces at the beginning or end."
|
||
invalidUndoData = "Cannot undo: invalid operation data"
|
||
invalidUsernameMessage = "Invalid username, username can only contain letters, numbers and the following special characters @._+- or must be a valid email address."
|
||
joinDiscord = "Join our Discord server"
|
||
keepWorking = "Keep Working"
|
||
loading = "Loading..."
|
||
logOut = "Log out"
|
||
marginTooltip = "Distance between the page number and the edge of the page."
|
||
moreOptions = "More Options"
|
||
multiPdfDropPrompt = "Select (or drag & drop) all PDFs you require"
|
||
multiPdfPrompt = "Select PDFs (2+)"
|
||
never = "Never"
|
||
no = "No"
|
||
noFavourites = "No favourites added"
|
||
noFileSelected = "No file selected. Please upload one."
|
||
noFilesToUndo = "Cannot undo: no files were processed in the last operation"
|
||
noOperationToUndo = "No operation to undo"
|
||
notAuthenticatedMessage = "User not authenticated."
|
||
nothingToUndo = "Nothing to undo"
|
||
noValidFiles = "No valid files to process"
|
||
oops = "Oops!"
|
||
openInViewer = "Open in Viewer"
|
||
operationCancelled = "Operation cancelled"
|
||
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)"
|
||
pendingRedactions = "You have unapplied redactions that will be lost."
|
||
pendingRedactionsTitle = "Unapplied Redactions"
|
||
pin = "Pin File (keep active after tool run)"
|
||
poweredBy = "Powered by"
|
||
pro = "Pro"
|
||
processTimeWarning = "Warning: This process can take up to a minute depending on file-size"
|
||
processingComplete = "Your file is ready."
|
||
processingCompleteMultiple = "{{count}} files are ready."
|
||
property = "Property"
|
||
quickPosition = "Quick Position"
|
||
red = "Red"
|
||
reset = "Reset"
|
||
review = "Review"
|
||
save = "Save"
|
||
saveToBrowser = "Save to Browser"
|
||
saveUnavailable = "Save unavailable for this item"
|
||
seeDockerHub = "See Docker Hub"
|
||
editSecret = "Edit this value"
|
||
selectFillter = "-- Select --"
|
||
size = "Size"
|
||
sponsor = "Sponsor"
|
||
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"
|
||
uploadLimit = "Maximum file size:"
|
||
uploadLimitExceededPlural = "are too large. Maximum allowed size is"
|
||
uploadLimitExceededSingular = "is too large. Maximum allowed size is"
|
||
userAlreadyExistsOAuthMessage = "The user already exists as an OAuth2 user."
|
||
userAlreadyExistsWebMessage = "The user already exists as an web user."
|
||
username = "Username"
|
||
usernameExistsMessage = "New Username already exists."
|
||
userNotFoundMessage = "User not found."
|
||
visitGithub = "Visit Github Repository"
|
||
welcome = "Welcome"
|
||
white = "White"
|
||
WorkInProgess = "Work in progress, May not work or be buggy, Please report any problems!"
|
||
yes = "Yes"
|
||
insufficientCredits = "Insufficient credits. Required: {{requiredCredits}}, Available: {{currentBalance}}, Shortfall: {{shortfall}}"
|
||
loadingCredits = "Checking credits..."
|
||
loadingProStatus = "Checking subscription status..."
|
||
noticeTopUpOrPlan = "Not enough credits, please top up or upgrade to a plan"
|
||
|
||
accessInvite = "Invite"
|
||
|
||
[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"
|
||
|
||
[add-page-numbers]
|
||
tags = "paginate,label,organize,index"
|
||
|
||
[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"
|
||
selectFiles = "Select Files to Attach"
|
||
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"
|
||
|
||
[addImage]
|
||
applySignatures = "Apply Images"
|
||
header = "Add images to PDFs"
|
||
tags = "img,jpg,picture,photo"
|
||
title = "Add Image"
|
||
|
||
[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]
|
||
defaultImageLabel = "Uploaded image"
|
||
defaultLabel = "Image"
|
||
|
||
[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"
|
||
|
||
[addPageNumbers]
|
||
configuration = "Configuration"
|
||
customize = "Customize Appearance"
|
||
customNumberDesc = "e.g., \"Page {n}\" or leave blank for just numbers"
|
||
customTextDesc = "Custom Text"
|
||
fontName = "Font Name"
|
||
fontSize = "Font Size"
|
||
header = "Add Page Numbers"
|
||
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"
|
||
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]
|
||
1 = "Select PDF file:"
|
||
2 = "Margin Size"
|
||
3 = "Position Selection"
|
||
4 = "Starting Number"
|
||
5 = "Pages to Number"
|
||
6 = "Custom Text Format"
|
||
|
||
[addPassword]
|
||
completed = "Password protection applied"
|
||
desc = "Encrypt your PDF document with a password."
|
||
filenamePrefix = "encrypted"
|
||
submit = "Encrypt"
|
||
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]
|
||
completed = "Passwords configured"
|
||
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"
|
||
|
||
[AddStampRequest]
|
||
alphabet = "Alphabet"
|
||
clickToExpand = "Click to expand"
|
||
customColor = "Custom Text Colour"
|
||
customDateDesc = "Custom format"
|
||
customMargin = "Custom Margin"
|
||
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"
|
||
header = "Stamp PDF"
|
||
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"
|
||
overrideX = "Override X Coordinate"
|
||
overrideY = "Override Y Coordinate"
|
||
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..."
|
||
stampImage = "Stamp Image"
|
||
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,Customise"
|
||
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.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.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 colour"
|
||
fontLabel = "Font"
|
||
fontSizeLabel = "Font size"
|
||
fontSizePlaceholder = "Type or select font size (8-200)"
|
||
name = "Text content"
|
||
placeholder = "Enter the text you want to add"
|
||
|
||
[adjust-contrast]
|
||
tags = "color-correction,tune,modify,enhance,colour-correction"
|
||
|
||
[adjustContrast]
|
||
adjustColors = "Adjust Colors"
|
||
basic = "Basic Adjustments"
|
||
blue = "Blue"
|
||
brightness = "Brightness:"
|
||
confirm = "Confirm"
|
||
contrast = "Contrast:"
|
||
download = "Download"
|
||
green = "Green"
|
||
header = "Adjust Colors/Contrast"
|
||
noPreview = "Select a PDF to preview"
|
||
red = "Red"
|
||
saturation = "Saturation:"
|
||
title = "Adjust Colors/Contrast"
|
||
|
||
[adjustContrast.error]
|
||
failed = "Failed to adjust colors/contrast"
|
||
|
||
[adjustContrast.results]
|
||
title = "Adjusted PDF"
|
||
|
||
[adjustPageScale]
|
||
header = "Adjust Page Scale"
|
||
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.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, whilst 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 centred - if scaled content is larger than the page size, it may be cropped."
|
||
title = "Scale Factor"
|
||
|
||
[admin]
|
||
close = "Close"
|
||
error = "Error"
|
||
expand = "Expand"
|
||
success = "Success"
|
||
|
||
[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"
|
||
|
||
[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"
|
||
|
||
[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"
|
||
|
||
[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"
|
||
|
||
[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.groupsToRemove]
|
||
description = "Select endpoint groups to disable"
|
||
label = "Disabled Endpoint Groups"
|
||
|
||
[admin.settings.endpoints.toRemove]
|
||
description = "Select individual endpoints to disable"
|
||
label = "Disabled Endpoints"
|
||
|
||
[admin.settings.endpoints.defaultHideUnavailableTools]
|
||
description = "Remove disabled tools instead of showing them greyed out"
|
||
label = "Hide unavailable tools by default"
|
||
|
||
[admin.settings.endpoints.defaultHideUnavailableConversions]
|
||
description = "Remove disabled conversion options instead of showing them greyed out"
|
||
label = "Hide unavailable conversions by default"
|
||
|
||
[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 behaviour."
|
||
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.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.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.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"
|
||
|
||
[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.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]
|
||
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 behaviour, and security policies."
|
||
title = "Security"
|
||
|
||
[admin.settings.security.audit]
|
||
label = "Audit Logging"
|
||
showDetails = "Show audit level details"
|
||
hideDetails = "Hide audit level details"
|
||
|
||
[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]
|
||
off = "No audit logging (except critical security events)"
|
||
basic = "PDF file operations (compress, split, merge, etc.) and settings changes. Captures: operation status (success/failure), method parameters, timing. Minimal log volume."
|
||
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.audit.advancedOptions]
|
||
title = "Advanced Options"
|
||
description = "The following options increase processing time and memory usage. Enable only if truly needed."
|
||
|
||
[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.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.captureOperationResults]
|
||
description = "Capture method return values. Not recommended: significantly increases log volume and disk usage."
|
||
label = "Capture Operation Results"
|
||
|
||
[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.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.tokenExpiryMinutes]
|
||
description = "Access token lifetime in minutes for web clients (default: 1440 = 24 hours)"
|
||
label = "Web Token Expiry (minutes)"
|
||
|
||
[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.allowedClockSkewSeconds]
|
||
description = "Tolerance for client/server time drift during token validation (default: 60 seconds)"
|
||
label = "Clock Skew Tolerance (seconds)"
|
||
|
||
[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.persistence]
|
||
description = "Store JWT keys persistently to survive server restarts"
|
||
label = "Enable Key Persistence"
|
||
|
||
[admin.settings.security.jwt.secureCookie]
|
||
description = "Require HTTPS for JWT cookies (recommended for production)"
|
||
label = "Secure Cookie"
|
||
|
||
[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.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.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.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"
|
||
|
||
[admin.status]
|
||
active = "Active"
|
||
inactive = "Inactive"
|
||
|
||
[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 = "Click the <strong>Config</strong> button to access all system settings 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 organised by category for easy navigation."
|
||
systemCustomization = "We have extensive ways to customise 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, customisable solution for organisations. Access this tour anytime from the <strong>Help</strong> menu."
|
||
|
||
[adminUserSettings]
|
||
actions = "Actions"
|
||
activeUsers = "Active Users:"
|
||
addUser = "Add New User"
|
||
admin = "Admin"
|
||
apiUser = "Limited API User"
|
||
authenticated = "Authenticated"
|
||
changeUserRole = "Change User's Role"
|
||
confirmChangeUserStatus = "Should the user be disabled/enabled?"
|
||
confirmDeleteUser = "Should the user be deleted?"
|
||
deleteUser = "Delete User"
|
||
demoUser = "Demo User (No custom settings)"
|
||
disabledUser = "disabled user"
|
||
disabledUsers = "Disabled Users:"
|
||
editOwnProfil = "Edit own profile"
|
||
enabledUser = "enabled user"
|
||
extraApiUser = "Additional Limited API User"
|
||
forceChange = "Force user to change password on login"
|
||
header = "Admin User Control Settings"
|
||
internalApiUser = "Internal API User"
|
||
lastRequest = "Last Request"
|
||
role = "Role"
|
||
roles = "Roles"
|
||
submit = "Save User"
|
||
title = "User Control Settings"
|
||
totalUsers = "Total Users:"
|
||
usage = "View Usage"
|
||
user = "User"
|
||
usernameInfo = "Username can only contain letters, numbers and the following special characters @._+- or must be a valid email address."
|
||
webOnlyUser = "Web Only User"
|
||
|
||
[analytics]
|
||
disable = "Disable analytics"
|
||
enable = "Enable 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."
|
||
privacyAssurance = "We do not track any personal information or the contents of your files."
|
||
settings = "You can change the settings for analytics in the config/settings.yml file"
|
||
title = "Do you want to help make Stirling PDF better?"
|
||
|
||
[annotation]
|
||
applyChanges = "Apply Changes"
|
||
backgroundColor = "Background colour"
|
||
borderOff = "Border: Off"
|
||
borderOn = "Border: On"
|
||
changeColor = "Change Colour"
|
||
chooseColor = "Choose colour"
|
||
circle = "Circle"
|
||
clearBackground = "Remove background"
|
||
color = "Colour"
|
||
contents = "Text"
|
||
delete = "Delete"
|
||
desc = "Use highlight, pen, text, and notes. Changes stay live—no flattening required."
|
||
drawing = "Drawing"
|
||
duplicate = "Duplicate"
|
||
editCircle = "Edit Circle"
|
||
editInk = "Edit Pen"
|
||
editLine = "Edit Line"
|
||
editNote = "Edit Note"
|
||
editPolygon = "Edit Polygon"
|
||
editSelectDescription = "Click an existing annotation to edit its colour, opacity, text, or size."
|
||
editSelected = "Edit Annotation"
|
||
editSquare = "Edit Square"
|
||
editStampHint = "To change the image, delete this stamp and add a new one."
|
||
editSwitchToSelect = "Switch to Select & Edit to edit this annotation."
|
||
editText = "Edit"
|
||
editTextMarkup = "Edit Text Markup"
|
||
annotationStyle = "Annotation style"
|
||
ellipse = "Ellipse"
|
||
exit = "Exit annotation mode"
|
||
fillColor = "Fill Colour"
|
||
fillOpacity = "Fill Opacity"
|
||
fontSize = "Font size"
|
||
freehandHighlighter = "Freehand Highlighter"
|
||
highlight = "Highlight"
|
||
imagePreview = "Preview"
|
||
inkHighlighter = "Freehand Highlighter"
|
||
line = "Line"
|
||
lineArrow = "Arrow"
|
||
noBackground = "No background"
|
||
note = "Note"
|
||
comment = "Comment"
|
||
comments = "Comments"
|
||
insertText = "Insert Text"
|
||
replaceText = "Replace Text"
|
||
noteIcon = "Note Icon"
|
||
notesStamps = "Notes & Stamps"
|
||
opacity = "Opacity"
|
||
pen = "Pen"
|
||
polygon = "Polygon"
|
||
polyline = "Polyline"
|
||
properties = "Properties"
|
||
rectangle = "Rectangle"
|
||
redo = "Redo"
|
||
saveChanges = "Save Changes"
|
||
saveFailed = "Unable to save copy"
|
||
saveReady = "Download ready"
|
||
savingCopy = "Preparing download..."
|
||
select = "Select"
|
||
selectAndMove = "Select and Edit"
|
||
settings = "Settings"
|
||
shapes = "Shapes"
|
||
square = "Square"
|
||
squiggly = "Squiggly"
|
||
stamp = "Add Image"
|
||
stampSettings = "Stamp Settings"
|
||
strikeout = "Strikeout"
|
||
strokeColor = "Stroke Colour"
|
||
strokeOpacity = "Stroke Opacity"
|
||
strokeWidth = "Width"
|
||
text = "Text box"
|
||
textAlignment = "Text Alignment"
|
||
textMarkup = "Text Markup"
|
||
title = "Annotate"
|
||
underline = "Underline"
|
||
undo = "Undo"
|
||
unsupportedType = "This annotation type is not fully supported for editing."
|
||
width = "Width"
|
||
|
||
[app]
|
||
description = "The Free Adobe Acrobat alternative (10M+ Downloads)"
|
||
|
||
[attachments]
|
||
add = "Add Attachment"
|
||
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"
|
||
embed = "Embed Attachment"
|
||
header = "Add Attachments"
|
||
remove = "Remove Attachment"
|
||
submit = "Add Attachments"
|
||
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.error]
|
||
title = "Error loading audit system"
|
||
|
||
[audit.export]
|
||
clearFilters = "Clear"
|
||
description = "Export audit events to CSV or JSON format. Use filters to limit the exported data."
|
||
endDate = "End date"
|
||
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"
|
||
filterByType = "Filter by type"
|
||
filterByUser = "Filter by user"
|
||
filters = "Filters (Optional)"
|
||
format = "Export Format"
|
||
selectFields = "Select Fields to Include"
|
||
startDate = "Start date"
|
||
title = "Export Audit Data"
|
||
verboseRequired = "Requires VERBOSE audit level"
|
||
|
||
[audit.systemStatus]
|
||
autoRefresh = "Auto-refresh"
|
||
autoRefreshLabel = "Auto-refresh every 30s"
|
||
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"
|
||
verboseOnly = "VERBOSE only"
|
||
|
||
[audit.stats]
|
||
activeUsers = "Active Users"
|
||
attention = "Attention needed"
|
||
avgLatency = "Avg Latency"
|
||
error = "Error loading statistics"
|
||
errorLoadingStats = "Failed to load statistics"
|
||
excellent = "Excellent"
|
||
good = "Good"
|
||
noData = "N/A"
|
||
successRate = "Success Rate"
|
||
title = "Summary"
|
||
totalEvents = "Total Events"
|
||
vsLastPeriod = "vs last period"
|
||
|
||
[audit.charts]
|
||
byTool = "Top Tools Used"
|
||
byType = "Events by Type"
|
||
byUser = "Top Users"
|
||
day = "Day"
|
||
error = "Error loading charts"
|
||
hourlyActivity = "Hourly Activity"
|
||
month = "Month"
|
||
noData = "No data for this period"
|
||
overTime = "Events Over Time"
|
||
title = "Audit Dashboard"
|
||
week = "Week"
|
||
|
||
[audit.events]
|
||
actions = "Actions"
|
||
author = "Author"
|
||
clearFilters = "Clear"
|
||
details = "Details"
|
||
documentName = "Document"
|
||
endDate = "End date"
|
||
error = "Error loading events"
|
||
eventDetails = "Event Details"
|
||
failure = "Failure"
|
||
fileHash = "File Hash"
|
||
filterByType = "Filter by type"
|
||
filterByUser = "Filter by user"
|
||
ipAddress = "IP Address"
|
||
noEvents = "No events found"
|
||
outcome = "Status"
|
||
sortAsc = "Sort ascending"
|
||
sortDesc = "Sort descending"
|
||
startDate = "Start date"
|
||
success = "Success"
|
||
timestamp = "Timestamp"
|
||
title = "Audit Events"
|
||
type = "Type"
|
||
user = "User"
|
||
viewDetails = "View Details"
|
||
|
||
[audit.filters]
|
||
allOutcomes = "All"
|
||
failureOnly = "Failures only"
|
||
last7Days = "Last 7 days"
|
||
last30Days = "Last 30 days"
|
||
outcomeFilter = "Outcome"
|
||
quickPresets = "Quick filters"
|
||
successOnly = "Success only"
|
||
thisMonth = "This month"
|
||
today = "Today"
|
||
|
||
[audit.tabs]
|
||
clearData = "Clear Data"
|
||
dashboard = "Dashboard"
|
||
events = "Audit Events"
|
||
export = "Export"
|
||
|
||
[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."
|
||
|
||
[auth]
|
||
accessDenied = "Access Denied"
|
||
insufficientPermissions = "You do not have permission to perform this action."
|
||
pleaseLoginAgain = "Please login again."
|
||
sessionExpired = "Session Expired"
|
||
|
||
[auto-rename]
|
||
description = "Automatically finds the title from your PDF content and uses it as the filename."
|
||
header = "Auto Rename PDF"
|
||
submit = "Auto Rename"
|
||
tags = "auto-detect,header-based,organize,relabel"
|
||
title = "Auto Rename"
|
||
|
||
[auto-rename.error]
|
||
failed = "An error occurred whilst auto-renaming the PDF."
|
||
|
||
[auto-rename.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[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"
|
||
text = "Automatically finds the title from your PDF content and uses it as the filename."
|
||
title = "Smart Renaming"
|
||
|
||
[automate]
|
||
copyToSaved = "Copy to Saved"
|
||
desc = "Build multi-step workflows by chaining together PDF actions. Ideal for recurring tasks."
|
||
exportForFolderScanning = "Export for Folder Scanning"
|
||
invalidStep = "Invalid step"
|
||
reviewTitle = "Automation Results"
|
||
title = "Automate"
|
||
|
||
[automate.config]
|
||
cancel = "Cancel"
|
||
description = "Configure the settings for this tool. These settings will be applied when the automation runs."
|
||
loading = "Loading tool configuration..."
|
||
noSettings = "This tool does not have configurable settings."
|
||
save = "Save Configuration"
|
||
title = "Configure {{toolName}}"
|
||
|
||
[automate.creation]
|
||
createTitle = "Create Automation"
|
||
editTitle = "Edit Automation"
|
||
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.files]
|
||
placeholder = "Select files to process with this automation"
|
||
|
||
[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 = "Optimises 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 sanitises documents, applies OCR with cleanup, converts to PDF/A format for long-term archival, and optimises 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 unauthorised 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."
|
||
|
||
[autoSizeSplitPDF]
|
||
tags = "pdf,split,document,organization"
|
||
|
||
[autoSplitPDF]
|
||
description = "Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed."
|
||
dividerDownload2 = "Download 'Auto Splitter Divider (with instructions).pdf'"
|
||
duplexMode = "Duplex Mode (Front and back scanning)"
|
||
formPrompt = "Submit PDF containing Stirling-PDF Page dividers:"
|
||
header = "Auto Split PDF"
|
||
submit = "Submit"
|
||
tags = "QR-based,separate,scan-segment,organize"
|
||
title = "Auto Split PDF"
|
||
|
||
[autoSplitPDF.selectText]
|
||
1 = "Print out some divider sheets from below (Black and white is fine)."
|
||
2 = "Scan all your documents at once by inserting the divider sheet between them."
|
||
3 = "Upload the single large scanned PDF file and let Stirling PDF handle the rest."
|
||
4 = "Divider pages are automatically detected and removed, guaranteeing a neat final document."
|
||
|
||
[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 licence"
|
||
notEnterprise = "Seat management is only available for enterprise licences"
|
||
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]
|
||
header = "Booklet Imposition"
|
||
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.spineLocation]
|
||
label = "Spine Location"
|
||
left = "Left (Standard)"
|
||
right = "Right (RTL)"
|
||
|
||
[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]
|
||
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)"
|
||
text = "AND has higher precedence than comma. NOT applies within the document range."
|
||
title = "Operators"
|
||
|
||
[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"
|
||
|
||
[certSign]
|
||
allSigned = "All participants have signed. Ready to finalize."
|
||
awaitingSignatures = "Awaiting signatures"
|
||
signatureProgress = "{{signedCount}}/{{totalCount}} signatures"
|
||
chooseCertificate = "Choose Certificate File"
|
||
declined = "Declined"
|
||
fetchFailed = "Failed to load signing data"
|
||
finalized = "Finalized"
|
||
notified = "Pending"
|
||
partialNote = "You can finalize early with current signatures. Unsigned participants will be excluded."
|
||
pending = "Pending"
|
||
readyToFinalize = "Ready to finalize"
|
||
signed = "Signed"
|
||
viewed = "Viewed"
|
||
chooseJksFile = "Choose JKS File"
|
||
chooseP12File = "Choose PKCS12 File"
|
||
choosePfxFile = "Choose PFX File"
|
||
choosePrivateKey = "Choose Private Key File"
|
||
filenamePrefix = "signed"
|
||
location = "Location"
|
||
logoTitle = "Logo"
|
||
name = "Name"
|
||
noLogo = "No Logo"
|
||
pageNumber = "Page Number"
|
||
password = "Certificate Password"
|
||
passwordOptional = "Leave empty if no password"
|
||
reason = "Reason"
|
||
serverCertMessage = "Using server certificate - no files or password required"
|
||
showLogo = "Show Logo"
|
||
tags = "authenticate,PEM,P12,official,encrypt,sign,certificate,PKCS12,JKS,server,manual,auto"
|
||
title = "Certificate Signing"
|
||
|
||
[certSign.appearance]
|
||
invisible = "Invisible"
|
||
stepTitle = "Signature Appearance"
|
||
visible = "Visible"
|
||
visibility = "Visibility"
|
||
|
||
[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.error]
|
||
failed = "An error occurred whilst processing signatures."
|
||
|
||
[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 recognised."
|
||
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"
|
||
|
||
[certSign.collab.finalize]
|
||
button = "Finalize and Load Signed PDF"
|
||
early = "Finalize with Current Signatures"
|
||
|
||
[certSign.collab.sessionDetail]
|
||
addButton = "Add Participants"
|
||
addParticipants = "Add Participants"
|
||
addParticipantsError = "Failed to add participants"
|
||
backToList = "Back to Sessions"
|
||
deleteConfirm = "Are you sure? This cannot be undone."
|
||
deleteError = "Failed to delete session"
|
||
deleted = "Session deleted"
|
||
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"
|
||
noAdditionalInfo = "No additional information"
|
||
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.signRequest]
|
||
addedToFiles = "Document added to active files"
|
||
addSignature = "Add Your Signature"
|
||
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"
|
||
declineButton = "Decline"
|
||
decline = "Decline Request"
|
||
deleteSelected = "Delete selected signature"
|
||
drawSignature = "Draw your signature below"
|
||
dueDate = "Due Date"
|
||
fileTooLarge = "File size must be less than 5MB"
|
||
fontFamily = "Font Family"
|
||
fontSize = "Font Size: {{size}}px"
|
||
fontSizePlaceholder = "Size"
|
||
from = "From"
|
||
invalidCertFile = "Please select a P12 or PFX certificate file"
|
||
invalidFileType = "Please select an image file"
|
||
location = "Location (Optional)"
|
||
locationPlaceholder = "Where are you signing from?"
|
||
message = "Message"
|
||
noCertificate = "Please select a certificate file"
|
||
noSignatures = "Please place at least one signature on the PDF"
|
||
p12File = "P12/PFX Certificate File"
|
||
password = "Certificate Password"
|
||
passwordPlaceholder = "Enter password..."
|
||
penColor = "Pen Color"
|
||
penSize = "Pen Size: {{size}}px"
|
||
placementActive = "Click PDF to place"
|
||
placeSignatureButton = "Place Signature on PDF"
|
||
reason = "Reason (Optional)"
|
||
reasonPlaceholder = "Why are you signing?"
|
||
removeImage = "Remove Image"
|
||
removeCertFile = "Remove File"
|
||
savedSignatures = "Saved Signatures"
|
||
selectFile = "Select Image File"
|
||
selectSignatureTitle = "Select or Create Signature"
|
||
signButton = "Sign Document"
|
||
signatureInfo = "These settings are configured by the document owner"
|
||
signaturePlaced = "Signature placed on page"
|
||
signatureSettings = "Signature Settings"
|
||
signatureText = "Signature Text"
|
||
signatureTextPlaceholder = "Enter your name..."
|
||
signatureTypeLabel = "Signature Type"
|
||
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 colour"
|
||
continue = "Continue"
|
||
|
||
[certSign.collab.signRequest.certModal]
|
||
description = "You have placed {{count}} signature(s). Choose your certificate to complete signing."
|
||
sign = "Sign Document"
|
||
certValidating = "Validating certificate..."
|
||
certValidUntil = "Certificate valid until {{date}}"
|
||
certInvalid = "Certificate invalid: {{error}}"
|
||
certInvalidFallback = "Invalid certificate"
|
||
certNetworkError = "Could not validate certificate"
|
||
title = "Configure Certificate"
|
||
|
||
[certSign.collab.participant]
|
||
certValidating = "Validating certificate..."
|
||
certValid = "✓ Certificate valid"
|
||
certValidUntil = " until {{date}}"
|
||
certInvalid = "✗ {{error}}"
|
||
certInvalidFallback = "Invalid certificate"
|
||
certNetworkError = "Could not validate certificate"
|
||
|
||
[certSign.collab.signRequest.image]
|
||
hint = "Upload a PNG or JPG image of your signature"
|
||
|
||
[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.placeSignature]
|
||
message = "Click on the PDF to place your signature"
|
||
title = "Place Signature"
|
||
|
||
[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."
|
||
visible = "Visible"
|
||
visibility = "Visibility:"
|
||
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.addParticipants]
|
||
add = "Add {{count}} Participant(s)"
|
||
back = "Back"
|
||
configureSignatures = "Configure Signature Settings"
|
||
continue = "Continue to Signature Settings"
|
||
reasonHelp = "Pre-set a signing reason for these participants (optional, they can override when signing)"
|
||
reasonPlaceholder = "e.g. Approval, Review..."
|
||
selectUsers = "Select Users"
|
||
|
||
[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.sessionList]
|
||
active = "Active"
|
||
finalized = "Finalized"
|
||
|
||
[certSign.collab.signatureSettings]
|
||
description = "Configure how signatures will appear for all participants"
|
||
title = "Signature Appearance"
|
||
|
||
[certSign.collab.userSelector]
|
||
inviteUsers = "Add Users"
|
||
loadError = "Failed to load users"
|
||
noTeam = "No Team"
|
||
noUsers = "No other users found."
|
||
placeholder = "Select users..."
|
||
|
||
[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."
|
||
|
||
[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"
|
||
|
||
[changeCreds]
|
||
changePassword = "You are using default login credentials. Please enter a new password"
|
||
changeUsername = "Update your username. You will be logged out after updating."
|
||
confirmNewPassword = "Confirm New Password"
|
||
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"
|
||
newPassword = "New Password"
|
||
newUsername = "New Username"
|
||
oldPassword = "Current Password"
|
||
ssoManaged = "Your account is managed by your identity provider."
|
||
submit = "Submit Changes"
|
||
title = "Change Credentials"
|
||
|
||
[changeMetadata]
|
||
filenamePrefix = "metadata"
|
||
header = "Change Metadata"
|
||
submit = "Change"
|
||
|
||
[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.settings]
|
||
title = "Metadata Settings"
|
||
|
||
[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.header]
|
||
title = "PDF Metadata Overview"
|
||
|
||
[changeMetadata.tooltip.options]
|
||
bullet1 = "Custom Metadata: Add your own key-value pairs"
|
||
bullet2 = "Trapped Status: High-quality printing setting"
|
||
bullet3 = "Delete All: Remove all metadata for privacy"
|
||
text = "Custom fields and privacy controls."
|
||
title = "Additional Options"
|
||
|
||
[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]
|
||
completed = "Permissions changed"
|
||
desc = "Change document restrictions and permissions."
|
||
submit = "Change Permissions"
|
||
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."
|
||
|
||
[colorPicker]
|
||
title = "Choose colour"
|
||
|
||
[common]
|
||
available = "available"
|
||
back = "Back"
|
||
cancel = "Cancel"
|
||
close = "Close"
|
||
collapse = "Collapse"
|
||
collapsed = "collapsed"
|
||
continue = "Continue"
|
||
copied = "Copied!"
|
||
copy = "Copy"
|
||
done = "Done"
|
||
error = "Error"
|
||
expand = "Expand"
|
||
learnMore = "Learn more"
|
||
lines = "lines"
|
||
loading = "Loading..."
|
||
next = "Next"
|
||
operation = "this operation"
|
||
preview = "Preview"
|
||
previous = "Previous"
|
||
refresh = "Refresh"
|
||
remaining = "remaining"
|
||
retry = "Retry"
|
||
save = "Save"
|
||
used = "used"
|
||
|
||
[compare]
|
||
addFilesHint = "Add PDFs in the Files step to enable selection."
|
||
clearSelected = "Clear selected"
|
||
cta = "Compare"
|
||
header = "Compare PDFs"
|
||
loading = "Comparing..."
|
||
newLine = "new-line"
|
||
noFiles = "No PDFs available yet"
|
||
pages = "Pages"
|
||
tags = "differentiate,contrast,changes,analysis"
|
||
title = "Compare"
|
||
|
||
[compare.actions]
|
||
linkScroll = "Link scroll"
|
||
linkScrollPan = "Link scroll and pan"
|
||
placeSideBySide = "Place side by side"
|
||
resetView = "Reset view"
|
||
stackVertically = "Stack vertically"
|
||
unlinkScroll = "Unlink scroll"
|
||
unlinkScrollPan = "Unlink scroll and pan"
|
||
zoomIn = "Zoom in"
|
||
zoomOut = "Zoom out"
|
||
|
||
[compare.base]
|
||
label = "Original document"
|
||
placeholder = "Select the original PDF"
|
||
|
||
[compare.clear]
|
||
confirm = "Clear and return"
|
||
confirmBody = "This will close the current comparison and take you back to Active Files."
|
||
confirmTitle = "Clear selected PDFs?"
|
||
|
||
[compare.comparison]
|
||
label = "Edited document"
|
||
placeholder = "Select the edited PDF"
|
||
|
||
[compare.complex]
|
||
message = "One or both of the provided documents are large files, accuracy of comparison may be reduced"
|
||
|
||
[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"
|
||
|
||
[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."
|
||
|
||
[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"
|
||
|
||
[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]
|
||
actionsHint = "Review the comparison, switch document roles, or export the summary."
|
||
exportSummary = "Export summary"
|
||
switchOrder = "Switch order"
|
||
title = "Comparison Result"
|
||
|
||
[compare.selection]
|
||
originalEditedTitle = "Select Original and Edited PDFs"
|
||
|
||
[compare.slowOperation]
|
||
body = "This comparison is taking longer than usual. You can let it continue or cancel it."
|
||
cancel = "Cancel comparison"
|
||
title = "Still working…"
|
||
|
||
[compare.status]
|
||
complete = "Comparison ready"
|
||
extracting = "Extracting text..."
|
||
processing = "Analysing 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?"
|
||
|
||
[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]
|
||
credit = "This service uses qpdf for PDF Compress/Optimisation."
|
||
desc = "Compress PDFs to reduce their file size."
|
||
header = "Compress PDF"
|
||
submit = "Compress"
|
||
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.selectText]
|
||
2 = "Optimisation level:"
|
||
4 = "Auto mode - Auto adjusts quality to get PDF to exact size"
|
||
5 = "Expected PDF Size (e.g. 25MB, 10.8MB, 25KB)"
|
||
|
||
[compress.selectText.1]
|
||
1 = "1-3 PDF compression,</br> 4-6 lite image compression,</br> 7-9 intense image compression Will dramatically reduce image quality"
|
||
_value = "Compression Settings"
|
||
|
||
[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.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]
|
||
plan = "Plan"
|
||
|
||
[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"
|
||
totalCredits = "Total Credits"
|
||
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.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"
|
||
|
||
[connectionMode.status]
|
||
localOffline = "Offline mode running"
|
||
localOnline = "Offline mode running"
|
||
saas = "Connected to Stirling Cloud"
|
||
selfhostedChecking = "Connected to self-hosted server (checking...)"
|
||
selfhostedOffline = "Self-hosted server unreachable"
|
||
selfhostedOnline = "Connected to self-hosted server"
|
||
|
||
[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"
|
||
cbzDpi = "DPI for image rendering"
|
||
cbzOptions = "CBZ to PDF Options"
|
||
cbzOutputOptions = "PDF to CBZ Options"
|
||
color = "Colour"
|
||
colorType = "Colour 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"
|
||
conversionCompleted = "Conversion completed"
|
||
conversionResults = "Conversion Results"
|
||
convertFiles = "Convert Files"
|
||
convertFrom = "Convert from"
|
||
converting = "Converting..."
|
||
convertTo = "Convert to"
|
||
defaultFilename = "converted_file"
|
||
desc = "Convert files between different formats"
|
||
downloadConverted = "Download Converted File"
|
||
downloadHtml = "Download HTML intermediate file instead of PDF"
|
||
dpi = "DPI"
|
||
emailOptions = "Email to PDF Options"
|
||
errorConversion = "An error occurred while converting the file."
|
||
errorNoFiles = "Please select at least one file to convert."
|
||
errorNoFormat = "Please select both source and target formats."
|
||
errorNotSupported = "Conversion from {{from}} to {{to}} is not supported."
|
||
fileFormat = "File Format"
|
||
files = "Files"
|
||
fillPage = "Fill Page"
|
||
fitDocumentToPage = "Fit Document to Page"
|
||
fitOption = "Fit Option"
|
||
grayscale = "Greyscale"
|
||
greyscale = "Greyscale"
|
||
imageOptions = "Image Options"
|
||
images = "Images"
|
||
imagesExt = "Images (JPG, PNG, etc.)"
|
||
includeAllRecipients = "Include CC and BCC recipients in header"
|
||
includeAttachments = "Include email attachments"
|
||
maintainAspectRatio = "Maintain Aspect Ratio"
|
||
markdown = "Markdown"
|
||
maxAttachmentSize = "Maximum attachment size (MB)"
|
||
multiple = "Multiple"
|
||
noFileSelected = "No file selected. Use the file panel to add files."
|
||
odpExt = "OpenDocument Presentation (.odp)"
|
||
odtExt = "OpenDocument Text (.odt)"
|
||
officeDocs = "Office Documents (Word, Excel, PowerPoint)"
|
||
optimizeForEbook = "Optimize PDF for ebook readers (uses Ghostscript)"
|
||
output = "Output"
|
||
outputFormat = "Output Format"
|
||
outputOptions = "Output Options"
|
||
pdfaDigitalSignatureWarning = "The PDF contains a digital signature. This will be removed in the next step."
|
||
pdfaFormat = "PDF/A Format"
|
||
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"
|
||
pdfxDescription = "PDF/X is an ISO standard PDF subset for reliable printing and graphics exchange."
|
||
pdfxDigitalSignatureWarning = "The PDF contains a digital signature. This will be removed in the next step."
|
||
pptExt = "PowerPoint (.pptx)"
|
||
results = "Results"
|
||
rtfExt = "Rich Text Format (.rtf)"
|
||
selectedFiles = "Selected files"
|
||
selectFilesPlaceholder = "Select files in the main view to get started"
|
||
selectSourceFormatFirst = "Select 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"
|
||
svgVectorNote = "SVG files are rendered as vector graphics for crisp output at any resolution. Dimensions from the SVG determine the PDF page size."
|
||
targetFormatPlaceholder = "Target format"
|
||
textRtf = "Text/RTF"
|
||
title = "Convert"
|
||
txtExt = "Plain Text (.txt)"
|
||
webOptions = "Web to PDF Options"
|
||
wordDoc = "Word Document"
|
||
wordDocExt = "Word Document (.docx)"
|
||
zoomLevel = "Zoom Level"
|
||
cbrToPdf = "CBR → PDF"
|
||
cbzToPdf = "CBZ → PDF"
|
||
ebookToPdf = "eBook → PDF"
|
||
emlToPdf = "Email → PDF"
|
||
fileToPdf = "Office/Document → PDF"
|
||
pdfToCbr = "PDF → CBR"
|
||
pdfToCbz = "PDF → CBZ"
|
||
pdfToEpub = "PDF → EPUB"
|
||
svgToPdf = "SVG → PDF"
|
||
|
||
[convert.ebookOptions]
|
||
ebookOptions = "eBook to PDF Options"
|
||
ebookOptionsDesc = "Options for converting eBooks to PDF"
|
||
embedAllFonts = "Embed all fonts"
|
||
embedAllFontsDesc = "Embed all fonts from the eBook into the generated PDF"
|
||
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"
|
||
epubOptions = "PDF to eBook Options"
|
||
epubOptionsDesc = "Options for converting PDF to EPUB/AZW3"
|
||
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"
|
||
|
||
[crop]
|
||
autoCrop = "Auto-crop whitespace"
|
||
header = "Crop PDF"
|
||
noFileSelected = "Select 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"
|
||
createBackupFile = "Create Backup File"
|
||
creationDate = "Creation Date"
|
||
deleteBackupFile = "Delete Backup File"
|
||
downloadBackupFile = "Download Backup File"
|
||
failedImportFile = "Failed to import file"
|
||
fileName = "File Name"
|
||
fileNotFound = "File not found"
|
||
fileNullOrEmpty = "File must not be null or empty"
|
||
fileSize = "File Size"
|
||
header = "Database Import/Export"
|
||
importBackupFile = "Import Backup File"
|
||
importIntoDatabaseSuccessed = "Import into database successed"
|
||
info_1 = "When importing data, it is crucial to ensure the correct structure. If you are unsure of what you are doing, seek advice and support from a professional. An error in the structure can cause application malfunctions, up to and including the complete inability to run the application."
|
||
info_2 = "The file name does not matter when uploading. It will be renamed afterward to follow the format backup_user_yyyyMMddHHmm.sql, ensuring a consistent naming convention."
|
||
notSupported = "This function is not available for your database connection."
|
||
submit = "Import Backup"
|
||
title = "Database Import/Export"
|
||
|
||
[decrypt]
|
||
cancelled = "Operation cancelled for PDF: {0}"
|
||
invalidPassword = "Please try again with the correct password."
|
||
invalidPasswordHeader = "Incorrect password or unsupported encryption for PDF: {0}"
|
||
noPassword = "No password provided for encrypted PDF: {0}"
|
||
passwordPrompt = "This file is password-protected. Please enter the password:"
|
||
serverError = "Server error while decrypting: {0}"
|
||
success = "File decrypted successfully."
|
||
unexpectedError = "There was an error processing the file. Please try again."
|
||
|
||
[defaultApp]
|
||
description = "You can change this later in your system settings."
|
||
dismiss = "Dismiss"
|
||
message = "Would you like to set Stirling PDF as your default PDF editor?"
|
||
notNow = "Not Now"
|
||
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."
|
||
title = "Set as Default PDF Editor"
|
||
|
||
[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"
|
||
|
||
[editTableOfContents]
|
||
submit = "Apply table of contents"
|
||
|
||
[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"
|
||
fileLabel = "Changes will be applied to the currently selected PDF."
|
||
filePrompt = "Select a PDF from your library or upload a new one to begin."
|
||
noFile = "No PDF selected"
|
||
selectFile = "Select PDF"
|
||
subtitle = "Import bookmarks, build hierarchies, and apply the outline without cramped side panels."
|
||
tabTitle = "Outline workspace"
|
||
|
||
[editTableOfContents.workbench.empty]
|
||
description = "Select the Edit Table of Contents tool to load its workspace."
|
||
title = "Open the tool to start editing"
|
||
|
||
[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"
|
||
|
||
[encryptedPdfUnlock.password]
|
||
label = "PDF password"
|
||
placeholder = "Enter the PDF password"
|
||
|
||
[endpointStatistics]
|
||
all = "All"
|
||
dataTypeAll = "All"
|
||
dataTypeApi = "API"
|
||
dataTypeLabel = "Data Type:"
|
||
dataTypeUi = "UI"
|
||
endpoint = "Endpoint"
|
||
failedToLoad = "Failed to load endpoint data. Please try refreshing."
|
||
header = "Endpoint Statistics"
|
||
home = "Home"
|
||
loading = "Loading..."
|
||
login = "Login"
|
||
numberOfVisits = "Number of Visits"
|
||
percentage = "Percentage"
|
||
refresh = "Refresh"
|
||
retry = "Retry"
|
||
selectedVisits = "Selected Visits"
|
||
showing = "Showing"
|
||
title = "Endpoint Statistics"
|
||
top = "Top"
|
||
top10 = "Top 10"
|
||
top20 = "Top 20"
|
||
totalEndpoints = "Total Endpoints"
|
||
totalVisits = "Total Visits"
|
||
visits = "Visits"
|
||
visitsTooltip = "Visits: {0} ({1}% of total)"
|
||
|
||
[enterpriseEdition]
|
||
button = "Upgrade to Pro"
|
||
ssoAdvert = "Looking for more user management features? Check out Stirling PDF Pro"
|
||
warning = "This feature is only available to Pro users."
|
||
yamlAdvert = "Stirling PDF Pro supports YAML configuration files and other SSO features."
|
||
|
||
[error]
|
||
_value = "Error"
|
||
contactTip = "If you're still having trouble, don't hesitate to reach out to us for help. You can submit a ticket on our GitHub page or contact us through Discord:"
|
||
copyStack = "Copy Stack Trace"
|
||
discordSubmit = "Discord - Submit Support post"
|
||
dismissAllErrors = "Dismiss All Errors"
|
||
encryptedPdfMustRemovePassword = "This PDF is encrypted or password-protected. Please unlock it before converting to PDF/A."
|
||
generic = "An error occurred"
|
||
github = "Submit a ticket on GitHub"
|
||
githubSubmit = "GitHub - Submit a ticket"
|
||
incorrectPasswordProvided = "The PDF password is incorrect or not provided."
|
||
needHelp = "Need help / Found an issue?"
|
||
pdfPassword = "The PDF Document is passworded and either the password was not provided or was incorrect"
|
||
showStack = "Show Stack Trace"
|
||
sorry = "Sorry for the issue!"
|
||
|
||
[error.404]
|
||
1 = "We can't seem to find the page you're looking for."
|
||
2 = "Something went wrong"
|
||
head = "404 - Page Not Found | Oops, we tripped in the code!"
|
||
|
||
[extractImages]
|
||
allowDuplicates = "Save duplicate images"
|
||
header = "Extract 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"
|
||
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."
|
||
|
||
[fileChooser]
|
||
click = "Click"
|
||
dragAndDrop = "Drag & Drop"
|
||
dragAndDropImage = "Drag & Drop Image file"
|
||
dragAndDropPDF = "Drag & Drop PDF file"
|
||
extractPDF = "Extracting..."
|
||
hoveredDragAndDrop = "Drag & Drop file(s) here"
|
||
or = "or"
|
||
|
||
[fileEditor]
|
||
addFiles = "Add Files"
|
||
|
||
[fileManager]
|
||
active = "Active"
|
||
addToUpload = "Add to Upload"
|
||
clearAll = "Clear All"
|
||
clearSelection = "Clear Selection"
|
||
clickToUpload = "Click to upload files"
|
||
closeFile = "Close File"
|
||
delete = "Delete"
|
||
deleteAll = "Delete All"
|
||
deleteSelected = "Delete Selected"
|
||
deselectAll = "Deselect All"
|
||
details = "File Details"
|
||
download = "Download"
|
||
downloadSelected = "Download Selected"
|
||
dragDrop = "Drag & Drop files here"
|
||
dropFilesHere = "Drop files here"
|
||
failedToLoad = "Failed to load file to active set."
|
||
failedToOpen = "Failed to open file. It may have been removed from storage."
|
||
fileFormat = "Format"
|
||
fileHistory = "File History"
|
||
fileName = "Name"
|
||
fileSize = "Size"
|
||
filesSelected = "files selected"
|
||
filesStored = "files stored"
|
||
fileVersion = "Version"
|
||
googleDrive = "Google Drive"
|
||
googleDriveNotAvailable = "Google Drive integration not available"
|
||
googleDriveShort = "Drive"
|
||
hideHistory = "Hide History"
|
||
lastModified = "Last Modified"
|
||
loadingFiles = "Loading files..."
|
||
loadingHistory = "Loading History..."
|
||
localFiles = "Local Files"
|
||
mobileShort = "Mobile"
|
||
mobileUpload = "Mobile Upload"
|
||
mobileUploadNotAvailable = "Mobile upload not enabled"
|
||
myFiles = "My Files"
|
||
noFiles = "No files available"
|
||
noFileSelected = "No files selected"
|
||
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"
|
||
recent = "Recent"
|
||
reloadFiles = "Reload Files"
|
||
restore = "Restore"
|
||
saveSelected = "Save Selected"
|
||
searchFiles = "Search files..."
|
||
selectAll = "Select All"
|
||
selectedCount = "{{count}} selected"
|
||
selectedFiles = "Selected Files"
|
||
showAll = "Show All"
|
||
showHistory = "Show History"
|
||
sortByDate = "Sort by Date"
|
||
sortByName = "Sort by Name"
|
||
sortBySize = "Sort by Size"
|
||
storage = "Storage"
|
||
storageCleared = "Browser cleared storage. Files have been removed. Please re-upload."
|
||
storageError = "Storage error occurred"
|
||
storageLow = "Storage is running low. Consider removing old files."
|
||
subtitle = "Add files to your storage for easy access across tools"
|
||
supportMessage = "Powered by browser database storage for unlimited capacity"
|
||
title = "Upload PDF Files"
|
||
toolChain = "Tools Applied"
|
||
totalSelected = "Total Selected"
|
||
unsupported = "Unsupported"
|
||
unzip = "Unzip"
|
||
uploadError = "Failed to upload some files."
|
||
copyCreated = "Copy saved to this device."
|
||
copyFailed = "Could not create a copy."
|
||
leaveShare = "Remove from my list"
|
||
leaveShareFailed = "Could not remove the shared file."
|
||
leaveShareSuccess = "Removed from your shared list."
|
||
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?"
|
||
changesNotUploaded = "Changes not uploaded"
|
||
cloudFile = "Cloud file"
|
||
filterAll = "All"
|
||
filterLocal = "Local"
|
||
filterSharedByMe = "Shared by me"
|
||
filterSharedWithMe = "Shared with me"
|
||
lastSynced = "Last synced"
|
||
localOnly = "Local only"
|
||
makeCopy = "Make a copy"
|
||
owner = "Owner"
|
||
ownerUnknown = "Unknown"
|
||
share = "Share"
|
||
shareSelected = "Share Selected"
|
||
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"
|
||
sharing = "Sharing"
|
||
storageState = "Storage"
|
||
synced = "Synced"
|
||
updateOnServer = "Update on Server"
|
||
uploadSelected = "Upload Selected"
|
||
uploadToServer = "Upload to Server"
|
||
|
||
[files]
|
||
addFiles = "Add files"
|
||
created = "Created"
|
||
selectFromWorkbench = "Select files from the workbench or "
|
||
selectMultipleFromWorkbench = "Select at least {{count}} files from the workbench or "
|
||
size = "File Size"
|
||
title = "Files"
|
||
upload = "Upload"
|
||
uploadFiles = "Upload Files"
|
||
|
||
[fileToPDF]
|
||
credit = "This service uses LibreOffice and Unoconv for file conversion."
|
||
header = "Convert any file to PDF"
|
||
submit = "Convert to PDF"
|
||
supportedFileTypes = "Supported file types should include the below however for a full updated list of supported formats, please refer to the LibreOffice documentation"
|
||
supportedFileTypesInfo = "Supported File types"
|
||
tags = "transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint"
|
||
title = "File to PDF"
|
||
|
||
[fileUpload]
|
||
addFiles = "Add Files"
|
||
backToTools = "Back to Tools"
|
||
chooseFromStorage = "Choose a file from storage or upload a new PDF"
|
||
chooseFromStorageMultiple = "Choose files from storage or upload new PDFs"
|
||
dragFilesInOrClick = "Drag files in or click \"Add Files\" to browse"
|
||
dropFileHere = "Drop file here or click to upload"
|
||
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"
|
||
loading = "Loading..."
|
||
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"
|
||
or = "or"
|
||
pdfFilesOnly = "PDF files only"
|
||
selectFile = "Select a file"
|
||
selectFiles = "Select files"
|
||
selectFromStorage = "Select from Storage"
|
||
selectPdfToEdit = "Select a PDF to edit"
|
||
selectPdfToView = "Select a PDF to view"
|
||
supportedFileTypes = "Supported file types"
|
||
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]
|
||
filenamePrefix = "flattened"
|
||
flattenOnlyForms = "Flatten only forms"
|
||
header = "Flatten PDF"
|
||
submit = "Flatten"
|
||
title = "Flatten"
|
||
|
||
[flatten.error]
|
||
failed = "An error occurred while flattening the PDF."
|
||
|
||
[flatten.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[flatten.options]
|
||
note = "Flattening removes interactive elements from the PDF, making them non-editable."
|
||
stepTitle = "Flatten Options"
|
||
title = "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.steps]
|
||
settings = "Settings"
|
||
|
||
[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"
|
||
|
||
[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"
|
||
|
||
[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"
|
||
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}}"
|
||
participantCount = "{{count}} participant(s) will sign in order"
|
||
|
||
[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"
|
||
|
||
[getPdfInfo]
|
||
downloadJson = "Download JSON"
|
||
downloads = "Downloads"
|
||
header = "Get Info on PDF"
|
||
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]
|
||
compliant = "Compliant"
|
||
failed = "Failed"
|
||
failedCount = "failed"
|
||
nonCompliant = "Non-Compliant"
|
||
none = "No standards detected"
|
||
notDetected = "Not Detected"
|
||
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]
|
||
entryLabel = "Full information summary"
|
||
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"
|
||
hasCompliance = "Has compliance standards"
|
||
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"
|
||
|
||
[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]
|
||
alphabetical = "Alphabetical"
|
||
desc = "Your locally hosted one-stop-shop for all your PDF needs."
|
||
globalPopularity = "Global Popularity"
|
||
hideFavorites = "Hide Favourites"
|
||
legacyHomepage = "Old homepage"
|
||
newHomePage = "Try our new homepage!"
|
||
searchBar = "Search for features..."
|
||
setFavorites = "Set Favourites"
|
||
showFavorites = "Show Favourites"
|
||
sortBy = "Sort by:"
|
||
|
||
[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 Colours/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.formFill]
|
||
desc = "Fill PDF form fields interactively with a visual editor"
|
||
title = "Fill Form"
|
||
|
||
[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]
|
||
desc = "Automatically split PDFs by file size or page count"
|
||
tags = "auto,split,size"
|
||
title = "Auto Split by Size/Count"
|
||
|
||
[home.autoSplitPDF]
|
||
desc = "Auto Split Scanned PDF with physical scanned page splitter QR Code"
|
||
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.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]
|
||
desc = "Import, export, or delete digital certificate files used for signing PDFs."
|
||
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.pdfOrganiser]
|
||
desc = "Remove/Rearrange pages in any order"
|
||
tags = "organize,rearrange,reorder,organise,arrange pages,sort,move pages,delete pages,remove pages,page management,page organizer,page organiser,resequence"
|
||
title = "Organise"
|
||
|
||
[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 colours 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 Colour"
|
||
|
||
[home.rotate]
|
||
desc = "Easily rotate your PDFs."
|
||
tags = "turn,flip,orient,rotate,orientation,landscape,portrait,90 degrees,180 degrees,clockwise,anticlockwise,counter-clockwise,fix orientation"
|
||
title = "Rotate"
|
||
|
||
[home.sanitize]
|
||
desc = "Remove potentially harmful elements from PDF files"
|
||
tags = "clean,purge,remove,sanitize,sanitise,remove scripts,remove javascript,remove metadata,strip metadata,security,clean document,remove hidden data,privacy"
|
||
title = "Sanitise"
|
||
|
||
[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.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,notarise"
|
||
title = "Timestamp PDF"
|
||
|
||
[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]
|
||
desc = "Split a PDF into multiple files based on its chapter structure."
|
||
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]
|
||
desc = "Divide each page of a PDF into smaller horizontal and vertical sections"
|
||
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]
|
||
desc = "View API documentation and test endpoints"
|
||
tags = "API,documentation,test,swagger,API docs,REST API,endpoints,developer,API reference,API testing,OpenAPI,integration,developer docs"
|
||
title = "API Documentation"
|
||
|
||
[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]
|
||
desc = "View, annotate, draw, add text or images"
|
||
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]
|
||
credit = "Uses WeasyPrint"
|
||
cssMediaType = "Change the CSS media type of the page."
|
||
defaultHeader = "Enable Default Header (Name and page number)"
|
||
header = "HTML To PDF"
|
||
help = "Accepts HTML files and ZIPs containing html/css/images etc required"
|
||
marginBottom = "Bottom margin of the page in millimeters. (Blank to default)"
|
||
marginLeft = "Left margin of the page in millimeters. (Blank to default)"
|
||
marginRight = "Right margin of the page in millimeters. (Blank to default)"
|
||
marginTop = "Top margin of the page in millimeters. (Blank to default)"
|
||
none = "None"
|
||
pageHeight = "Height of the page in centimeters. (Blank to default)"
|
||
pageWidth = "Width of the page in centimeters. (Blank to default)"
|
||
print = "Print"
|
||
printBackground = "Render the background of websites."
|
||
screen = "Screen"
|
||
submit = "Convert"
|
||
tags = "markup,web-content,transformation,convert"
|
||
title = "HTML To PDF"
|
||
zoom = "Zoom level for displaying the website."
|
||
|
||
[imageToPdf]
|
||
tags = "conversion,img,jpg,picture,photo"
|
||
|
||
[imageToPDF]
|
||
fillPage = "Fill Page"
|
||
fitDocumentToImage = "Fit Page to Image"
|
||
header = "Image to PDF"
|
||
maintainAspectRatio = "Maintain Aspect Ratios"
|
||
selectLabel = "Image Fit Options"
|
||
submit = "Convert"
|
||
title = "Image to PDF"
|
||
|
||
[imageToPDF.selectText]
|
||
2 = "Auto rotate PDF"
|
||
3 = "Multi file logic (Only enabled if working with multiple images)"
|
||
4 = "Merge into single PDF"
|
||
5 = "Convert to separate PDFs"
|
||
|
||
[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"
|
||
passwordTooShort = "Password must be at least 6 characters"
|
||
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]
|
||
header = "3rd Party Licences"
|
||
license = "Licence"
|
||
module = "Module"
|
||
nav = "Licences"
|
||
title = "3rd Party Licences"
|
||
version = "Version"
|
||
|
||
[login]
|
||
accountCreatedSuccess = "Account created successfully! You can now sign in."
|
||
alreadyLoggedIn = "You are already logged in to"
|
||
alreadyLoggedIn2 = "devices. Please log out of the devices and try again."
|
||
backToSignIn = "Back to sign in"
|
||
cancel = "Cancel"
|
||
changePasswordWarning = "Please change your password after logging in for the first time"
|
||
credentialsUpdated = "Your credentials have been updated. Please sign in again."
|
||
debug = "Debug"
|
||
defaultCredentials = "Default Login Credentials"
|
||
dontHaveAccount = "Don't have an account? Sign up"
|
||
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?"
|
||
header = "Sign in"
|
||
home = "Home"
|
||
invalid = "Invalid username or password."
|
||
locked = "Your account has been locked."
|
||
loggingIn = "Logging In..."
|
||
logIn = "Log In"
|
||
login = "Login"
|
||
logoutMessage = "You have been logged out."
|
||
magicLinkSent = "Magic link sent to {{email}}! Check your email and click the link to sign in."
|
||
maxUsersReached = "Maximum number of users reached for your current license. Please contact the administrator to upgrade your plan or add more seats."
|
||
mfaCode = "Authentication Code"
|
||
mfaPromptBody = "Enter the authentication code from your authenticator app to continue."
|
||
mfaPromptTitle = "Two-factor authentication"
|
||
mfaRequired = "Two-factor code required"
|
||
oauth2AccessDenied = "Access Denied"
|
||
oAuth2AdminBlockedUser = "Registration or logging in of non-registered users is currently blocked. Please contact the administrator."
|
||
oAuth2AutoCreateDisabled = "OAUTH2 Auto-Create User Disabled"
|
||
oauth2InvalidIdToken = "Invalid Id Token"
|
||
oauth2invalidRequest = "Invalid Request"
|
||
oauth2InvalidTokenResponse = "Invalid Token Response"
|
||
oauth2InvalidUserInfoResponse = "Invalid User Info Response"
|
||
oauth2RequestNotFound = "Authorization request not found"
|
||
oAuth2RequiresLicense = "OAuth/SSO login requires a Server or Enterprise license. Please contact the administrator to upgrade your plan."
|
||
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"
|
||
relyingPartyRegistrationNotFound = "No relying party registration found"
|
||
rememberme = "Remember me"
|
||
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"
|
||
saml2RequiresLicense = "SAML login requires an Enterprise license. Please contact the administrator to upgrade your plan."
|
||
sending = "Sending…"
|
||
sendMagicLink = "Send Magic Link"
|
||
sendResetLink = "Send reset link"
|
||
sessionExpired = "Your session has expired. Please sign in again."
|
||
signin = "Sign in"
|
||
signInAnonymously = "Sign Up as a Guest"
|
||
subtitle = "Sign back in to Stirling PDF"
|
||
signingIn = "Signing in..."
|
||
signinTitle = "Please sign in"
|
||
signInWith = "Sign in with"
|
||
signOut = "Sign Out"
|
||
ssoSignIn = "Login via Single Sign-on"
|
||
title = "Sign in"
|
||
toManySessions = "You have too many active sessions"
|
||
unexpectedError = "Unexpected error: {{message}}"
|
||
updatePassword = "Update password"
|
||
useEmailInstead = "Login with email"
|
||
useMagicLink = "Use magic link instead"
|
||
userIsDisabled = "User is deactivated, login is currently blocked with this username. Please contact the administrator."
|
||
username = "Username"
|
||
verifyingMfa = "Verifying..."
|
||
verifyMfa = "Verify code"
|
||
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]
|
||
credit = "Uses WeasyPrint"
|
||
header = "Markdown To PDF"
|
||
help = "Work in progress"
|
||
submit = "Convert"
|
||
tags = "markup,web-content,transformation,convert,md"
|
||
title = "Markdown To PDF"
|
||
|
||
[merge]
|
||
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 select them."
|
||
goToFileEditor = "Go to file editor"
|
||
|
||
[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 they're selected. 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"
|
||
connected = "Connected"
|
||
connecting = "Connecting..."
|
||
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."
|
||
preview = "Preview"
|
||
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."
|
||
settings = "Settings"
|
||
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]
|
||
connected = "Mobile device connected"
|
||
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"
|
||
sessionId = "Session ID"
|
||
title = "Upload from Mobile"
|
||
|
||
[multiTool]
|
||
addFile = "Add File"
|
||
delete = "Delete"
|
||
deleteSelected = "Delete Selected"
|
||
deselectAll = "Deselect All"
|
||
downloadAll = "Export"
|
||
downloadSelected = "Export Selected"
|
||
dragDropMessage = "Page(s) Selected"
|
||
header = "PDF Multi Tool"
|
||
insertPageBreak = "Insert Page Break"
|
||
moveLeft = "Move Left"
|
||
moveRight = "Move Right"
|
||
page = "Page"
|
||
redo = "Redo (CTRL + Y)"
|
||
rotateLeft = "Rotate Left"
|
||
rotateRight = "Rotate Right"
|
||
selectAll = "Select All"
|
||
selectedPages = "Selected Pages"
|
||
selectPages = "Page Select"
|
||
split = "Split"
|
||
tags = "Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move,delete,migrate,divide"
|
||
title = "PDF Multi Tool"
|
||
undo = "Undo (CTRL + Z)"
|
||
uploadPrompts = "File Name"
|
||
|
||
[multiTool-advert]
|
||
message = "This feature is also available in our <a href=\"{0}\">multi-tool page</a>. Check it out for enhanced page-by-page UI and additional features!"
|
||
|
||
[navbar]
|
||
allTools = "Tools"
|
||
darkmode = "Dark Mode"
|
||
favorite = "Favorites"
|
||
language = "Languages"
|
||
multiTool = "Multi Tool"
|
||
recent = "New and recently updated"
|
||
search = "Search"
|
||
settings = "Settings"
|
||
|
||
[navbar.sections]
|
||
advance = "Advanced"
|
||
convertFrom = "Convert from PDF"
|
||
convertTo = "Convert to PDF"
|
||
edit = "View & Edit"
|
||
organize = "Organize"
|
||
popular = "Popular"
|
||
security = "Sign & Security"
|
||
|
||
[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"
|
||
|
||
[ocr]
|
||
credit = "This service uses qpdf and Tesseract for OCR."
|
||
desc = "Cleanup scans and detects text from images within a PDF and re-adds it as text."
|
||
header = "Cleanup Scans / OCR (Optical Character Recognition)"
|
||
help = "Please read this documentation on how to use this for other languages and/or use not in docker"
|
||
submit = "Process PDF with OCR"
|
||
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?"
|
||
viewSetupGuide = "View setup guide →"
|
||
|
||
[ocr.operation]
|
||
submit = "Process OCR and Review"
|
||
|
||
[ocr.results]
|
||
title = "OCR Results"
|
||
|
||
[ocr.selectText]
|
||
1 = "Select languages that are to be detected within the PDF (Ones listed are the ones currently detected):"
|
||
10 = "OCR Mode"
|
||
11 = "Remove images after OCR (Removes ALL images, only useful if part of conversion step)"
|
||
12 = "Render Type (Advanced)"
|
||
2 = "Produce text file containing OCR text alongside the OCR'ed PDF"
|
||
3 = "Correct pages were scanned at a skewed angle by rotating them back into place"
|
||
4 = "Clean page so its less likely that OCR will find text in background noise. (No output change)"
|
||
5 = "Clean page so its less likely that OCR will find text in background noise, maintains cleanup in output."
|
||
6 = "Ignores pages that have interactive text on them, only OCRs pages that are images"
|
||
7 = "Force OCR, will OCR Every page removing all original text elements"
|
||
8 = "Normal (Will error if PDF contains text)"
|
||
9 = "Additional Settings"
|
||
|
||
[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 optimising 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 artefacts and optimising 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"
|
||
pageEditor = "The <strong>Page Editor</strong> allows you to do various operations on the pages within your PDFs, such as reordering, rotating and deleting."
|
||
pinButton = "You can use the <strong>Pin</strong> button if you'd rather your files stay active after running tools on them."
|
||
previous = "Previous"
|
||
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."
|
||
selectControls = "The <strong>Right Rail</strong> contains buttons to quickly select/deselect all of your active PDFs, along with buttons to change the app's theme or language."
|
||
selectCropTool = "Let's select the <strong>Crop</strong> tool to demonstrate how to use one of the tools."
|
||
startTour = "Start Tour"
|
||
startTourDescription = "Take a guided tour of Stirling PDF's key features"
|
||
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."
|
||
viewer = "The <strong>Viewer</strong> lets you read and annotate your PDFs."
|
||
viewSwitcher = "Use these controls to select how you want to view your PDFs."
|
||
workbench = "This is the <strong>Workbench</strong> - the main area where you view and edit your PDFs."
|
||
wrapUp = "You're all set! You've learnt about the main areas of the app and how to use them. Click the <strong>Help</strong> button whenever you like to see this tour again."
|
||
|
||
[onboarding.freeTrial]
|
||
afterTrialWithoutPayment = "After your trial ends, you'll continue with our free tier. Add a payment method to keep Pro access."
|
||
afterTrialWithPayment = "Your Pro subscription will start automatically when the trial ends."
|
||
body = "You have full access to Stirling PDF Pro features during your trial. Enjoy unlimited conversions, larger file sizes, and priority processing."
|
||
daysRemaining = "{{days}} days remaining"
|
||
daysRemainingSingular = "{{days}} day remaining"
|
||
title = "Your 30-Day Pro Trial"
|
||
trialEnds = "Trial ends {{date}}"
|
||
|
||
[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.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.securityCheck]
|
||
message = "The application has undergone significant changes recently. Your server admin's attention may be required. Please confirm your role to continue."
|
||
|
||
[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 →"
|
||
skip = "Skip for now"
|
||
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.welcomeModal]
|
||
description = "Would you like to take a quick 1-minute tour to learn the key features and how to get started?"
|
||
dontShowAgain = "Don't Show Again"
|
||
helpHint = "You can always access this tour later from the <strong>Help</strong> button in the bottom left."
|
||
maybeLater = "Maybe Later"
|
||
startTour = "Start Tour"
|
||
title = "Welcome to Stirling PDF!"
|
||
|
||
[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."
|
||
rightRail = "The <strong>Right Rail</strong> holds quick actions to select files, change theme or language, and download results."
|
||
topBar = "The top bar lets you swap between <strong>Viewer</strong>, <strong>Page Editor</strong>, and <strong>Active Files</strong>."
|
||
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"
|
||
header = "Overlay PDF Files"
|
||
submit = "Submit"
|
||
tags = "Overlay"
|
||
title = "Overlay PDFs"
|
||
|
||
[overlay-pdfs.baseFile]
|
||
label = "Select Base PDF File"
|
||
|
||
[overlay-pdfs.counts]
|
||
item = "Count for file"
|
||
label = "Overlay Counts (for Fixed Repeat Mode)"
|
||
noFiles = "Add overlay files to configure counts"
|
||
placeholder = "Enter comma-separated counts (e.g., 2,3,1)"
|
||
|
||
[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 = "Select None"
|
||
selectAll = "Select All"
|
||
|
||
[pageEditor]
|
||
actualSize = "Actual Size"
|
||
addFileNotImplemented = "Add file not implemented in demo"
|
||
closePdf = "Close PDF"
|
||
deleted = "Deleted:"
|
||
fitToWidth = "Fit to Width"
|
||
insertedPageBreak = "Inserted page break at:"
|
||
movedLeft = "Moved left:"
|
||
movedRight = "Moved right:"
|
||
noPdfLoaded = "No PDF loaded. Please upload a PDF to edit."
|
||
reset = "Reset Changes"
|
||
rotatedLeft = "Rotated left:"
|
||
rotatedRight = "Rotated right:"
|
||
save = "Save Changes"
|
||
splitAt = "Split at:"
|
||
title = "Page Editor"
|
||
zoomIn = "Zoom In"
|
||
zoomOut = "Zoom Out"
|
||
|
||
[viewer]
|
||
cannotPreviewFile = "Cannot Preview File"
|
||
disableColorFilter = "Disable Colour Filter"
|
||
dualPageView = "Dual Page View"
|
||
enableDarkFilter = "Enable Dark Filter"
|
||
enableSepiaFilter = "Enable Sepia Filter"
|
||
firstPage = "First Page"
|
||
lastPage = "Last Page"
|
||
nextPage = "Next Page"
|
||
onlyPdfSupported = "This file format is not supported for preview."
|
||
previousPage = "Previous Page"
|
||
singlePageView = "Single Page View"
|
||
unknownFile = "Unknown file"
|
||
zoomIn = "Zoom In"
|
||
zoomOut = "Zoom Out"
|
||
resetZoom = "Reset zoom"
|
||
|
||
[viewer.nonPdf]
|
||
fileTypeBadge = "{{type}} File"
|
||
convertToPdf = "Convert to PDF"
|
||
loading = "Loading..."
|
||
emptyFile = "Empty file"
|
||
csvStats = "{{rows}} rows · {{columns}} columns · {{size}}"
|
||
sortedBy = "Sorted by: {{column}}"
|
||
columnDefault = "Column {{index}}"
|
||
htmlPreviewWarning = "HTML preview — external resources may not load · {{size}}"
|
||
htmlPreview = "HTML preview"
|
||
invalidJson = "Invalid JSON — showing raw content"
|
||
textStats = "{{lines}} lines · {{size}}"
|
||
lineNumbers = "Line numbers"
|
||
renderMarkdown = "Render markdown"
|
||
|
||
[rightRail]
|
||
closeSelected = "Close Selected Files"
|
||
selectAll = "Select All"
|
||
deselectAll = "Deselect All"
|
||
selectByNumber = "Select by Page Numbers"
|
||
deleteSelected = "Delete Selected Pages"
|
||
closePdf = "Close PDF"
|
||
exportAll = "Export PDF"
|
||
downloadSelected = "Download Selected Files"
|
||
annotations = "Annotations"
|
||
exportSelected = "Export Selected Pages"
|
||
formFill = "Fill Form"
|
||
saveChanges = "Save Changes"
|
||
toggleAttachments = "Toggle Attachments"
|
||
toggleTheme = "Toggle Theme"
|
||
language = "Language"
|
||
toggleAnnotations = "Toggle Annotations Visibility"
|
||
toggleLayers = "Toggle Layers"
|
||
search = "Search PDF"
|
||
panMode = "Pan Mode"
|
||
applyRedactionsFirst = "Apply redactions first"
|
||
rotateLeft = "Rotate Left"
|
||
rotateRight = "Rotate Right"
|
||
toggleSidebar = "Toggle Sidebar"
|
||
toggleBookmarks = "Toggle Bookmarks"
|
||
toggleComments = "Comments"
|
||
print = "Print PDF"
|
||
ruler = "Ruler / Measure"
|
||
readAloud = "Read Aloud"
|
||
readAloudSpeed = "Speed"
|
||
readAloudLanguage = "Language"
|
||
selectLanguage = "Select language"
|
||
draw = "Draw"
|
||
redact = "Redact"
|
||
exitRedaction = "Exit Redaction Mode"
|
||
save = "Save"
|
||
downloadAll = "Download All"
|
||
saveAll = "Save All"
|
||
saveAs = "Save As"
|
||
|
||
[textAlign]
|
||
left = "Left"
|
||
center = "Center"
|
||
right = "Right"
|
||
|
||
[pageExtracter]
|
||
header = "Extract Pages"
|
||
placeholder = "(e.g. 1,2,8 or 4,7,12-16 or 2n-1)"
|
||
submit = "Extract"
|
||
title = "Extract Pages"
|
||
|
||
[pageLayout]
|
||
addBorder = "Add Borders"
|
||
borderWidth = "Border Thickness"
|
||
bottom = "Bottom Margin"
|
||
cols = "Columns"
|
||
header = "Multi Page Layout"
|
||
innerMargin = "Inner Margin"
|
||
left = "Left Margin"
|
||
pagesPerSheet = "Pages per sheet:"
|
||
right = "Right Margin"
|
||
rows = "Rows"
|
||
submit = "Submit"
|
||
tags = "merge,composite,single-view,organize"
|
||
title = "Multi Page Layout"
|
||
top = "Top Margin"
|
||
|
||
[pageLayout.mode]
|
||
default = "Default"
|
||
custom = "Custom"
|
||
label = "Mode:"
|
||
|
||
[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."
|
||
outerVerticalMarginsTooLarge = "Top/Bottom margins are too large for this page size."
|
||
outerHorizontalMarginsTooLarge = "Left/Right margins are too large for this page size."
|
||
innerMarginTooLarge = "Inner margin is too large for the selected layout."
|
||
|
||
[pageLayout.orientation]
|
||
landscape = "Landscape"
|
||
portrait = "Portrait"
|
||
label = "Orientation:"
|
||
|
||
[pageLayout.readingDirection]
|
||
ltr = "Left to Right"
|
||
rtl = "Right to Left"
|
||
label = "Reading Direction:"
|
||
|
||
[pageLayout.tooltip.header]
|
||
title = "Page Layout Guide"
|
||
|
||
[pageLayout.tooltip.overview]
|
||
title = "What is Page Layout?"
|
||
text = "Fit multiple pages onto a single sheet for handouts or to save paper."
|
||
|
||
[pageLayout.tooltip.mode]
|
||
title = "Mode"
|
||
text = "Choose how the grid is configured:"
|
||
bullet1 = "Default: Pick a preset and the grid is calculated automatically."
|
||
bullet2 = "Custom: Set rows and columns manually."
|
||
|
||
[pageLayout.tooltip.pagesPerSheet]
|
||
title = "Pages per Sheet (Default Mode)"
|
||
text = "Choose how many pages per sheet (e.g. 4 → 2×2, 9 → 3×3)."
|
||
|
||
[pageLayout.tooltip.rowsCols]
|
||
title = "Rows & Columns (Custom Mode)"
|
||
text = "Set exact grid dimensions. Total pages per sheet = rows × columns."
|
||
|
||
[pageLayout.tooltip.orientation]
|
||
title = "Orientation"
|
||
text = "Sets the output sheet orientation:"
|
||
bullet1 = "Portrait: Taller than wide."
|
||
bullet2 = "Landscape: Wider than tall."
|
||
|
||
[pageLayout.tooltip.arrangement]
|
||
title = "Page Arrangement"
|
||
text = "Controls the order pages fill the grid:"
|
||
bullet1 = "By Rows: Fill row by row (left-to-right or right-to-left)."
|
||
bullet2 = "By Columns: Fill top-to-bottom, column by column."
|
||
|
||
[pageLayout.tooltip.readingDirection]
|
||
title = "Reading Direction"
|
||
text = "Controls the horizontal order of pages:"
|
||
bullet1 = "LTR: Left to right."
|
||
bullet2 = "RTL: Right to left."
|
||
|
||
[pageLayout.tooltip.addBorder]
|
||
title = "Add Borders"
|
||
text = "Draws border lines around each page cell for cutting guides or visual separation."
|
||
|
||
[pageLayout.marginsBorders.tooltip.header]
|
||
title = "Margins and Borders"
|
||
|
||
[pageLayout.marginsBorders.tooltip.margins]
|
||
title = "Margins"
|
||
text = "Use top, bottom, left, and right margins to control spacing around the full sheet output."
|
||
|
||
[pageLayout.marginsBorders.tooltip.innerMargin]
|
||
title = "Inner Margin"
|
||
text = "Inner margin adds spacing between cells in the page grid to improve separation and readability."
|
||
|
||
[pageLayout.marginsBorders.tooltip.borders]
|
||
title = "Add Borders"
|
||
text = "Enable borders to draw lines around each placed page. This can help visual separation or trimming."
|
||
|
||
[pageLayout.marginsBorders.tooltip.borderWidth]
|
||
title = "Border Thickness"
|
||
text = "Border thickness is only applied when borders are enabled. Higher values produce thicker lines."
|
||
|
||
[pageLayout.advanced.tooltip.header]
|
||
title = "Advanced Layout Options"
|
||
|
||
[pageLayout.advanced.tooltip.orientation]
|
||
title = "Orientation"
|
||
text = "Choose the final sheet direction. Portrait works better for tall content, while landscape fits wider layouts."
|
||
|
||
[pageLayout.advanced.tooltip.arrangement]
|
||
title = "Page Arrangement"
|
||
text = "Controls whether pages fill the grid row-by-row or column-by-column."
|
||
bullet1 = "By Rows: Fill each row first."
|
||
bullet2 = "By Columns: Fill each column first."
|
||
|
||
[pageLayout.advanced.tooltip.readingDirection]
|
||
title = "Reading Direction"
|
||
text = "Sets horizontal ordering in the grid, useful for left-to-right and right-to-left document conventions."
|
||
bullet1 = "LTR: Left to right order."
|
||
bullet2 = "RTL: Right to left order."
|
||
|
||
[pageRemover]
|
||
header = "PDF Page remover"
|
||
pagesToDelete = "Pages to delete (Enter a comma-separated list of page numbers) :"
|
||
placeholder = "(e.g. 1,2,6 or 1-10,15-30)"
|
||
submit = "Delete Pages"
|
||
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.advanced]
|
||
title = "Advanced Features"
|
||
|
||
[pageSelection.tooltip.basic]
|
||
bullet1 = "Individual pages: 1,3,5"
|
||
bullet2 = "Page ranges: 3-6 or 10-15"
|
||
bullet3 = "All pages: all"
|
||
text = "Select specific pages from your PDF document using simple syntax."
|
||
title = "Basic Usage"
|
||
|
||
[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.examples]
|
||
title = "Examples"
|
||
|
||
[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.operators]
|
||
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)"
|
||
text = "AND has higher precedence than comma. NOT applies within the document range."
|
||
title = "Operators"
|
||
|
||
[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"
|
||
|
||
[pageSelection.tooltip.syntax]
|
||
text = "Use numbers, ranges, keywords, and progressions (n starts at 0). Parentheses are supported."
|
||
title = "Syntax Basics"
|
||
|
||
[pageSelection.tooltip.syntax.bullets]
|
||
keywords = "Keywords: odd, even"
|
||
numbers = "Numbers/ranges: 5, 10-20"
|
||
progressions = "Progressions: 3n, 4n+1"
|
||
|
||
[pageSelection.tooltip.tips]
|
||
bullet1 = "Page numbers start from 1 (not 0)"
|
||
bullet2 = "Spaces are automatically removed"
|
||
bullet3 = "Invalid expressions are ignored"
|
||
text = "Keep these guidelines in mind:"
|
||
title = "Tips"
|
||
|
||
[payment]
|
||
autoClose = "This window will close automatically..."
|
||
billingPeriod = "Billing Period"
|
||
canCloseWindow = "You can now close this window."
|
||
emailInvalid = "Please enter a valid email address"
|
||
enterpriseNote = "Seats can be adjusted in checkout (1-1000)."
|
||
error = "Payment Error"
|
||
generatingLicense = "Generating your license key..."
|
||
installationId = "Installation ID"
|
||
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"
|
||
licenseKeyProcessing = "License Key Processing"
|
||
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."
|
||
paymentSuccess = "Payment successful! Retrieving your license key..."
|
||
perMonth = "/month"
|
||
perYear = "/year"
|
||
preparing = "Preparing your checkout..."
|
||
redirecting = "Redirecting to secure checkout..."
|
||
stripeNotConfigured = "Stripe Not Configured"
|
||
stripeNotConfiguredMessage = "Stripe payment integration is not configured. Please contact your administrator."
|
||
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"
|
||
checkoutOpened = "Checkout Opened in Browser"
|
||
checkoutInstructions = "Complete your purchase in the browser window that just opened. After payment is complete, return here and click the button below to refresh your billing information."
|
||
refreshBilling = "I've Completed Payment - Refresh Billing"
|
||
closeLater = "I'll Do This Later"
|
||
|
||
[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}}"
|
||
title = "Enter Your Email"
|
||
|
||
[payment.paymentStage]
|
||
backToPlan = "Back to Plan Selection"
|
||
modalTitle = "Complete Payment - {{planName}}"
|
||
selectedPlan = "Selected Plan"
|
||
|
||
[payment.planStage]
|
||
basePrice = "Base Price"
|
||
billedYearly = "Billed yearly at {{currency}}{{amount}}"
|
||
modalTitle = "Select Billing Period - {{planName}}"
|
||
savePercent = "Save {{percent}}%"
|
||
savingsAmount = "You save {{amount}}"
|
||
savingsNote = "Save {{percent}}% with annual billing"
|
||
seatPrice = "Per Seat"
|
||
selectMonthly = "Select Monthly"
|
||
selectYearly = "Select Yearly"
|
||
title = "Choose Your Billing Period"
|
||
totalForSeats = "Total ({{count}} seats)"
|
||
|
||
[pdfOrganiser]
|
||
header = "PDF Page Organiser"
|
||
placeholder = "(e.g. 1,3,2 or 4-8,2,10-12 or 2n-1)"
|
||
submit = "Rearrange Pages"
|
||
tags = "duplex,even,odd,sort,move"
|
||
title = "Page Organiser"
|
||
|
||
[pdfOrganiser.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 (optimised for binding on the side)."
|
||
|
||
[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 = "Organisation 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}}"
|
||
title = "PDF Text Editor"
|
||
viewLabel = "PDF Editor"
|
||
|
||
[pdfTextEditor.actions]
|
||
applyChanges = "Apply Changes"
|
||
downloadCopy = "Download Copy"
|
||
downloadJson = "Download JSON"
|
||
generatePdf = "Generate PDF"
|
||
reset = "Reset Changes"
|
||
saveChanges = "Save Changes"
|
||
|
||
[pdfTextEditor.badges]
|
||
earlyAccess = "Early Access"
|
||
modified = "Edited"
|
||
unsaved = "Edited"
|
||
|
||
[pdfTextEditor.disclaimer]
|
||
alpha = "This alpha viewer is still evolving—certain fonts, colours, transparency effects, and layout details may shift slightly. Please double-check the generated PDF before sharing."
|
||
heading = "Preview Limitations"
|
||
previewVariance = "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."
|
||
textFocus = "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."
|
||
|
||
[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"
|
||
subtitle = "Load a PDF or JSON file to begin editing text content."
|
||
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.options.manualGrouping]
|
||
descriptionInline = "Tip: Hold Ctrl (Cmd) or Shift to multi-select text boxes. A floating toolbar will appear above the selection so you can merge, ungroup, or adjust widths."
|
||
|
||
[pdfTextEditor.pageType]
|
||
paragraph = "Paragraph page"
|
||
sparse = "Sparse text"
|
||
|
||
[pdfTextEditor.tooltip.alpha]
|
||
text = "This alpha viewer is still evolving—certain fonts, colours, transparency effects, and layout details may shift slightly. Please double-check the generated PDF before sharing."
|
||
title = "Alpha 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 colour 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"
|
||
prompt = "Choose page to extract table"
|
||
submit = "Extract"
|
||
title = "PDF to CSV"
|
||
|
||
[PDFToXLSX]
|
||
header = "PDF to Excel"
|
||
prompt = "Choose pages to extract tables"
|
||
submit = "Convert"
|
||
title = "PDF to Excel (XLSX)"
|
||
tags = "spreadsheet,excel,xlsx,table,extract,convert"
|
||
|
||
[PDFToHTML]
|
||
credit = "This service uses pdftohtml for file conversion."
|
||
header = "PDF to HTML"
|
||
submit = "Convert"
|
||
tags = "web content,browser friendly"
|
||
title = "PDF to HTML"
|
||
|
||
[pdfToImage]
|
||
blackwhite = "Black and White (May lose data!)"
|
||
color = "Colour"
|
||
colorType = "Colour type"
|
||
grey = "Greyscale"
|
||
header = "PDF to Image"
|
||
info = "Python is not installed. Required for WebP conversion."
|
||
multi = "Multiple Images, one image per page"
|
||
placeholder = "(e.g. 1,2,8 or 4,7,12-16 or 2n-1)"
|
||
selectText = "Image Format"
|
||
single = "Single Big Image Combing all pages"
|
||
singleOrMultiple = "Page to Image result type"
|
||
submit = "Convert"
|
||
tags = "conversion,img,jpg,picture,photo"
|
||
title = "PDF to Image"
|
||
|
||
[PDFToMarkdown]
|
||
header = "PDF To Markdown"
|
||
submit = "Convert"
|
||
tags = "markup,web-content,transformation,convert,md"
|
||
title = "PDF To Markdown"
|
||
|
||
[pdfToPDFA]
|
||
credit = "This service uses libreoffice for PDF/A conversion"
|
||
header = "PDF To PDF/A"
|
||
outputFormat = "Output format"
|
||
pdfWithDigitalSignature = "The PDF contains a digital signature. This will be removed in the next step."
|
||
submit = "Convert"
|
||
tags = "archive,long-term,standard,conversion,storage,preservation"
|
||
tip = "Currently does not work for multiple inputs at once"
|
||
title = "PDF To PDF/A"
|
||
|
||
[pdfToPDFX]
|
||
credit = "This service uses Ghostscript for PDF/X conversion"
|
||
header = "PDF To PDF/X"
|
||
outputFormat = "Output format"
|
||
pdfWithDigitalSignature = "The PDF contains a digital signature. This will be removed in the next step."
|
||
submit = "Convert"
|
||
tags = "print,standard,conversion,production,prepress,archive"
|
||
tip = "Currently does not work for multiple inputs at once"
|
||
title = "PDF To PDF/X"
|
||
|
||
[PDFToPresentation]
|
||
credit = "This service uses LibreOffice for file conversion."
|
||
header = "PDF to Presentation"
|
||
submit = "Convert"
|
||
tags = "slides,show,office,microsoft"
|
||
title = "PDF to Presentation"
|
||
|
||
[PDFToPresentation.selectText]
|
||
1 = "Output file format"
|
||
|
||
[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."
|
||
filenamePrefix = "single_page"
|
||
header = "PDF To Single Page"
|
||
submit = "Convert To Single Page"
|
||
title = "PDF To Single Page"
|
||
|
||
[pdfToSinglePage.error]
|
||
failed = "An error occurred whilst converting to single page."
|
||
|
||
[pdfToSinglePage.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[pdfToSinglePage.results]
|
||
title = "Single Page Results"
|
||
|
||
[PDFToText]
|
||
credit = "This service uses LibreOffice for file conversion."
|
||
header = "PDF to RTF (Text)"
|
||
submit = "Convert"
|
||
tags = "richformat,richtextformat,rich text format"
|
||
title = "PDF to RTF (Text)"
|
||
|
||
[PDFToText.selectText]
|
||
1 = "Output file format"
|
||
|
||
[PDFToWord]
|
||
credit = "This service uses LibreOffice for file conversion."
|
||
header = "PDF to Word"
|
||
submit = "Convert"
|
||
tags = "doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile"
|
||
title = "PDF to Word"
|
||
|
||
[PDFToWord.selectText]
|
||
1 = "Output file format"
|
||
|
||
[PDFToXML]
|
||
credit = "This service uses LibreOffice for file conversion."
|
||
header = "PDF to XML"
|
||
submit = "Convert"
|
||
tags = "data-extraction,structured-content,interop,transformation,convert"
|
||
title = "PDF to XML"
|
||
|
||
[permissions]
|
||
header = "Change Permissions"
|
||
submit = "Change"
|
||
tags = "read,write,edit,print"
|
||
title = "Change Permissions"
|
||
warning = "Warning to have these permissions be unchangeable it is recommended to set them with a password via the add-password page"
|
||
|
||
[permissions.selectText]
|
||
1 = "Select PDF to change permissions"
|
||
10 = "Prevent printing different formats"
|
||
2 = "Permissions to set"
|
||
3 = "Prevent assembly of document"
|
||
4 = "Prevent content extraction"
|
||
5 = "Prevent extraction for accessibility"
|
||
6 = "Prevent filling in form"
|
||
7 = "Prevent modification"
|
||
8 = "Prevent annotation modification"
|
||
9 = "Prevent printing"
|
||
|
||
[pipeline]
|
||
configureButton = "Configure"
|
||
defaultOption = "Custom"
|
||
deletePrompt = "Are you sure you want to delete pipeline"
|
||
header = "Pipeline Menu (Beta)"
|
||
help = "Pipeline Help"
|
||
scanHelp = "Folder Scanning Help"
|
||
submitButton = "Submit"
|
||
tags = "automate,sequence,scripted,batch-process"
|
||
title = "Pipeline"
|
||
uploadButton = "Upload Custom"
|
||
|
||
[pipelineOptions]
|
||
addOperationButton = "Add operation"
|
||
header = "Pipeline Configuration"
|
||
pipelineHeader = "Pipeline:"
|
||
pipelineNameLabel = "Pipeline Name"
|
||
pipelineNamePrompt = "Enter pipeline name here"
|
||
saveButton = "Download"
|
||
saveForFolderScanning = "Save for Folder Scanning"
|
||
saveSettings = "Save Operation Settings"
|
||
selectOperation = "Select Operation"
|
||
validateButton = "Validate"
|
||
|
||
[plan]
|
||
contact = "Contact Us"
|
||
currency = "Currency"
|
||
current = "Current Plan"
|
||
customPricing = "Custom"
|
||
featureComparison = "Feature Comparison"
|
||
from = "From"
|
||
hideComparison = "Hide Feature Comparison"
|
||
included = "Included"
|
||
includedInCurrent = "Included in Your Plan"
|
||
licensedSeats = "Licensed: {{count}} seats"
|
||
manage = "Manage"
|
||
perMonth = "/month"
|
||
perSeat = "/seat"
|
||
popular = "Popular"
|
||
selectPlan = "Select Plan"
|
||
selectCredits = "Select Credit Amount"
|
||
showComparison = "Compare All Features"
|
||
purchase = "Purchase"
|
||
totalCost = "Total Cost"
|
||
upgrade = "Upgrade"
|
||
withServer = "+ Server Plan"
|
||
|
||
[plan.activePlan]
|
||
subtitle = "Your current subscription details"
|
||
title = "Active Plan"
|
||
|
||
[plan.availablePlans]
|
||
subtitle = "Choose the plan that fits your needs"
|
||
loadError = "Unable to load plan pricing. Using default values."
|
||
title = "Available Plans"
|
||
|
||
[plan.enterprise]
|
||
siteLicense = "Site License"
|
||
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.free]
|
||
forever = "Forever free"
|
||
highlight1 = "Limited Tool Usage Per week"
|
||
highlight2 = "Access to all tools"
|
||
highlight3 = "Community support"
|
||
included = "Included"
|
||
name = "Free"
|
||
|
||
[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.manageSubscription]
|
||
description = "Manage your subscription, billing, and payment methods"
|
||
|
||
[plan.period]
|
||
month = "month"
|
||
perUserPerMonth = "/user/month"
|
||
|
||
[plan.pro]
|
||
highlight1 = "Unlimited Tool Usage"
|
||
highlight2 = "Advanced PDF tools"
|
||
highlight3 = "No watermarks"
|
||
name = "Pro"
|
||
|
||
[plan.static]
|
||
activateLicense = "Activate Your License"
|
||
checkoutInstructions = "Complete your purchase in the Stripe tab. After payment, return here and refresh the page to activate your license. You will also receive an email with your license key."
|
||
checkoutOpened = "Checkout Opened"
|
||
contactSales = "Contact Sales"
|
||
contactToUpgrade = "Contact us to upgrade or customize your plan"
|
||
getLicense = "Get Server License"
|
||
maxUsers = "Max Users"
|
||
message = "Online billing is not currently configured. To upgrade your plan or manage subscriptions, please contact us directly."
|
||
monthlyBilling = "Monthly Billing"
|
||
selectPeriod = "Select Billing Period"
|
||
title = "Billing Information"
|
||
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]
|
||
name = "Team"
|
||
siteLicense = "Site License"
|
||
|
||
[plan.api]
|
||
large = "5,000 Credits"
|
||
medium = "1,000 Credits"
|
||
small = "500 Credits"
|
||
xsmall = "100 Credits"
|
||
|
||
[plan.apiPackages]
|
||
subtitle = "Purchase API credits for your applications"
|
||
title = "API Credit Packages"
|
||
|
||
[plan.trial]
|
||
badge = "Trial"
|
||
continueWithFree = "Continue with Free"
|
||
daysRemaining = "Your trial ends in {{days}} days"
|
||
endDate = "Expires: {{date}}"
|
||
expired = "Your Trial Has Ended"
|
||
expiredMessage = "Your 30-day Pro trial has expired. Subscribe to Pro to continue accessing premium features, or continue with our free tier."
|
||
freeTierLimitations = "Free tier includes basic PDF tools with usage limits."
|
||
message = ""
|
||
subscribe = "Subscribe to Pro"
|
||
subscribeToPro = "Subscribe to Pro"
|
||
subscriptionScheduled = "Subscription scheduled - starts {{date}}"
|
||
title = "Free Trial Active"
|
||
|
||
[credits]
|
||
enableOverageBilling = "Enable Overage Billing"
|
||
maybeLater = "Maybe later"
|
||
upgrade = "Upgrade"
|
||
|
||
[credits.modal]
|
||
advancedMonitoring = "Advanced monitoring"
|
||
allInOneWorkspace = "All-in-one PDF workspace (viewer, tools & agent)"
|
||
apiSandbox = "API sandbox"
|
||
contactSales = "Contact Sales"
|
||
creditsRemaining = "{{current}} of {{total}} remaining"
|
||
creditsThisMonth = "Monthly credits"
|
||
current = "Current Plan"
|
||
customPricing = "Custom"
|
||
customSmartFolders = "Custom Smart Folders"
|
||
dedicatedSupportSlas = "Dedicated support & SLAs"
|
||
enterpriseSubscription = "Enterprise"
|
||
everythingInCredits = "Everything in Credits, plus:"
|
||
everythingInFree = "Everything in Free, plus:"
|
||
fasterThroughput = "10x faster throughput"
|
||
forRegularWork = "For regular PDF work:"
|
||
freeTier = "Free Tier"
|
||
fullyPrivateFiles = "Fully private files"
|
||
largeFileProcessing = "Large file processing"
|
||
managedMemberMessage = "You have unlimited access to credits through your team. If you need assistance, please contact your team leader."
|
||
managedMemberTitle = "Unlimited Credits"
|
||
meteringBillingNote = "Overage credits are billed monthly alongside your Team subscription. Track your usage anytime in your account settings."
|
||
meteringExplanation = "Your Team plan includes {{credits}} credits per month. When you run out, overage billing automatically provides additional credits so you never have to stop working."
|
||
meteringIncluded = "{{credits}} credits/month included with Team"
|
||
meteringNoCommitment = "No commitment, cancel anytime"
|
||
meteringNeverRunOut = "Never run out of credits"
|
||
meteringPayAsYouGo = "Only pay for what you use"
|
||
meteringPrice = "Additional credits at {{price}}/credit"
|
||
meteringTitle = "Pay-What-You-Use Overage Billing"
|
||
monthlyCredits = "monthly credits"
|
||
orgWideAccess = "Org-wide access controls"
|
||
overage = "overage"
|
||
perMonth = "/month"
|
||
popular = "Popular"
|
||
premiumAiModels = "Premium AI models"
|
||
prioritySupport = "Priority support"
|
||
privateDocCloud = "Private Document Cloud"
|
||
ragFineTuning = "RAG + fine-tuning"
|
||
secureApiAccess = "Secure API access"
|
||
selfHostLink = "Review the docs and plans"
|
||
selfHostPrompt = "Want to self host?"
|
||
standardThroughput = "Standard throughput"
|
||
subtitle = "Upgrade to Team for 10x the credits and faster processing."
|
||
subtitlePro = "Enable automatic overage billing to never run out of credits."
|
||
teamLeaderOnly = "Only team leaders can enable overage billing"
|
||
teamSubscription = "Team"
|
||
titleExhausted = "You've used your free credits"
|
||
titleExhaustedPro = "You have run out of credits"
|
||
unlimitedApiAccess = "Unlimited API access"
|
||
unlimitedMonthlyCredits = "Site License"
|
||
unlimitedSeats = "Unlimited seats"
|
||
|
||
[credits.modal.features]
|
||
everythingInCredits = "Everything in Credits, plus:"
|
||
everythingInFree = "Everything in Free, plus:"
|
||
forRegularWork = "For regular PDF work:"
|
||
|
||
[credits.insufficient]
|
||
brief = "Insufficient credits. You need {{required}} credits but have {{current}}."
|
||
freeTier = "Upgrade to Team for 10x more credits and unlimited overage billing."
|
||
managedMember = "Please contact your team leader for assistance."
|
||
message = "You do not have enough credits to run {{tool}}. You currently have {{current}} credits."
|
||
messageWithAmount = "You need {{required}} credits to run {{tool}}, but you only have {{current}}."
|
||
teamMember = "Enable overage billing to never run out of credits."
|
||
title = "Insufficient Credits"
|
||
|
||
|
||
[printFile]
|
||
header = "Print File to Printer"
|
||
submit = "Print"
|
||
title = "Print File"
|
||
|
||
[printFile.selectText]
|
||
1 = "Select File to Print"
|
||
2 = "Enter Printer Name"
|
||
|
||
[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"
|
||
account = "Account"
|
||
activeSessions = "Active Sessions"
|
||
activeTab = "Active"
|
||
activity = "Activity"
|
||
adminSettings = "Admin Settings"
|
||
allSessions = "All Sessions"
|
||
allTools = "Tools"
|
||
automate = "Automate"
|
||
back = "Back"
|
||
certSign = "Certificate Sign"
|
||
completedSessions = "Completed Sessions"
|
||
completedTab = "Completed"
|
||
config = "Config"
|
||
createNew = "Create New Request"
|
||
createSession = "Create Signing Request"
|
||
dueDate = "Due date (optional)"
|
||
files = "Files"
|
||
help = "Help"
|
||
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"
|
||
selectSingleFileToRequest = "Select a single PDF file to request signatures"
|
||
selectedFile = "Selected file"
|
||
selectUsers = "Select users to sign"
|
||
selectUsersPlaceholder = "Choose participants..."
|
||
sendingRequest = "Sending..."
|
||
settings = "Settings"
|
||
showMeAround = "Show me around"
|
||
sign = "Sign"
|
||
signatureRequests = "Signature Requests"
|
||
signYourself = "Sign Yourself"
|
||
newRequest = "New Request"
|
||
tours = "Tours"
|
||
wetSign = "Add Signature"
|
||
filterMine = "Mine"
|
||
filterOverdue = "Overdue"
|
||
filterSigned = "Signed"
|
||
filterDeclined = "Declined"
|
||
searchDocuments = "Search documents…"
|
||
|
||
[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."
|
||
|
||
[redact]
|
||
submit = "Redact"
|
||
tags = "Redact,Hide,black out,black,marker,hidden,auto redact,manual redact"
|
||
title = "Redact"
|
||
|
||
[redact.auto]
|
||
colorLabel = "Box Colour"
|
||
convertPDFToImageLabel = "Convert PDF to PDF-Image"
|
||
customPaddingLabel = "Custom Extra Padding"
|
||
header = "Auto Redact"
|
||
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"
|
||
applyChanges = "Apply Changes"
|
||
applyRedactions = "Apply Redactions"
|
||
applyWarning = "⚠️ Permanent application, cannot be undone and the data underneath will be deleted"
|
||
boxRedaction = "Box draw redaction"
|
||
colourPicker = "Colour Picker"
|
||
colorLabel = "Redaction Colour"
|
||
active = "Redaction Mode Active"
|
||
activate = "Activate Redaction Tool"
|
||
controlsTitle = "Manual Redaction Controls"
|
||
convertPDFToImageLabel = "Convert PDF to PDF-Image (Used to remove text behind the box)"
|
||
export = "Export"
|
||
findCurrentOutlineItem = "Find current outline item"
|
||
header = "Manual Redaction"
|
||
instructions = "Select text or draw areas on the PDF to mark content for redaction."
|
||
markArea = "Mark Area"
|
||
markText = "Mark Text"
|
||
nextPage = "Next Page"
|
||
noMarks = "No redaction marks. Use the tools above to mark content for redaction."
|
||
pageBasedRedaction = "Page-based Redaction"
|
||
pendingLabel = "Pending:"
|
||
previousPage = "Previous Page"
|
||
showAttachments = "Show Attachments"
|
||
showDocumentOutline = "Show Document Outline (double-click to expand/collapse all items)"
|
||
showLayers = "Show Layers (double-click to reset all layers to the default state)"
|
||
showThumbnails = "Show Thumbnails"
|
||
textBasedRedaction = "Text-based Redaction"
|
||
title = "Redaction Tools"
|
||
toggleSidebar = "Toggle Sidebar"
|
||
upload = "Upload"
|
||
zoom = "Zoom"
|
||
zoomIn = "Zoom in"
|
||
zoomOut = "Zoom out"
|
||
|
||
[redact.manual.pageRedactionNumbers]
|
||
placeholder = "(e.g. 1,2,8 or 4,7,12-16 or 2n-1)"
|
||
title = "Pages"
|
||
|
||
[redact.manual.redactionColor]
|
||
title = "Redaction Colour"
|
||
|
||
[redact.modeSelector]
|
||
automatic = "Automatic"
|
||
automaticDesc = "Redact text based on search terms"
|
||
automaticDisabledTooltip = "Select files in the file manager to redact multiple files at once"
|
||
manual = "Manual"
|
||
manualComingSoon = "Manual redaction coming soon"
|
||
manualDesc = "Click and drag to redact specific areas"
|
||
mode = "Mode"
|
||
title = "Redaction Method"
|
||
|
||
[redact.tooltip.advanced.color]
|
||
text = "Customise the appearance of redaction boxes. Black is standard, but you can choose any colour. Padding adds extra space around the found text."
|
||
title = "Box Colour & 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]
|
||
footer = "Releases"
|
||
header = "Release Notes"
|
||
note = "Release notes are only available in English"
|
||
title = "Release Notes"
|
||
|
||
[releases.current]
|
||
version = "Current Release"
|
||
|
||
[removeAnnotations]
|
||
header = "Remove Annotations"
|
||
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."
|
||
title = "About Remove Annotations"
|
||
|
||
[removeAnnotations.settings]
|
||
title = "Settings"
|
||
|
||
[removeAnnotations.tooltip.description]
|
||
title = "What it does"
|
||
|
||
[removeAnnotations.tooltip.header]
|
||
title = "About Remove Annotations"
|
||
|
||
[removeBlanks]
|
||
header = "Remove Blank Pages"
|
||
submit = "Remove blank pages"
|
||
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 grey"
|
||
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"
|
||
unit = "%"
|
||
|
||
[removeCertSign]
|
||
description = "This tool will remove digital certificate signatures from your PDF document."
|
||
filenamePrefix = "unsigned"
|
||
header = "Remove the digital certificate from the PDF"
|
||
selectPDF = "Select a PDF file:"
|
||
submit = "Remove Signature"
|
||
tags = "authenticate,PEM,P12,official,decrypt"
|
||
title = "Remove Certificate Signature"
|
||
|
||
[removeCertSign.error]
|
||
failed = "An error occurred whilst removing certificate signatures."
|
||
|
||
[removeCertSign.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[removeCertSign.results]
|
||
title = "Certificate Removal Results"
|
||
|
||
[removeImage]
|
||
header = "Remove image"
|
||
removeImage = "Remove image"
|
||
submit = "Remove image"
|
||
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"
|
||
|
||
[removeMetadata]
|
||
submit = "Remove Metadata"
|
||
|
||
[removePages]
|
||
filenamePrefix = "pages_removed"
|
||
submit = "Remove Pages"
|
||
tags = "Remove pages,delete pages"
|
||
title = "Remove Pages"
|
||
|
||
[removePages.error]
|
||
failed = "An error occurred whilst removing pages."
|
||
|
||
[removePages.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[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"
|
||
|
||
[removePages.tooltip.safety]
|
||
bullet1 = "Always preview your selection before processing"
|
||
bullet2 = "Keep a backup of your original file"
|
||
bullet3 = "Page numbers start from 1, not 0"
|
||
bullet4 = "Invalid page numbers will be ignored"
|
||
text = "Important considerations when removing pages:"
|
||
title = "Safety Tips"
|
||
|
||
[removePassword]
|
||
desc = "Remove password protection from your PDF document."
|
||
filenamePrefix = "decrypted"
|
||
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]
|
||
completed = "Password configured"
|
||
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"
|
||
|
||
[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."
|
||
filenamePrefix = "repaired"
|
||
header = "Repair PDFs"
|
||
submit = "Repair"
|
||
tags = "fix,restore,correction,recover"
|
||
title = "Repair"
|
||
|
||
[repair.error]
|
||
failed = "An error occurred whilst repairing the PDF."
|
||
|
||
[repair.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[repair.results]
|
||
title = "Repair Results"
|
||
|
||
[replace-color]
|
||
previewOverlayOpacity = "Preview overlay opacity"
|
||
previewOverlayTransparency = "Preview overlay transparency"
|
||
previewOverlayVisibility = "Show preview overlay"
|
||
submit = "Replace"
|
||
title = "Replace-Invert-Color"
|
||
|
||
[replace-color.options]
|
||
fill = "Fill colour"
|
||
gradient = "Gradient"
|
||
|
||
[replace-color.selectText]
|
||
1 = "Replace or invert colour options"
|
||
10 = "Choose text Color"
|
||
11 = "Choose background Color"
|
||
12 = "Choose start colour"
|
||
13 = "Choose end colour"
|
||
2 = "Default (preset high contrast colours)"
|
||
3 = "Custom (choose your own colours)"
|
||
4 = "Full invert (invert all colours)"
|
||
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 Colour,Page operations,Back end,server side"
|
||
|
||
[replaceColor.error]
|
||
failed = "An error occurred while processing the colour replacement."
|
||
|
||
[replaceColor.labels]
|
||
colourOperation = "Colour operation"
|
||
settings = "Settings"
|
||
|
||
[replaceColor.options]
|
||
cmyk = "Convert to CMYK"
|
||
custom = "Custom"
|
||
highContrast = "High contrast"
|
||
invertAll = "Invert all colours"
|
||
|
||
[replaceColor.tooltip.cmyk]
|
||
text = "Convert the PDF from RGB colour space to CMYK colour space, optimized for professional printing. This process converts colours to the Cyan, Magenta, Yellow, Black model used by printers."
|
||
title = "Convert to CMYK"
|
||
|
||
[replaceColor.tooltip.custom]
|
||
bullet1 = "Text colour - Choose the colour for text elements"
|
||
bullet2 = "Background colour - Set the background colour for the document"
|
||
text = "Define your own text and background colours using the colour pickers. Perfect for creating branded documents or specific accessibility requirements."
|
||
title = "Custom Colours"
|
||
|
||
[replaceColor.tooltip.description]
|
||
text = "Transform PDF colours to improve readability and accessibility. Choose from high contrast presets, invert all colours, or create custom colour schemes."
|
||
title = "Description"
|
||
|
||
[replaceColor.tooltip.header]
|
||
title = "Replace & Invert Colour 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 colour combinations designed for better readability and accessibility compliance."
|
||
title = "High Contrast"
|
||
|
||
[replaceColor.tooltip.invertAll]
|
||
text = "Completely invert all colours 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 Colours"
|
||
|
||
[rotate]
|
||
rotateLeft = "Rotate Anticlockwise"
|
||
rotateRight = "Rotate Clockwise"
|
||
selectRotation = "Select Rotation Angle (Clockwise)"
|
||
submit = "Apply Rotation"
|
||
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 anticlockwise, right button rotates clockwise. Each click rotates by 90 degrees."
|
||
title = "Controls"
|
||
|
||
[rotate.tooltip.description]
|
||
text = "Rotate your PDF pages clockwise or anticlockwise 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"
|
||
|
||
[timestampPdf]
|
||
completed = "PDF timestamped successfully"
|
||
desc = "Add an RFC 3161 document timestamp to your PDF using a trusted Time Stamp Authority (TSA) server."
|
||
filenamePrefix = "timestamped"
|
||
results = "Timestamp Results"
|
||
submit = "Apply Timestamp"
|
||
title = "Timestamp PDF"
|
||
|
||
[timestampPdf.error]
|
||
failed = "An error occurred while timestamping the PDF."
|
||
generic = "Timestamping failed"
|
||
|
||
[timestampPdf.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[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"
|
||
|
||
[sanitize]
|
||
completed = "Sanitisation completed successfully"
|
||
desc = "Remove potentially harmful elements from PDF files."
|
||
filenamePrefix = "sanitised"
|
||
sanitizationResults = "Sanitisation Results"
|
||
submit = "Sanitise PDF"
|
||
title = "Sanitise"
|
||
|
||
[sanitize.error]
|
||
failed = "An error occurred while sanitising the PDF."
|
||
generic = "Sanitisation failed"
|
||
|
||
[sanitize.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[sanitize.options]
|
||
note = "Select the elements you want to remove from the PDF. At least one option must be selected."
|
||
title = "Sanitisation 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]
|
||
files = "Files"
|
||
results = "Results"
|
||
settings = "Settings"
|
||
|
||
[sanitizePdf]
|
||
tags = "clean,secure,safe,remove-threats"
|
||
|
||
[sanitizePDF]
|
||
header = "Sanitise a PDF file"
|
||
submit = "Sanitize PDF"
|
||
title = "Sanitise PDF"
|
||
|
||
[sanitizePDF.selectText]
|
||
1 = "Remove JavaScript actions"
|
||
2 = "Remove embedded files"
|
||
3 = "Remove XMP metadata"
|
||
4 = "Remove links"
|
||
5 = "Remove fonts"
|
||
6 = "Remove Document Info Metadata"
|
||
|
||
[scalePages]
|
||
header = "Adjust page-scale"
|
||
keepPageSize = "Original Size"
|
||
pageSize = "Size of a page of the document."
|
||
scaleFactor = "Zoom level (crop) of a page."
|
||
submit = "Submit"
|
||
title = "Adjust page-scale"
|
||
|
||
[ScannerImageSplit]
|
||
info = "Python is not installed. It is required to run."
|
||
tags = "separate,auto-detect,scans,multi-photo,organize"
|
||
|
||
[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 colour 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"
|
||
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 colour 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]
|
||
|
||
[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."
|
||
refreshPage = "Refresh Page"
|
||
|
||
[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"
|
||
|
||
[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"
|
||
|
||
[settings.configuration]
|
||
advanced = "Advanced"
|
||
database = "Database"
|
||
endpoints = "Endpoints"
|
||
features = "Features"
|
||
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.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.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.team]
|
||
managedByTeam = "Managed by team"
|
||
memberCount = "{{count}} team members"
|
||
|
||
[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.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 tab is active in the left column when the app starts"
|
||
defaultToolPickerMode = "Default tool picker mode"
|
||
defaultToolPickerModeDescription = "Choose whether the tool picker opens in fullscreen or sidebar by default"
|
||
description = "Configure general application preferences."
|
||
defaultViewerZoom = "Default reader zoom"
|
||
defaultViewerZoomDescription = "Set the default zoom level when opening PDFs in the reader"
|
||
hideUnavailableConversions = "Hide unavailable conversions"
|
||
hideUnavailableConversionsDescription = "Remove disabled conversion options in the Convert tool instead of showing them greyed out."
|
||
hideUnavailableTools = "Hide unavailable tools"
|
||
hideUnavailableToolsDescription = "Remove tools that have been disabled by your server instead of showing them greyed out."
|
||
logout = "Log out"
|
||
setAsDefault = "Set as Default"
|
||
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 organisation."
|
||
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.zoomLevel]
|
||
auto = "Auto"
|
||
fitPage = "Fit page"
|
||
fitWidth = "Fit width"
|
||
|
||
[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"
|
||
serverNeedsUpdate = "Server needs to be updated by administrator"
|
||
title = "Software Updates"
|
||
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.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.licensingAnalytics]
|
||
audit = "Audit"
|
||
plan = "Plan"
|
||
title = "Licensing & Analytics"
|
||
usageAnalytics = "Usage Analytics"
|
||
|
||
[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.tooltips]
|
||
enableLoginFirst = "Enable login mode first"
|
||
requiresEnterprise = "Requires Enterprise license"
|
||
|
||
[settings.workspace]
|
||
people = "People"
|
||
teams = "Teams"
|
||
title = "Workspace"
|
||
|
||
[settings.team]
|
||
title = "Team"
|
||
|
||
[localMode]
|
||
toolUnavailable = "This tool requires an account. Sign in to Stirling Cloud or connect to a self-hosted server to use it."
|
||
|
||
[localMode.banner]
|
||
message = "Sign in to unlock all tools."
|
||
signIn = "Sign In"
|
||
title = "Running locally"
|
||
|
||
[localMode.toolPicker]
|
||
message = "Sign in to unlock all tools."
|
||
signIn = "Sign In"
|
||
|
||
[setup]
|
||
description = "Get started by choosing how you want to use Stirling PDF"
|
||
welcome = "Welcome to Stirling PDF"
|
||
|
||
[setup.login]
|
||
connectingTo = "Connecting to:"
|
||
hideInstructions = "Hide instructions"
|
||
skipSignIn = "Continue without signing in"
|
||
instructions = "To enable login on your Stirling PDF server:"
|
||
instructionsEnvVar = "Set the environment variable:"
|
||
instructionsOrYml = "Or in settings.yml:"
|
||
instructionsRestart = "Then restart your server for the changes to take effect."
|
||
oauthPending = "Opening browser for authentication..."
|
||
orContinueWith = "Or continue with email"
|
||
serverRequirement = "Note: The server must have login enabled."
|
||
showInstructions = "How to enable?"
|
||
signInWith = "Sign in with"
|
||
sso = "Single Sign-On"
|
||
submit = "Login"
|
||
subtitle = "Enter your credentials to continue"
|
||
title = "Sign In"
|
||
|
||
[setup.login.email]
|
||
label = "Email"
|
||
placeholder = "Enter your email"
|
||
|
||
[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.login.password]
|
||
label = "Password"
|
||
placeholder = "Enter your password"
|
||
|
||
[setup.login.username]
|
||
label = "Username"
|
||
placeholder = "Enter your username"
|
||
|
||
[setup.mode.saas]
|
||
description = "Sign in with your Stirling account"
|
||
title = "Stirling Cloud"
|
||
|
||
[setup.mode.selfhosted]
|
||
description = "Connect to your own Stirling PDF server with your personal account"
|
||
title = "Self-Hosted Server"
|
||
|
||
[setup.saas]
|
||
subtitle = "Sign in with your Stirling account"
|
||
title = "Sign in to Stirling"
|
||
|
||
[setup.selfhosted]
|
||
link = "or connect to a self-hosted account"
|
||
subtitle = "Enter your server credentials"
|
||
changeServerLocked = "Your organisation has restricted this app to a specific server"
|
||
switchToLocal = "Use local tools instead"
|
||
title = "Sign in to Server"
|
||
|
||
[setup.selfhosted.unreachable]
|
||
changeServer = "Connect to a different server"
|
||
changeServerLocked = "Your organisation has restricted this app to a specific 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.type]
|
||
saas = "Stirling PDF SaaS"
|
||
selfhosted = "Self-hosted server"
|
||
|
||
[setup.server.url]
|
||
description = "Enter the full URL of your self-hosted Stirling PDF server"
|
||
label = "Server URL"
|
||
|
||
[setup.step1]
|
||
description = "Offline or Server"
|
||
label = "Choose Mode"
|
||
|
||
[setup.step2]
|
||
description = "Self-hosted server"
|
||
label = "Select Server"
|
||
|
||
[setup.step3]
|
||
description = "Enter credentials"
|
||
label = "Login"
|
||
|
||
[showJS]
|
||
done = "JavaScript extracted"
|
||
downloadJS = "Download Javascript"
|
||
header = "Show Javascript"
|
||
processing = "Extracting JavaScript..."
|
||
results = "Result"
|
||
singleFileWarning = "This tool only supports one file at a time. Please select a single file."
|
||
submit = "Show"
|
||
tags = "JS"
|
||
title = "Show Javascript"
|
||
|
||
[showJS.view]
|
||
title = "Extracted JavaScript"
|
||
|
||
[sidebar]
|
||
toggle = "Toggle Sidebar"
|
||
|
||
[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"
|
||
title = "Sign"
|
||
undo = "Undo"
|
||
updateAndPlace = "Update and Place"
|
||
upload = "Upload Image"
|
||
|
||
[sign.canvas]
|
||
clear = "Clear canvas"
|
||
clickToOpen = "Click to open the drawing canvas"
|
||
colorLabel = "Colour"
|
||
colorPickerTitle = "Choose stroke colour"
|
||
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}} favourites 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"
|
||
|
||
[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 colour"
|
||
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"
|
||
|
||
[signRequest]
|
||
declined = "Sign request declined"
|
||
fetchFailed = "Failed to load sign request"
|
||
signed = "Document signed successfully"
|
||
|
||
[signSession]
|
||
createFailed = "Failed to create signing request"
|
||
created = "Signing request sent"
|
||
|
||
[signup]
|
||
accountCreatedSuccessfully = "Account created successfully! You can now sign in."
|
||
alreadyHaveAccount = "Already have an account? Sign in"
|
||
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"
|
||
subtitle = "Join Stirling PDF to get started"
|
||
title = "Create an account"
|
||
unexpectedError = "Unexpected error: {{message}}"
|
||
useEmailInstead = "Use Email Instead"
|
||
|
||
[sizes]
|
||
large = "Large"
|
||
medium = "Medium"
|
||
small = "Small"
|
||
x-large = "X-Large"
|
||
|
||
[split]
|
||
header = "Split PDF"
|
||
resultsTitle = "Split Results"
|
||
selectMethod = "Select a split method"
|
||
splitPages = "Enter pages to split on:"
|
||
submit = "Split"
|
||
title = "Split PDF"
|
||
|
||
[split.desc]
|
||
1 = "The numbers you select are the page number you wish to do a split on"
|
||
2 = "As such selecting 1,3,7-9 would split a 10 page document into 6 separate PDFS with:"
|
||
3 = "Document #1: Page 1"
|
||
4 = "Document #2: Page 2 and 3"
|
||
5 = "Document #3: Page 4, 5, 6 and 7"
|
||
6 = "Document #4: Page 8"
|
||
7 = "Document #5: Page 9"
|
||
8 = "Document #6: Page 10"
|
||
|
||
[split.error]
|
||
failed = "An error occurred while splitting the PDF."
|
||
|
||
[split.method]
|
||
label = "Choose split method"
|
||
placeholder = "Select how to split the PDF"
|
||
|
||
[split.methods.byChapters]
|
||
desc = "Split at bookmark boundaries"
|
||
name = "Chapters"
|
||
tooltip = "Uses PDF bookmarks to determine split points"
|
||
|
||
[split.methods.byDocCount]
|
||
desc = "Create specific number of files"
|
||
name = "Document Count"
|
||
tooltip = "Enter how many files you want to create"
|
||
|
||
[split.methods.byPageCount]
|
||
desc = "Fixed pages per file"
|
||
name = "Page Count"
|
||
tooltip = "Enter the number of pages for each split file"
|
||
|
||
[split.methods.byPageDivider]
|
||
desc = "Auto-split with divider sheets"
|
||
name = "Page Divider"
|
||
tooltip = "Use QR code divider sheets between documents when scanning"
|
||
|
||
[split.methods.byPoster]
|
||
name = "Printable Chunks"
|
||
desc = "Split large pages into printable sizes"
|
||
tooltip = "Divide oversized pages into smaller chunks suitable for printing on standard paper (A4, Letter, etc.)"
|
||
|
||
[split.methods.byPages]
|
||
desc = "Extract specific pages (1,3,5-10)"
|
||
name = "Page Numbers"
|
||
tooltip = "Enter page numbers separated by commas or ranges with hyphens"
|
||
|
||
[split.methods.bySections]
|
||
desc = "Divide pages into grid sections"
|
||
name = "Sections"
|
||
tooltip = "Split each page into horizontal and vertical sections"
|
||
|
||
[split.methods.bySize]
|
||
desc = "Limit maximum file size"
|
||
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.settings]
|
||
selectMethodFirst = "Please select a split method first"
|
||
|
||
[split.steps]
|
||
chooseMethod = "Choose Method"
|
||
settings = "Settings"
|
||
|
||
[split.poster]
|
||
rightToLeft = "Split right-to-left"
|
||
|
||
[split.poster.pageSize]
|
||
label = "Target Page Size"
|
||
description = "Size of output pages for printing"
|
||
|
||
[split.poster.xFactor]
|
||
label = "Horizontal Divisions"
|
||
description = "Number of columns to split each page into"
|
||
|
||
[split.poster.yFactor]
|
||
label = "Vertical Divisions"
|
||
description = "Number of rows to split each page into"
|
||
|
||
[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.byCount]
|
||
bullet1 = "Page Count: Fixed number of pages per file"
|
||
bullet2 = "Document Count: Fixed number of output files"
|
||
bullet3 = "Useful for batch processing workflows"
|
||
text = "Create multiple PDFs with a specific number of pages or documents each."
|
||
title = "Split by Count"
|
||
|
||
[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.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.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.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.tooltip.header]
|
||
title = "Split Methods Overview"
|
||
|
||
[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]
|
||
header = "Split PDF into Sections"
|
||
merge = "Merge Into One PDF"
|
||
submit = "Split PDF"
|
||
tags = "Section Split, Divide, Customize,Customise"
|
||
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]
|
||
header = "Split PDF by Size or Count"
|
||
submit = "Submit"
|
||
title = "Split PDF by Size or Count"
|
||
|
||
[split-by-size-or-count.type]
|
||
docCount = "By Document Count"
|
||
label = "Select Split Type"
|
||
pageCount = "By Page Count"
|
||
size = "By Size"
|
||
|
||
[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"
|
||
header = "Split PDF by Chapters"
|
||
includeMetadata = "Include Metadata"
|
||
submit = "Split PDF"
|
||
title = "Split PDF by Chapters"
|
||
|
||
[splitByChapters.desc]
|
||
1 = "This tool splits a PDF file into multiple PDFs based on its chapter structure."
|
||
2 = "Bookmark Level: Choose the level of bookmarks to use for splitting (0 for top-level, 1 for second-level, etc.)."
|
||
3 = "Include Metadata: If checked, the original PDF's metadata will be included in each split PDF."
|
||
4 = "Allow Duplicates: If checked, allows multiple bookmarks on the same page to create separate PDFs."
|
||
|
||
[splitPdfByChapters]
|
||
tags = "split,chapters,bookmarks,organize"
|
||
|
||
[storageShare]
|
||
accessed = "Accessed"
|
||
accessDenied = "You do not have access to this shared file. Ask the owner to share it with you."
|
||
accessFailed = "Unable to load activity."
|
||
accessDeniedBody = "You do not have access to this file. Ask the owner to share it with you."
|
||
accessDeniedTitle = "No access"
|
||
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."
|
||
createdAt = "Created"
|
||
download = "Download"
|
||
downloadFailed = "Unable to download this file."
|
||
expiredBody = "This share link is invalid or has expired."
|
||
expiredTitle = "Link expired"
|
||
goToLogin = "Go to login"
|
||
loadFailed = "Unable to open shared file."
|
||
loading = "Loading share link..."
|
||
loginPrompt = "Sign in to access this shared file."
|
||
loginRequired = "Login required"
|
||
openInApp = "Open in Stirling PDF"
|
||
ownerLabel = "Owner"
|
||
ownerUnknown = "Unknown"
|
||
requiresLogin = "This shared file requires login."
|
||
roleCommenter = "Commenter"
|
||
roleEditor = "Editor"
|
||
roleViewer = "Viewer"
|
||
shareHeading = "Shared file"
|
||
titleDefault = "Shared file"
|
||
tryAgain = "Please try again later."
|
||
addUser = "Add"
|
||
commenterHint = "Commenting is coming soon."
|
||
copied = "Link copied to clipboard"
|
||
copy = "Copy"
|
||
copyFailed = "Copy failed"
|
||
description = "Create a share link for this file. Signed-in users with the link can access it."
|
||
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"
|
||
failure = "Unable to generate a share link. Please try again."
|
||
fileLabel = "File"
|
||
generate = "Generate Link"
|
||
generated = "Share link generated"
|
||
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."
|
||
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."
|
||
removeLink = "Remove link"
|
||
removeUser = "Remove"
|
||
revokeFailed = "Unable to remove the share link."
|
||
revoked = "Share link removed"
|
||
roleLabel = "Role"
|
||
sharingDisabled = "Sharing is disabled."
|
||
sharingDisabledBody = "Sharing has been disabled by your server settings."
|
||
sharedUsersTitle = "Shared users"
|
||
title = "Share File"
|
||
unknownUser = "Unknown user"
|
||
userAddFailed = "Unable to share with that user."
|
||
userAdded = "User added to shared list."
|
||
usernameLabel = "Username or email"
|
||
usernamePlaceholder = "Enter a username or email"
|
||
userRemoveFailed = "Unable to remove that user."
|
||
userRemoved = "User removed from shared list."
|
||
viewActivity = "View activity"
|
||
viewed = "Viewed"
|
||
viewsCount = "Views: {{count}}"
|
||
downloaded = "Downloaded"
|
||
bulkDescription = "Create one link to share all selected files with signed-in users."
|
||
bulkTitle = "Share selected files"
|
||
copyLink = "Copy share link"
|
||
fileCount = "{{count}} files selected"
|
||
ownerOnly = "Only the owner can manage sharing."
|
||
selectSingleFile = "Select a single file to manage sharing."
|
||
|
||
[storageUpload]
|
||
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."
|
||
fileLabel = "File"
|
||
hint = "Public links and access modes are controlled by your server settings."
|
||
success = "Uploaded to server"
|
||
title = "Upload to Server"
|
||
updateButton = "Update on Server"
|
||
uploadButton = "Upload to Server"
|
||
bulkDescription = "This uploads the selected files to your server storage."
|
||
bulkTitle = "Upload selected files"
|
||
fileCount = "{{count}} files selected"
|
||
more = " +{{count}} more"
|
||
|
||
[storage]
|
||
approximateSize = "Approximate size"
|
||
fileTooLarge = "File too large. Maximum size per file is"
|
||
storageFull = "Storage is nearly full. Consider removing some files."
|
||
storageLimit = "Storage limit"
|
||
storageQuotaExceeded = "Storage quota exceeded. Please remove some files before uploading more."
|
||
storageUsed = "Temporary Storage used"
|
||
temporaryNotice = "Files are stored temporarily in your browser and may be cleared automatically"
|
||
|
||
[subscription]
|
||
cancelsOn = "Cancels on {{date}}"
|
||
renewsOn = "Renews on {{date}}"
|
||
|
||
[subscription.status]
|
||
active = "Active"
|
||
canceled = "Canceled"
|
||
incomplete = "Incomplete"
|
||
none = "No Subscription"
|
||
pastDue = "Past Due"
|
||
trialing = "Trial"
|
||
|
||
[survey]
|
||
button = "Take Survey"
|
||
changes = "Stirling-PDF has changed since the last survey! To find out more please check our blog post here:"
|
||
changes2 = "With these changes we are getting paid business support and funding"
|
||
description = "Stirling-PDF has no tracking so we want to hear from our users to improve Stirling-PDF!"
|
||
disabled = "(Survey popup will be disabled in following updates but available at foot of page)"
|
||
dontShowAgain = "Don't show again"
|
||
nav = "Survey"
|
||
please = "Please consider taking our survey to have input on the future of Stirling-PDF!"
|
||
title = "Stirling-PDF Survey"
|
||
|
||
[survey.meeting]
|
||
1 = "If you're using Stirling PDF at work, we'd love to speak to you. We're offering technical support sessions in exchange for a 15 minute user discovery session."
|
||
2 = "This is a chance to:"
|
||
3 = "Get help with deployment, integrations, or troubleshooting"
|
||
4 = "Provide direct feedback on performance, edge cases, and feature gaps"
|
||
5 = "Help us refine Stirling PDF for real-world enterprise use"
|
||
6 = "If you're interested, you can book time with our team directly. (English speaking only)"
|
||
7 = "Looking forward to digging into your use cases and making Stirling PDF even better!"
|
||
button = "Book meeting"
|
||
notInterested = "Not a business and/or interested in a meeting?"
|
||
|
||
[swagger]
|
||
desc = "View and test the Stirling PDF API endpoints"
|
||
header = "API Documentation"
|
||
tags = "api,documentation,swagger,endpoints,development"
|
||
title = "API Documentation"
|
||
|
||
[tableExtraxt]
|
||
tags = "CSV,Table Extraction,extract,convert"
|
||
|
||
[theme]
|
||
toggle = "Toggle Theme"
|
||
|
||
[toolPanel]
|
||
alpha = "Alpha"
|
||
comingSoon = "Coming soon:"
|
||
placeholder = "Choose a tool to get started"
|
||
premiumFeature = "Premium feature:"
|
||
|
||
[toolPanel.fullscreen]
|
||
comingSoon = "Coming soon:"
|
||
favorite = "Add to favourites"
|
||
favorites = "Favourites"
|
||
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 favourites"
|
||
|
||
[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 catalogue 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"
|
||
|
||
[toolPanel.toggle]
|
||
fullscreen = "Switch to fullscreen mode"
|
||
sidebar = "Switch to sidebar mode"
|
||
|
||
[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"
|
||
|
||
[tool]
|
||
endpointUnavailable = "This tool is unavailable on your server."
|
||
endpointUnavailableClickable = "Not available in this mode. Click to sign in."
|
||
invalidParams = "Fill in the required settings."
|
||
noFiles = "Add a file to get started."
|
||
viewerMode = "Switch to the file editor to select multiple files."
|
||
singleFileScope = "Only applying to: {{fileName}}"
|
||
scopeThisFile = "this file"
|
||
scopeFiles = "files"
|
||
selectFilesHint = "Select files in Active Files to run this tool"
|
||
|
||
[tools]
|
||
noSearchResults = "No tools found"
|
||
noTools = "No tools available"
|
||
|
||
[unlockPDFForms]
|
||
description = "This tool will remove read-only restrictions from PDF form fields, making them editable and fillable."
|
||
filenamePrefix = "unlocked_forms"
|
||
header = "Unlock PDF Forms"
|
||
submit = "Unlock Forms"
|
||
tags = "remove,delete,form,field,readonly"
|
||
title = "Remove Read-Only from Form Fields"
|
||
|
||
[unlockPDFForms.error]
|
||
failed = "An error occurred whilst unlocking PDF forms."
|
||
|
||
[unlockPDFForms.files]
|
||
placeholder = "Select a PDF file in the main view to get started"
|
||
|
||
[unlockPDFForms.results]
|
||
title = "Unlocked Forms Results"
|
||
|
||
[update]
|
||
availableUpdates = "Available Updates"
|
||
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"
|
||
current = "Current Version"
|
||
downloadLatest = "Download Latest"
|
||
latest = "Latest Version"
|
||
latestStable = "Latest Stable"
|
||
loadingDetailedInfo = "Loading detailed information..."
|
||
migrationGuide = "Migration Guide"
|
||
migrationGuides = "Migration Guides"
|
||
modalTitle = "Update Available"
|
||
priorityLabel = "Priority"
|
||
recommendedAction = "Recommended Action"
|
||
releaseNotes = "Release Notes"
|
||
unableToLoadDetails = "Unable to load detailed information."
|
||
updateAvailable = "Update Available"
|
||
urgentUpdateAvailable = "Urgent Update"
|
||
version = "Version"
|
||
viewAllReleases = "View All Releases"
|
||
viewGuide = "View Guide"
|
||
|
||
[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"
|
||
dismiss = "Dismiss banner"
|
||
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]
|
||
credit = "Uses WeasyPrint"
|
||
header = "URL To PDF"
|
||
submit = "Convert"
|
||
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..."
|
||
header = "Validate Digital Signatures"
|
||
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)"
|
||
selectPDF = "Select signed PDF file"
|
||
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"
|
||
expired = "Certificate has expired"
|
||
info = "Certificate Details"
|
||
issuer = "Issuer"
|
||
keySize = "Key Size"
|
||
keyUsage = "Key Usage"
|
||
revoked = "Certificate has been revoked"
|
||
selfSigned = "Self-Signed"
|
||
serialNumber = "Serial Number"
|
||
subject = "Subject"
|
||
validFrom = "Valid From"
|
||
validUntil = "Valid Until"
|
||
version = "Version"
|
||
|
||
[validateSignature.chain]
|
||
invalid = "Certificate chain validation failed - cannot verify signer's identity"
|
||
|
||
[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"
|
||
info = "Signature Information"
|
||
mathValid = "Signature is mathematically valid BUT:"
|
||
|
||
[validateSignature.status]
|
||
_value = "Status"
|
||
complete = "Validation complete"
|
||
invalid = "Invalid"
|
||
valid = "Valid"
|
||
|
||
[validateSignature.trust]
|
||
invalid = "Certificate not in trust store - source cannot be verified"
|
||
|
||
[view]
|
||
fileManager = "File Manager"
|
||
pageEditor = "Page Editor"
|
||
viewer = "Viewer"
|
||
|
||
[viewer.attachments]
|
||
title = "Attachments"
|
||
searchPlaceholder = "Search attachments"
|
||
noSupport = "Attachment support is unavailable for this viewer."
|
||
noDocument = "Open a PDF to view its attachments."
|
||
loading = "Loading attachments..."
|
||
empty = "No attachments in this document"
|
||
noMatch = "No attachments match your search"
|
||
|
||
[viewer.comments]
|
||
title = "Comments"
|
||
hint = "Place comments with the Comment, Insert Text, or Replace Text tools. They will appear here by page."
|
||
placeholder = "Type your comment..."
|
||
pageLabel = "Page {{page}}"
|
||
oneComment = "1 comment"
|
||
nComments = "{{count}} comments"
|
||
addCommentPlaceholder = "Add comment..."
|
||
addLink = "Add link"
|
||
goToLink = "Go to link"
|
||
addComment = "Add comment"
|
||
viewComment = "View comment"
|
||
addReplyPlaceholder = "Add reply..."
|
||
saveReply = "Save reply"
|
||
send = "Send"
|
||
moreActions = "More actions"
|
||
typeComment = "Comment"
|
||
typeInsertText = "Insert Text"
|
||
typeReplaceText = "Replace Text"
|
||
locateAnnotation = "Locate in document"
|
||
deleteTitle = "Remove annotation from comments?"
|
||
deleteDescription = "This annotation has a comment attached. You can remove just the comment from the sidebar while keeping the annotation, or delete everything."
|
||
removeCommentOnly = "Remove comment only"
|
||
deleteAnnotationAndComment = "Delete annotation & comment"
|
||
|
||
[viewer.formBar]
|
||
title = "Form Fields"
|
||
unsavedBadge = "Unsaved"
|
||
unsavedDesc = "You have unsaved changes"
|
||
hasFieldsDesc = "This PDF contains fillable fields"
|
||
dismiss = "Dismiss"
|
||
apply = "Apply Changes"
|
||
download = "Download PDF"
|
||
|
||
[viewPdf]
|
||
header = "View PDF"
|
||
tags = "view,read,annotate,text,image,highlight,edit"
|
||
title = "View/Edit PDF"
|
||
|
||
[warning]
|
||
tooltipTitle = "Warning"
|
||
|
||
[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"
|
||
|
||
[watermark]
|
||
completed = "Watermark added"
|
||
desc = "Add text or image watermarks to PDF files"
|
||
filenamePrefix = "watermarked"
|
||
submit = "Add Watermark"
|
||
title = "Add Watermark"
|
||
|
||
[watermark.alphabet]
|
||
arabic = "Arabic"
|
||
chinese = "Chinese"
|
||
japanese = "Japanese"
|
||
korean = "Korean"
|
||
roman = "Roman/Latin"
|
||
thai = "Thai"
|
||
|
||
[watermark.error]
|
||
failed = "An error occurred while adding watermark to the PDF."
|
||
|
||
[watermark.results]
|
||
title = "Watermark Results"
|
||
|
||
[watermark.settings]
|
||
alphabet = "Font/Language"
|
||
color = "Watermark Colour"
|
||
convertToImage = "Flatten PDF pages to images"
|
||
fontSize = "Font Size"
|
||
opacity = "Opacity (%)"
|
||
rotation = "Rotation (degrees)"
|
||
size = "Size"
|
||
type = "Watermark Type"
|
||
|
||
[watermark.settings.image]
|
||
choose = "Choose Image"
|
||
label = "Watermark Image"
|
||
selected = "Selected: {{filename}}"
|
||
|
||
[watermark.settings.spacing]
|
||
height = "Height Spacing"
|
||
horizontal = "Horizontal Spacing"
|
||
vertical = "Vertical Spacing"
|
||
width = "Width Spacing"
|
||
|
||
[watermark.settings.text]
|
||
label = "Watermark 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.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.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.formatting.spacing]
|
||
bullet1 = "Horizontal spacing: Distance between watermarks left to right"
|
||
bullet2 = "Vertical spacing: Distance between watermarks top to bottom"
|
||
bullet3 = "Higher values create more spread out patterns"
|
||
text = "Adjust the spacing between repeated watermarks across the page."
|
||
title = "Spacing 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 grey (#d3d3d3) for subtle watermarks"
|
||
bullet2 = "Black or dark colours for high contrast"
|
||
bullet3 = "Custom colours for branding purposes"
|
||
text = "Choose a colour that provides good contrast with your document content."
|
||
title = "Colour Selection"
|
||
|
||
[watermark.tooltip.textStyle.header]
|
||
title = "Text Style"
|
||
|
||
[watermark.tooltip.textStyle.language]
|
||
text = "Choose the appropriate language setting to ensure proper font rendering."
|
||
title = "Language Support"
|
||
|
||
[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 = "Customisable fonts and languages"
|
||
bullet2 = "Adjustable colours 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 colours."
|
||
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"
|
||
|
||
[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"
|
||
locked = "locked"
|
||
lockedBadge = "Locked"
|
||
loading = "Loading people..."
|
||
loginRequired = "Enable login mode first"
|
||
member = "Member"
|
||
noMembersFound = "No members found"
|
||
role = "Role"
|
||
searchMembers = "Search members..."
|
||
status = "Status"
|
||
team = "Team"
|
||
title = "People"
|
||
unlockAccount = "Unlock Account"
|
||
unlockUserError = "Failed to unlock user account"
|
||
unlockUserSuccess = "User account unlocked successfully"
|
||
user = "User"
|
||
|
||
[workspace.people.actions]
|
||
label = "Actions"
|
||
upgrade = "Upgrade"
|
||
|
||
[workspace.people.addMember]
|
||
authType = "Authentication Type"
|
||
cancel = "Cancel"
|
||
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"
|
||
passwordTooShort = "Password must be at least 6 characters"
|
||
role = "Role"
|
||
submit = "Add Member"
|
||
success = "User created successfully"
|
||
team = "Team (Optional)"
|
||
teamPlaceholder = "Select a team"
|
||
title = "Add Member"
|
||
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.delete]
|
||
error = "Failed to delete user"
|
||
success = "User deleted successfully"
|
||
|
||
[workspace.people.directInvite]
|
||
tab = "Direct Create"
|
||
|
||
[workspace.people.editMember]
|
||
cancel = "Cancel"
|
||
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"
|
||
description = "Type or paste in emails below, separated by commas. Users will receive login credentials via email."
|
||
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"
|
||
tab = "Email Invite"
|
||
|
||
[workspace.people.inviteLink]
|
||
copied = "Link copied to clipboard"
|
||
description = "Generate a secure link that allows the user to set their own password"
|
||
email = "Email Address"
|
||
emailDescription = "Optional - leave blank for a general invite link that can be used by anyone"
|
||
emailFailed = "Invite link generated, but email failed"
|
||
emailFailedDetails = "Error: {0}. Please share the invite link manually."
|
||
emailOptional = "Optional - leave blank for a general invite link"
|
||
emailPlaceholder = "[email protected] (optional)"
|
||
emailRequired = "Email address is required"
|
||
emailRequiredForSend = "Email address is required to send email notification"
|
||
emailSent = "Invite link generated and sent via email"
|
||
error = "Failed to generate invite link"
|
||
expiryDescription = "How many hours until the link expires"
|
||
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"
|
||
smtpRequired = "SMTP not configured"
|
||
submit = "Generate Invite Link"
|
||
success = "Invite link generated successfully"
|
||
successWithEmail = "Invite link generated and sent via email"
|
||
|
||
[workspace.people.inviteLinkTab]
|
||
tab = "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]
|
||
availableSlots = "Available Slots"
|
||
currentUsage = "Currently using {{current}} of {{max}} user licences"
|
||
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]
|
||
actions = "Actions"
|
||
addMember = "Add Member"
|
||
backToTeams = "Back to Teams"
|
||
cannotAddToInternal = "Cannot add members to the Internal team"
|
||
cannotDeleteInternal = "Cannot delete the Internal team"
|
||
cannotRemoveFromSystemTeam = "Cannot remove from system 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"
|
||
cancel = "Cancel"
|
||
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]
|
||
cancel = "Cancel"
|
||
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"
|
||
teamMustBeEmpty = "Team must be empty before deletion"
|
||
|
||
[workspace.teams.renameTeam]
|
||
cancel = "Cancel"
|
||
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"
|
||
|
||
[cloudBadge]
|
||
tooltip = "This operation will use your cloud credits"
|
||
|
||
|
||
[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 cancelled"
|
||
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]
|
||
message = "has invited you to join"
|
||
acceptButton = "Accept"
|
||
rejectButton = "Decline"
|
||
|
||
[team.features]
|
||
badge = "Team Features"
|
||
subtitle = "Collaborate with your team"
|
||
title = "Team Collaboration"
|
||
viewPlans = "View Plans"
|
||
|
||
[team.features.billing]
|
||
description = "Manage billing and subscriptions"
|
||
title = "Billing Management"
|
||
|
||
[team.features.credits]
|
||
description = "Shared credit pool for all members"
|
||
title = "Shared Credits"
|
||
|
||
[team.features.dashboard]
|
||
description = "View team activity and usage"
|
||
title = "Team Dashboard"
|
||
|
||
[team.features.invite]
|
||
description = "Add members to your team"
|
||
title = "Invite Members"
|
||
|
||
[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"
|
||
|
||
[team.upgrade]
|
||
button = "Upgrade to Team"
|
||
description = "Unlock team collaboration features"
|
||
title = "Upgrade to Team Plan"
|
||
|
||
[provider.oauth2.google]
|
||
scope = "Sign-in authentication"
|
||
|
||
[provider.oauth2.google.clientId]
|
||
label = "Client ID"
|
||
description = "The OAuth2 client ID from Google Cloud Console"
|
||
|
||
[provider.oauth2.google.clientSecret]
|
||
label = "Client Secret"
|
||
description = "The OAuth2 client secret from Google Cloud Console"
|
||
|
||
[provider.oauth2.google.scopes]
|
||
label = "Scopes"
|
||
description = "Comma-separated OAuth2 scopes"
|
||
|
||
[provider.oauth2.google.useAsUsername]
|
||
label = "Use as Username"
|
||
description = "Field to use as username (email, name, given_name, family_name)"
|
||
|
||
[provider.oauth2.github]
|
||
scope = "Sign-in authentication"
|
||
|
||
[provider.oauth2.github.clientId]
|
||
label = "Client ID"
|
||
description = "The OAuth2 client ID from GitHub Developer Settings"
|
||
|
||
[provider.oauth2.github.clientSecret]
|
||
label = "Client Secret"
|
||
description = "The OAuth2 client secret from GitHub Developer Settings"
|
||
|
||
[provider.oauth2.github.scopes]
|
||
label = "Scopes"
|
||
description = "Comma-separated OAuth2 scopes"
|
||
|
||
[provider.oauth2.github.useAsUsername]
|
||
label = "Use as Username"
|
||
description = "Field to use as username (email, login, name)"
|
||
|
||
[provider.oauth2.keycloak]
|
||
scope = "SSO"
|
||
|
||
[provider.oauth2.keycloak.issuer]
|
||
label = "Issuer URL"
|
||
description = "URL of the Keycloak realm's OpenID Connect Discovery endpoint"
|
||
|
||
[provider.oauth2.keycloak.clientId]
|
||
label = "Client ID"
|
||
description = "The OAuth2 client ID from Keycloak"
|
||
|
||
[provider.oauth2.keycloak.clientSecret]
|
||
label = "Client Secret"
|
||
description = "The OAuth2 client secret from Keycloak"
|
||
|
||
[provider.oauth2.keycloak.scopes]
|
||
label = "Scopes"
|
||
description = "Comma-separated OAuth2 scopes"
|
||
|
||
[provider.oauth2.keycloak.useAsUsername]
|
||
label = "Use as Username"
|
||
description = "Field to use as username (email, name, given_name, family_name, preferred_username)"
|
||
|
||
[provider.oauth2.generic]
|
||
name = "Generic OAuth2"
|
||
scope = "SSO"
|
||
|
||
[provider.oauth2.generic.enabled]
|
||
label = "Enable Generic OAuth2"
|
||
description = "Enable authentication using a custom OAuth2 provider"
|
||
|
||
[provider.oauth2.generic.provider]
|
||
label = "Provider Name"
|
||
description = "The name of your OAuth2 provider (e.g., Azure AD, Okta)"
|
||
|
||
[provider.oauth2.generic.issuer]
|
||
label = "Issuer URL"
|
||
description = "Provider that supports OpenID Connect Discovery (/.well-known/openid-configuration)"
|
||
|
||
[provider.oauth2.generic.clientId]
|
||
label = "Client ID"
|
||
description = "The OAuth2 client ID from your provider"
|
||
|
||
[provider.oauth2.generic.clientSecret]
|
||
label = "Client Secret"
|
||
description = "The OAuth2 client secret from your provider"
|
||
|
||
[provider.oauth2.generic.scopes]
|
||
label = "Scopes"
|
||
description = "Comma-separated OAuth2 scopes"
|
||
|
||
[provider.oauth2.generic.useAsUsername]
|
||
label = "Use as Username"
|
||
description = "Field to use as username"
|
||
|
||
[provider.oauth2.generic.autoCreateUser]
|
||
label = "Auto Create Users"
|
||
description = "Automatically create user accounts on first OAuth2 login"
|
||
|
||
[provider.oauth2.generic.blockRegistration]
|
||
label = "Block Registration"
|
||
description = "Prevent new user registration via OAuth2"
|
||
|
||
[provider.smtp]
|
||
name = "SMTP Mail"
|
||
scope = "Email Notifications"
|
||
|
||
[provider.smtp.enabled]
|
||
label = "Enable Mail"
|
||
description = "Enable email notifications and SMTP functionality"
|
||
|
||
[provider.smtp.host]
|
||
label = "SMTP Host"
|
||
description = "The hostname or IP address of your SMTP server"
|
||
|
||
[provider.smtp.port]
|
||
label = "SMTP Port"
|
||
description = "The port number for SMTP connection (typically 25, 465, or 587)"
|
||
|
||
[provider.smtp.username]
|
||
label = "SMTP Username"
|
||
description = "Username for SMTP authentication"
|
||
|
||
[provider.smtp.password]
|
||
label = "SMTP Password"
|
||
description = "Password for SMTP authentication"
|
||
|
||
[provider.smtp.from]
|
||
label = "From Address"
|
||
description = "The email address to use as the sender"
|
||
|
||
[provider.saml2]
|
||
name = "SAML2"
|
||
scope = "SSO (SAML)"
|
||
|
||
[provider.saml2.enabled]
|
||
label = "Enable SAML2"
|
||
description = "Enable SAML2 authentication (Enterprise only)"
|
||
|
||
[provider.saml2.provider]
|
||
label = "Provider Name"
|
||
description = "The name of your SAML2 provider"
|
||
|
||
[provider.saml2.registrationId]
|
||
label = "Registration ID"
|
||
description = "The name of your Service Provider (SP) app name"
|
||
|
||
[provider.saml2.idpMetadataUri]
|
||
label = "IDP Metadata URI"
|
||
description = "The URI for your provider's metadata"
|
||
|
||
[provider.saml2.idpSingleLoginUrl]
|
||
label = "IDP Single Login URL"
|
||
description = "The URL for initiating SSO"
|
||
|
||
[provider.saml2.idpSingleLogoutUrl]
|
||
label = "IDP Single Logout URL"
|
||
description = "The URL for initiating SLO"
|
||
|
||
[provider.saml2.idpIssuer]
|
||
label = "IDP Issuer"
|
||
description = "The ID of your provider"
|
||
|
||
[provider.saml2.idpCert]
|
||
label = "IDP Certificate"
|
||
description = "The certificate path (e.g., classpath:okta.cert)"
|
||
|
||
[provider.saml2.privateKey]
|
||
label = "Private Key"
|
||
description = "Your private key path"
|
||
|
||
[provider.saml2.spCert]
|
||
label = "SP Certificate"
|
||
description = "Your signing certificate path"
|
||
|
||
[provider.saml2.autoCreateUser]
|
||
label = "Auto Create Users"
|
||
description = "Automatically create user accounts on first SAML2 login"
|
||
|
||
[provider.saml2.blockRegistration]
|
||
label = "Block Registration"
|
||
description = "Prevent new user registration via SAML2"
|
||
|
||
[provider.googledrive]
|
||
name = "Google Drive"
|
||
scope = "File Import"
|
||
|
||
[provider.googledrive.enabled]
|
||
label = "Enable Google Drive File Picker"
|
||
description = "Allow users to import files directly from Google Drive"
|
||
|
||
[provider.googledrive.clientId]
|
||
label = "Client ID"
|
||
description = "Google OAuth 2.0 Client ID from Google Cloud Console"
|
||
|
||
[provider.googledrive.apiKey]
|
||
label = "API Key"
|
||
description = "Google API Key for Google Picker API from Google Cloud Console"
|
||
|
||
[provider.googledrive.appId]
|
||
label = "App ID"
|
||
description = "Google Drive App ID from Google Cloud Console"
|