diff --git a/.github/scripts/sync_translations.py b/.github/scripts/sync_translations.py
index 63a4eefdc..98b413291 100644
--- a/.github/scripts/sync_translations.py
+++ b/.github/scripts/sync_translations.py
@@ -75,6 +75,66 @@ def collect_leaf_paths(obj: Any, base_path: str) -> list[str]:
return [base_path]
+def _prune_empty_parent_stack(
+ stack: list[tuple[JsonDict, str, Any]]
+) -> None:
+ """Remove empty dictionaries along a captured parent stack."""
+
+ child_empty = True
+ for idx in range(len(stack) - 1, -1, -1):
+ parent, key, child = stack[idx]
+ if idx == len(stack) - 1:
+ parent.pop(key, None)
+ child_empty = len(parent) == 0
+ else:
+ if child_empty and isinstance(child, dict) and len(child) == 0:
+ parent.pop(key, None)
+ child_empty = len(parent) == 0
+ else:
+ child_empty = False
+
+ if not child_empty:
+ break
+
+
+def relocate_dotted_reference_keys(ref: Any, target: Any) -> None:
+ """Align target structure with dotted keys defined in the reference."""
+
+ if not (is_mapping(ref) and is_mapping(target)):
+ return
+
+ for key in ref:
+ if "." not in key:
+ continue
+ if key in target:
+ continue
+
+ segments = key.split(".")
+ current = target
+ stack: list[tuple[JsonDict, str, Any]] = []
+ valid_path = True
+
+ for segment in segments:
+ if not (is_mapping(current) and segment in current):
+ valid_path = False
+ break
+ next_current = current[segment]
+ stack.append((current, segment, next_current))
+ current = next_current
+
+ if not valid_path:
+ continue
+
+ target[key] = deepcopy(current)
+ _prune_empty_parent_stack(stack)
+
+ for key, ref_val in ref.items():
+ if "." in key:
+ continue
+ if key in target:
+ relocate_dotted_reference_keys(ref_val, target[key])
+
+
def record_missing_leaf(
path: str, *, stats: MergeStats, ignored_paths: set[str]
) -> None:
@@ -206,7 +266,10 @@ def deep_merge_and_collect(
- Tracks missing keys and how many leaf nodes are missing (for %).
- Optionally prunes extra keys that don't exist in the reference.
"""
- if is_mapping(ref) and is_mapping(target):
+ ref_is_mapping = is_mapping(ref)
+ target_is_mapping = is_mapping(target)
+
+ if ref_is_mapping and target_is_mapping:
merged: JsonDict = {}
# Walk reference keys in order so we keep the same structure/order
@@ -257,10 +320,37 @@ def deep_merge_and_collect(
return merged
+ if ref_is_mapping != target_is_mapping:
+ stats.added += 1
+ stats.missing_leafs += count_leaves(ref)
+ leaf_paths = collect_leaf_paths(ref, path)
+ if leaf_paths:
+ for leaf_path in leaf_paths:
+ record_missing_leaf(
+ leaf_path,
+ stats=stats,
+ ignored_paths=ignored_paths,
+ )
+ else:
+ record_missing_leaf(
+ path,
+ stats=stats,
+ ignored_paths=ignored_paths,
+ )
+ return deepcopy(ref)
+
# Non-dict values → keep existing translation; if it's None, count it as missing
if target is None:
record_missing_leaf(path, stats=stats, ignored_paths=ignored_paths)
- return deepcopy(target if target is not None else ref)
+ return deepcopy(ref)
+
+ if type(target) is not type(ref):
+ stats.added += 1
+ stats.missing_leafs += count_leaves(ref)
+ record_missing_leaf(path, stats=stats, ignored_paths=ignored_paths)
+ return deepcopy(ref)
+
+ return deepcopy(target)
def order_like_reference(ref: Any, obj: Any) -> Any:
diff --git a/frontend/public/locales/de-DE/translation.json b/frontend/public/locales/de-DE/translation.json
index 5525b36d7..44b48c458 100644
--- a/frontend/public/locales/de-DE/translation.json
+++ b/frontend/public/locales/de-DE/translation.json
@@ -797,18 +797,8 @@
"merge": {
"tags": "zusammenführen,seitenvorgänge,back end,serverseitig",
"title": "Zusammenführen",
- "removeDigitalSignature": {
- "tooltip": {
- "description": "Digitale Signaturen werden beim Zusammenführen von Dateien ungültig. Aktivieren Sie diese Option, um sie aus der endgültigen zusammengeführten PDF zu entfernen.",
- "title": "Digitale Signatur entfernen"
- }
- },
- "generateTableOfContents": {
- "tooltip": {
- "description": "Erstellt automatisch ein klickbares Inhaltsverzeichnis in der zusammengeführten PDF basierend auf den ursprünglichen Dateinamen und Seitenzahlen.",
- "title": "Inhaltsverzeichnis generieren"
- }
- },
+ "removeDigitalSignature": "Remove digital signature in the merged file?",
+ "generateTableOfContents": "Generate table of contents in the merged file?",
"removeDigitalSignature.tooltip": {
"title": "Remove Digital Signature",
"description": "Digital signatures will be invalidated when merging files. Check this to remove them from the final merged PDF."
@@ -2506,10 +2496,22 @@
"reset": "Auf vollständiges PDF zurücksetzen",
"coordinates": {
"title": "Position und Größe",
- "x": "X-Position",
- "y": "Y-Position",
- "width": "Breite",
- "height": "Höhe"
+ "x": {
+ "label": "X Position",
+ "desc": "Left edge (points)"
+ },
+ "y": {
+ "label": "Y Position",
+ "desc": "Bottom edge (points)"
+ },
+ "width": {
+ "label": "Width",
+ "desc": "Crop width (points)"
+ },
+ "height": {
+ "label": "Height",
+ "desc": "Crop height (points)"
+ }
},
"error": {
"invalidArea": "Zuschneidebereich überschreitet die PDF-Grenzen",
@@ -3575,29 +3577,17 @@
"options": {
"title": "Bereinigungs-Optionen",
"note": "Wählen Sie die Elemente aus, die Sie aus der PDF entfernen möchten. Mindestens eine Option muss ausgewählt werden.",
- "removeJavaScript": {
- "desc": "JavaScript-Aktionen und Skripte aus der PDF entfernen"
- },
+ "removeJavaScript": "Remove JavaScript",
"removeJavaScript.desc": "Remove JavaScript actions and scripts from the PDF",
- "removeEmbeddedFiles": {
- "desc": "Alle in der PDF eingebetteten Dateien entfernen"
- },
+ "removeEmbeddedFiles": "Remove Embedded Files",
"removeEmbeddedFiles.desc": "Remove any files embedded within the PDF",
- "removeXMPMetadata": {
- "desc": "XMP-Metadaten aus der PDF entfernen"
- },
+ "removeXMPMetadata": "Remove XMP Metadata",
"removeXMPMetadata.desc": "Remove XMP metadata from the PDF",
- "removeMetadata": {
- "desc": "Dokumentinformations-Metadaten (Titel, Autor usw.) entfernen"
- },
+ "removeMetadata": "Remove Document Metadata",
"removeMetadata.desc": "Remove document information metadata (title, author, etc.)",
- "removeLinks": {
- "desc": "Externe Links und Launch-Aktionen aus der PDF entfernen"
- },
+ "removeLinks": "Remove Links",
"removeLinks.desc": "Remove external links and launch actions from the PDF",
- "removeFonts": {
- "desc": "Eingebettete Schriftarten aus der PDF entfernen"
- },
+ "removeFonts": "Remove Fonts",
"removeFonts.desc": "Remove embedded fonts from the PDF"
}
},
diff --git a/frontend/public/locales/en-US/translation.json b/frontend/public/locales/en-US/translation.json
index c92c4c56e..357e65da7 100644
--- a/frontend/public/locales/en-US/translation.json
+++ b/frontend/public/locales/en-US/translation.json
@@ -1,7 +1,4 @@
{
- "language": {
- "direction": "ltr"
- },
"toolPanel": {
"modePrompt": {
"title": "Choose how you browse tools",
@@ -16,9 +13,31 @@
"dismiss": "Maybe later"
},
"fullscreen": {
- "showDetails": "Show Details"
+ "showDetails": "Show Details",
+ "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",
+ "unfavorite": "Remove from favourites"
+ },
+ "placeholder": "Choose a tool to get started",
+ "toggle": {
+ "fullscreen": "Switch to fullscreen mode",
+ "sidebar": "Switch to sidebar mode"
}
},
+ "unsavedChanges": "You have unsaved changes to your PDF.",
+ "areYouSure": "Are you sure you want to leave?",
+ "unsavedChangesTitle": "Unsaved Changes",
+ "keepWorking": "Keep Working",
+ "discardChanges": "Discard & Leave",
+ "applyAndContinue": "Save & Leave",
+ "exportAndContinue": "Export & Continue",
+ "language": {
+ "direction": "ltr"
+ },
"addPageNumbers": {
"fontSize": "Font Size",
"fontName": "Font Name",
@@ -35,8 +54,26 @@
"customTextDesc": "Custom Text",
"numberPagesDesc": "Which pages to number, default 'all', also accepts 1-5 or 2,5,9 etc",
"customNumberDesc": "Defaults to {n}, also accepts 'Page {n} of {total}', 'Text-{n}', '{filename}-{n}",
- "submit": "Add Page Numbers"
+ "submit": "Add Page Numbers",
+ "configuration": "Configuration",
+ "customize": "Customize Appearance",
+ "pagesAndStarting": "Pages & Starting Number",
+ "positionAndPages": "Position & Pages",
+ "error": {
+ "failed": "Add page numbers operation failed"
+ },
+ "results": {
+ "title": "Page Number Results"
+ },
+ "preview": "Position Selection",
+ "previewDisclaimer": "Preview is approximate. Final output may vary due to PDF font metrics."
},
+ "pageSelectionPrompt": "Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :",
+ "startingNumberTooltip": "The first number to display. Subsequent pages will increment from this number.",
+ "marginTooltip": "Distance between the page number and the edge of the page.",
+ "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.",
+ "customTextTooltip": "Optional custom format for page numbers. Use {n} as placeholder for the number. Example: \"Page {n}\" will show \"Page 1\", \"Page 2\", etc.",
"pdfPrompt": "Select PDF(s)",
"multiPdfPrompt": "Select PDFs (2+)",
"multiPdfDropPrompt": "Select (or drag & drop) all PDFs you require",
@@ -47,7 +84,6 @@
"uploadLimitExceededPlural": "are too large. Maximum allowed size is",
"processTimeWarning": "Warning: This process can take up to a minute depending on file-size",
"pageOrderPrompt": "Custom Page Order (Enter a comma-separated list of page numbers or Functions like 2n+1) :",
- "pageSelectionPrompt": "Custom Page Selection (Enter a comma-separated list of page numbers 1,5,6 or Functions like 2n+1) :",
"goToPage": "Go",
"true": "True",
"false": "False",
@@ -58,21 +94,36 @@
"save": "Save",
"saveToBrowser": "Save to Browser",
"download": "Download",
+ "pin": "Pin File (keep active after tool run)",
+ "unpin": "Unpin File (replace after tool run)",
+ "undoOperationTooltip": "Click to undo the last operation and restore the original files",
+ "undo": "Undo",
+ "moreOptions": "More Options",
"editYourNewFiles": "Edit your new file(s)",
"close": "Close",
- "chooseFile": "Choose File",
+ "openInViewer": "Open in Viewer",
+ "confirmClose": "Confirm Close",
+ "confirmCloseMessage": "Are you sure you want to close this file?",
+ "confirmCloseCancel": "Cancel",
+ "confirmCloseConfirm": "Close File",
"fileSelected": "Selected: {{filename}}",
+ "chooseFile": "Choose File",
"filesSelected": "{{count}} files selected",
"files": {
"title": "Files",
- "placeholder": "Select a PDF file in the main view to get started"
+ "upload": "Upload",
+ "uploadFiles": "Upload Files",
+ "addFiles": "Add files",
+ "selectFromWorkbench": "Select files from the workbench or ",
+ "selectMultipleFromWorkbench": "Select at least {{count}} files from the workbench or ",
+ "created": "Created",
+ "size": "File Size"
},
"noFavourites": "No favorites added",
"downloadComplete": "Download Complete",
"bored": "Bored Waiting?",
"alphabet": "Alphabet",
"downloadPdf": "Download PDF",
-
"text": "Text",
"font": "Font",
"selectFillter": "-- Select --",
@@ -88,6 +139,7 @@
"encryptedPdfMustRemovePassword": "This PDF is encrypted or password-protected. Please unlock it before converting to PDF/A.",
"incorrectPasswordProvided": "The PDF password is incorrect or not provided.",
"_value": "Error",
+ "dismissAllErrors": "Dismiss All Errors",
"sorry": "Sorry for the issue!",
"needHelp": "Need help / Found an issue?",
"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:",
@@ -105,6 +157,7 @@
"warning": {
"tooltipTitle": "Warning"
},
+ "edit": "Edit",
"delete": "Delete",
"username": "Username",
"password": "Password",
@@ -116,6 +169,7 @@
"green": "Green",
"blue": "Blue",
"custom": "Custom...",
+ "comingSoon": "Coming soon",
"WorkInProgess": "Work in progress, May not work or be buggy, Please report any problems!",
"poweredBy": "Powered by",
"yes": "Yes",
@@ -156,6 +210,7 @@
"noFileSelected": "No file selected. Please upload one.",
"legal": {
"privacy": "Privacy Policy",
+ "iAgreeToThe": "I agree to all of the",
"terms": "Terms and Conditions",
"accessibility": "Accessibility",
"cookie": "Cookie Policy",
@@ -238,6 +293,40 @@
"cacheInputs": {
"name": "Save form inputs",
"help": "Enable to store previously used inputs for future runs"
+ },
+ "general": {
+ "title": "General",
+ "description": "Configure general application preferences.",
+ "autoUnzip": "Auto-unzip API responses",
+ "autoUnzipDescription": "Automatically extract files from ZIP responses",
+ "autoUnzipTooltip": "Automatically extract ZIP files returned from API operations. Disable to keep ZIP files intact. This does not affect automation workflows.",
+ "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.",
+ "defaultToolPickerMode": "Default tool picker mode",
+ "defaultToolPickerModeDescription": "Choose whether the tool picker opens in fullscreen or sidebar by default",
+ "mode": {
+ "fullscreen": "Fullscreen",
+ "sidebar": "Sidebar"
+ }
+ },
+ "hotkeys": {
+ "title": "Keyboard Shortcuts",
+ "description": "Hover a tool to see its shortcut or customise it below. Click \"Change shortcut\" and press a new key combination. Press Esc to cancel.",
+ "errorModifier": {
+ "mac": "Include ⌘ (Command), ⌥ (Option), or another modifier in your shortcut.",
+ "windows": "Include Ctrl, Alt, or another modifier in your shortcut."
+ },
+ "errorConflict": "Shortcut already used by {{tool}}.",
+ "none": "Not assigned",
+ "customBadge": "Custom",
+ "defaultLabel": "Default: {{shortcut}}",
+ "capturing": "Press keys… (Esc to cancel)",
+ "change": "Change shortcut",
+ "reset": "Reset",
+ "shortcut": "Shortcut",
+ "noShortcut": "No shortcut set",
+ "searchPlaceholder": "Search tools..."
}
},
"changeCreds": {
@@ -386,15 +475,10 @@
"title": "Rotate",
"desc": "Easily rotate your PDFs."
},
- "imageToPDF": {
- "tags": "convert,image,transform",
- "title": "Image to PDF",
- "desc": "Convert a image (PNG, JPEG, GIF) to PDF."
- },
- "pdfToImage": {
- "tags": "convert,image,extract",
- "title": "PDF to Image",
- "desc": "Convert a PDF to a image. (PNG, JPEG, GIF)"
+ "convert": {
+ "tags": "transform,change",
+ "title": "Convert",
+ "desc": "Convert files between different formats"
},
"pdfOrganiser": {
"tags": "organize,rearrange,reorder",
@@ -406,31 +490,16 @@
"title": "Add image",
"desc": "Adds a image onto a set location on the PDF"
},
+ "addAttachments": {
+ "tags": "embed,attach,include",
+ "title": "Add Attachments",
+ "desc": "Add or remove embedded files (attachments) to/from a PDF"
+ },
"watermark": {
"tags": "stamp,mark,overlay",
"title": "Add Watermark",
"desc": "Add a custom watermark to your PDF document."
},
- "permissions": {
- "tags": "permissions,security,access",
- "title": "Change Permissions",
- "desc": "Change the permissions of your PDF document"
- },
- "pageRemover": {
- "tags": "remove,delete,pages",
- "title": "Remove",
- "desc": "Delete unwanted pages from your PDF document."
- },
- "addPassword": {
- "tags": "password,encrypt,secure",
- "title": "Add Password",
- "desc": "Encrypt your PDF document with a password."
- },
- "changePermissions": {
- "tags": "permissions,restrictions,security",
- "title": "Change Permissions",
- "desc": "Change document restrictions and permissions."
- },
"removePassword": {
"tags": "unlock,remove,password",
"title": "Remove Password",
@@ -441,11 +510,6 @@
"title": "Compress",
"desc": "Compress PDFs to reduce their file size."
},
- "sanitize": {
- "tags": "clean,purge,remove",
- "title": "Sanitize",
- "desc": "Remove potentially harmful elements from PDF files."
- },
"unlockPDFForms": {
"tags": "unlock,enable,edit",
"title": "Unlock PDF Forms",
@@ -456,11 +520,6 @@
"title": "Change Metadata",
"desc": "Change/Remove/Add metadata from a PDF document"
},
- "fileToPDF": {
- "tags": "convert,transform,change",
- "title": "Convert file to PDF",
- "desc": "Convert nearly any file to PDF (DOCX, PNG, XLS, PPT, TXT and more)"
- },
"ocr": {
"tags": "extract,scan",
"title": "OCR / Cleanup scans",
@@ -471,40 +530,10 @@
"title": "Extract Images",
"desc": "Extracts all images from a PDF and saves them to zip"
},
- "pdfToPDFA": {
- "tags": "convert,archive,long-term",
- "title": "PDF to PDF/A",
- "desc": "Convert PDF to PDF/A for long-term storage"
- },
- "PDFToWord": {
- "tags": "convert,word,doc",
- "title": "PDF to Word",
- "desc": "Convert PDF to Word formats (DOC, DOCX and ODT)"
- },
- "PDFToPresentation": {
- "tags": "convert,presentation,ppt",
- "title": "PDF to Presentation",
- "desc": "Convert PDF to Presentation formats (PPT, PPTX and ODP)"
- },
- "PDFToText": {
- "tags": "convert,text,rtf",
- "title": "PDF to RTF (Text)",
- "desc": "Convert PDF to Text or RTF format"
- },
- "PDFToHTML": {
- "tags": "convert,html,web",
- "title": "PDF to HTML",
- "desc": "Convert PDF to HTML format"
- },
- "PDFToXML": {
- "tags": "convert,xml,data",
- "title": "PDF to XML",
- "desc": "Convert PDF to XML format"
- },
- "ScannerImageSplit": {
+ "scannerImageSplit": {
"tags": "detect,split,photos",
- "title": "Detect/Split Scanned photos",
- "desc": "Splits multiple photos from within a photo/PDF"
+ "title": "Detect & Split Scanned Photos",
+ "desc": "Detect and split scanned photos into separate pages"
},
"sign": {
"tags": "signature,autograph",
@@ -516,6 +545,11 @@
"title": "Flatten",
"desc": "Remove all interactive elements and forms from a PDF"
},
+ "certSign": {
+ "tags": "authenticate,PEM,P12,official,encrypt,sign,certificate,PKCS12,JKS,server,manual,auto",
+ "title": "Sign with Certificate",
+ "desc": "Signs a PDF with a Certificate/Key (PEM/P12)"
+ },
"repair": {
"tags": "fix,restore",
"title": "Repair",
@@ -536,11 +570,6 @@
"title": "Compare",
"desc": "Compares and shows the differences between 2 PDF Documents"
},
- "certSign": {
- "tags": "authenticate,PEM,P12,official,encrypt,sign,certificate,PKCS12,JKS,server,manual,auto",
- "title": "Sign with Certificate",
- "desc": "Signs a PDF with a Certificate/Key (PEM/P12)"
- },
"removeCertSign": {
"tags": "remove,delete,unlock",
"title": "Remove Certificate Sign",
@@ -561,17 +590,12 @@
"title": "Adjust page size/scale",
"desc": "Change the size/scale of a page and/or its contents."
},
- "pipeline": {
- "tags": "automation,script,workflow",
- "title": "Pipeline",
- "desc": "Run multiple actions on PDFs by defining pipeline scripts"
- },
"addPageNumbers": {
"tags": "number,pagination,count",
"title": "Add Page Numbers",
"desc": "Add Page numbers throughout a document in a set location"
},
- "auto-rename": {
+ "autoRename": {
"tags": "auto-detect,header-based,organize,relabel",
"title": "Auto Rename PDF File",
"desc": "Auto renames a PDF file based on its detected header"
@@ -591,79 +615,37 @@
"title": "Auto Split Pages",
"desc": "Auto Split Scanned PDF with physical scanned page splitter QR Code"
},
- "sanitizePDF": {
+ "sanitize": {
"tags": "clean,purge,remove",
"title": "Sanitize",
- "desc": "Remove scripts and other elements from PDF files"
- },
- "URLToPDF": {
- "tags": "convert,url,website",
- "title": "URL/Website To PDF",
- "desc": "Converts any http(s)URL to PDF"
- },
- "HTMLToPDF": {
- "tags": "convert,html,web",
- "title": "HTML to PDF",
- "desc": "Converts any HTML file or zip to PDF"
- },
- "MarkdownToPDF": {
- "tags": "convert,markdown,md",
- "title": "Markdown to PDF",
- "desc": "Converts any Markdown file to PDF"
- },
- "PDFToMarkdown": {
- "tags": "convert,markdown,md",
- "title": "PDF to Markdown",
- "desc": "Converts any PDF to Markdown"
+ "desc": "Remove potentially harmful elements from PDF files."
},
"getPdfInfo": {
"tags": "info,metadata,details",
"title": "Get ALL Info on PDF",
"desc": "Grabs any and all information possible on PDFs"
},
- "pageExtracter": {
- "title": "Extract page(s)",
- "desc": "Extracts select pages from PDF"
- },
"pdfToSinglePage": {
+ "tags": "combine,merge,single",
"title": "Single Large Page",
"desc": "Merges all PDF pages into one large single page"
},
"showJS": {
+ "tags": "javascript,code,script",
"title": "Show Javascript",
"desc": "Searches and displays any JS injected into a PDF"
},
- "autoRedact": {
- "tags": "auto,redact,censor",
- "title": "Auto Redact",
- "desc": "Auto Redacts(Blacks out) text in a PDF based on input text"
- },
"redact": {
"tags": "censor,blackout,hide",
"title": "Manual Redaction",
"desc": "Redacts a PDF based on selected text, drawn shapes and/or selected page(s)"
},
- "PDFToCSV": {
- "tags": "convert,csv,table",
- "title": "PDF to CSV",
- "desc": "Extracts Tables from a PDF converting it to CSV"
- },
- "split-by-size-or-count": {
- "tags": "auto,split,size",
- "title": "Auto Split by Size/Count",
- "desc": "Split a single PDF into multiple documents based on size, page count, or document count"
- },
- "overlay-pdfs": {
- "tags": "overlay,combine,stack",
- "title": "Overlay PDFs",
- "desc": "Overlays PDFs on-top of another PDF"
- },
- "split-by-sections": {
+ "splitBySections": {
"tags": "split,sections,divide",
"title": "Split PDF by Sections",
"desc": "Divide each page of a PDF into smaller horizontal and vertical sections"
},
- "AddStampRequest": {
+ "addStamp": {
"tags": "stamp,mark,seal",
"title": "Add Stamp to PDF",
"desc": "Add text or add image stamps at set locations"
@@ -688,10 +670,94 @@
"title": "API Documentation",
"desc": "View API documentation and test endpoints"
},
- "replace-color": {
- "tags": "color,replace,invert",
- "title": "Replace and Invert Color",
- "desc": "Replace color for text and background in PDF and invert full color of pdf to reduce file size"
+ "scannerEffect": {
+ "tags": "scan,simulate,create",
+ "title": "Scanner Effect",
+ "desc": "Create a PDF that looks like it was scanned"
+ },
+ "editTableOfContents": {
+ "tags": "bookmarks,contents,edit",
+ "title": "Edit Table of Contents",
+ "desc": "Add or edit bookmarks and table of contents in PDF documents"
+ },
+ "manageCertificates": {
+ "tags": "certificates,import,export",
+ "title": "Manage Certificates",
+ "desc": "Import, export, or delete digital certificate files used for signing PDFs."
+ },
+ "read": {
+ "tags": "view,open,display",
+ "title": "Read",
+ "desc": "View and annotate PDFs. Highlight text, draw, or insert comments for review and collaboration."
+ },
+ "reorganizePages": {
+ "tags": "rearrange,reorder,organize",
+ "title": "Reorganize Pages",
+ "desc": "Rearrange, duplicate, or delete PDF pages with visual drag-and-drop control."
+ },
+ "extractPages": {
+ "tags": "pull,select,copy",
+ "title": "Extract Pages",
+ "desc": "Extract specific pages from a PDF document"
+ },
+ "removePages": {
+ "tags": "delete,extract,exclude",
+ "title": "Remove Pages",
+ "desc": "Remove specific pages from a PDF document"
+ },
+ "autoSizeSplitPDF": {
+ "tags": "auto,split,size",
+ "title": "Auto Split by Size/Count",
+ "desc": "Automatically split PDFs by file size or page count"
+ },
+ "replaceColor": {
+ "title": "Replace & Invert Colour",
+ "desc": "Replace or invert colours in PDF documents"
+ },
+ "devApi": {
+ "tags": "API,development,documentation",
+ "title": "API",
+ "desc": "Link to API documentation"
+ },
+ "devFolderScanning": {
+ "tags": "automation,folder,scanning",
+ "title": "Automated Folder Scanning",
+ "desc": "Link to automated folder scanning guide"
+ },
+ "devSsoGuide": {
+ "title": "SSO Guide",
+ "desc": "Link to SSO guide"
+ },
+ "devAirgapped": {
+ "title": "Air-gapped Setup",
+ "desc": "Link to air-gapped setup guide"
+ },
+ "addPassword": {
+ "title": "Add Password",
+ "desc": "Encrypt your PDF document with a password."
+ },
+ "changePermissions": {
+ "title": "Change Permissions",
+ "desc": "Change document restrictions and permissions."
+ },
+ "automate": {
+ "tags": "workflow,sequence,automation",
+ "title": "Automate",
+ "desc": "Build multi-step workflows by chaining together PDF actions. Ideal for recurring tasks."
+ },
+ "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"
+ },
+ "overlay-pdfs": {
+ "desc": "Overlays PDFs on-top of another PDF",
+ "title": "Overlay PDFs"
}
},
"landing": {
@@ -731,14 +797,31 @@
"merge": {
"tags": "merge,Page operations,Back end,server side",
"title": "Merge",
- "header": "Merge multiple PDFs (2+)",
- "sortByName": "Sort by name",
- "sortByDate": "Sort by date",
- "removeCertSign": "Remove digital signature in the merged file?",
- "submit": "Merge"
+ "removeDigitalSignature": "Remove digital signature in the merged file?",
+ "generateTableOfContents": "Generate table of contents in the merged file?",
+ "removeDigitalSignature.tooltip": {
+ "title": "Remove Digital Signature",
+ "description": "Digital signatures will be invalidated when merging files. Check this to remove them from the final merged PDF."
+ },
+ "generateTableOfContents.tooltip": {
+ "title": "Generate Table of Contents",
+ "description": "Automatically creates a clickable table of contents in the merged PDF based on the original file names and page numbers."
+ },
+ "submit": "Merge",
+ "sortBy": {
+ "description": "Files will be merged in the order they're selected. Drag to reorder or sort below.",
+ "label": "Sort By",
+ "filename": "File Name",
+ "dateModified": "Date Modified",
+ "ascending": "Ascending",
+ "descending": "Descending",
+ "sort": "Sort"
+ },
+ "error": {
+ "failed": "An error occurred while merging the PDFs."
+ }
},
"split": {
- "tags": "Page operations,divide,Multi Page,cut,server side",
"title": "Split PDF",
"header": "Split PDF",
"desc": {
@@ -752,14 +835,247 @@
"8": "Document #6: Page 10"
},
"splitPages": "Enter pages to split on:",
- "submit": "Split"
+ "submit": "Split",
+ "steps": {
+ "chooseMethod": "Choose Method",
+ "settings": "Settings"
+ },
+ "settings": {
+ "selectMethodFirst": "Please select a split method first"
+ },
+ "error": {
+ "failed": "An error occurred while splitting the PDF."
+ },
+ "method": {
+ "label": "Choose split method",
+ "placeholder": "Select how to split the PDF"
+ },
+ "methods": {
+ "prefix": {
+ "splitAt": "Split at",
+ "splitBy": "Split by"
+ },
+ "byPages": {
+ "name": "Page Numbers",
+ "desc": "Extract specific pages (1,3,5-10)",
+ "tooltip": "Enter page numbers separated by commas or ranges with hyphens"
+ },
+ "bySections": {
+ "name": "Sections",
+ "desc": "Divide pages into grid sections",
+ "tooltip": "Split each page into horizontal and vertical sections"
+ },
+ "bySize": {
+ "name": "File Size",
+ "desc": "Limit maximum file size",
+ "tooltip": "Specify maximum file size (e.g. 10MB, 500KB)"
+ },
+ "byPageCount": {
+ "name": "Page Count",
+ "desc": "Fixed pages per file",
+ "tooltip": "Enter the number of pages for each split file"
+ },
+ "byDocCount": {
+ "name": "Document Count",
+ "desc": "Create specific number of files",
+ "tooltip": "Enter how many files you want to create"
+ },
+ "byChapters": {
+ "name": "Chapters",
+ "desc": "Split at bookmark boundaries",
+ "tooltip": "Uses PDF bookmarks to determine split points"
+ },
+ "byPageDivider": {
+ "name": "Page Divider",
+ "desc": "Auto-split with divider sheets",
+ "tooltip": "Use QR code divider sheets between documents when scanning"
+ }
+ },
+ "value": {
+ "fileSize": {
+ "label": "File Size",
+ "placeholder": "e.g. 10MB, 500KB"
+ },
+ "pageCount": {
+ "label": "Pages per File",
+ "placeholder": "e.g. 5, 10"
+ },
+ "docCount": {
+ "label": "Number of Files",
+ "placeholder": "e.g. 3, 5"
+ }
+ },
+ "tooltip": {
+ "header": {
+ "title": "Split Methods Overview"
+ },
+ "byPages": {
+ "title": "Split at Page Numbers",
+ "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.",
+ "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)"
+ },
+ "bySections": {
+ "title": "Split by Grid Sections",
+ "text": "Divide each page into a grid of sections. Useful for splitting documents with multiple columns or extracting specific areas.",
+ "bullet1": "Horizontal: Number of rows to create",
+ "bullet2": "Vertical: Number of columns to create",
+ "bullet3": "Merge: Combine all sections into one PDF"
+ },
+ "bySize": {
+ "title": "Split by File Size",
+ "text": "Create multiple PDFs that don't exceed a specified file size. Ideal for file size limitations or email attachments.",
+ "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"
+ },
+ "byCount": {
+ "title": "Split by Count",
+ "text": "Create multiple PDFs with a specific number of pages or documents each.",
+ "bullet1": "Page Count: Fixed number of pages per file",
+ "bullet2": "Document Count: Fixed number of output files",
+ "bullet3": "Useful for batch processing workflows"
+ },
+ "byChapters": {
+ "title": "Split by Chapters",
+ "text": "Use PDF bookmarks to automatically split at chapter boundaries. Requires PDFs with bookmark structure.",
+ "bullet1": "Bookmark Level: Which level to split on (1=top level)",
+ "bullet2": "Include Metadata: Preserve document properties",
+ "bullet3": "Allow Duplicates: Handle repeated bookmark names"
+ },
+ "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"
+ },
+ "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"
+ },
+ "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"
+ }
+ },
+ "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",
+ "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"
+ },
+ "title": "Choose Your Split Method"
+ }
+ },
+ "selectMethod": "Select a split method"
},
"rotate": {
- "tags": "server side",
"title": "Rotate PDF",
- "header": "Rotate PDF",
- "selectAngle": "Select rotation angle (in multiples of 90 degrees):",
- "submit": "Rotate"
+ "submit": "Rotate",
+ "selectRotation": "Select Rotation Angle (Clockwise)",
+ "error": {
+ "failed": "An error occurred while rotating the PDF."
+ },
+ "preview": {
+ "title": "Rotation Preview"
+ },
+ "rotateLeft": "Rotate Anticlockwise",
+ "rotateRight": "Rotate Clockwise",
+ "tooltip": {
+ "header": {
+ "title": "Rotate Settings Overview"
+ },
+ "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."
+ },
+ "controls": {
+ "title": "Controls",
+ "text": "Use the rotation buttons to adjust orientation. Left button rotates anticlockwise, right button rotates clockwise. Each click rotates by 90 degrees."
+ }
+ }
+ },
+ "convert": {
+ "title": "Convert",
+ "desc": "Convert files between different formats",
+ "files": "Files",
+ "selectFilesPlaceholder": "Select files in the main view to get started",
+ "settings": "Settings",
+ "conversionCompleted": "Conversion completed",
+ "results": "Results",
+ "defaultFilename": "converted_file",
+ "conversionResults": "Conversion Results",
+ "convertFrom": "Convert from",
+ "convertTo": "Convert to",
+ "sourceFormatPlaceholder": "Source format",
+ "targetFormatPlaceholder": "Target format",
+ "selectSourceFormatFirst": "Select a source format first",
+ "outputOptions": "Output Options",
+ "pdfOptions": "PDF Options",
+ "imageOptions": "Image Options",
+ "colorType": "Color Type",
+ "color": "Color",
+ "greyscale": "Greyscale",
+ "blackwhite": "Black & White",
+ "dpi": "DPI",
+ "output": "Output",
+ "single": "Single",
+ "multiple": "Multiple",
+ "fitOption": "Fit Option",
+ "maintainAspectRatio": "Maintain Aspect Ratio",
+ "fitDocumentToPage": "Fit Document to Page",
+ "fillPage": "Fill Page",
+ "autoRotate": "Auto Rotate",
+ "autoRotateDescription": "Automatically rotate images to better fit the PDF page",
+ "combineImages": "Combine Images",
+ "combineImagesDescription": "Combine all images into one PDF, or create separate PDFs for each image",
+ "webOptions": "Web to PDF Options",
+ "zoomLevel": "Zoom Level",
+ "emailOptions": "Email to PDF Options",
+ "includeAttachments": "Include email attachments",
+ "maxAttachmentSize": "Maximum attachment size (MB)",
+ "includeAllRecipients": "Include CC and BCC recipients in header",
+ "downloadHtml": "Download HTML intermediate file instead of PDF",
+ "pdfaOptions": "PDF/A Options",
+ "outputFormat": "Output Format",
+ "pdfaNote": "PDF/A-1b is more compatible, PDF/A-2b supports more features.",
+ "pdfaDigitalSignatureWarning": "The PDF contains a digital signature. This will be removed in the next step.",
+ "fileFormat": "File Format",
+ "wordDoc": "Word Document",
+ "wordDocExt": "Word Document (.docx)",
+ "odtExt": "OpenDocument Text (.odt)",
+ "pptExt": "PowerPoint (.pptx)",
+ "odpExt": "OpenDocument Presentation (.odp)",
+ "txtExt": "Plain Text (.txt)",
+ "rtfExt": "Rich Text Format (.rtf)",
+ "selectedFiles": "Selected files",
+ "noFileSelected": "No file selected. Use the file panel to add files.",
+ "convertFiles": "Convert Files",
+ "converting": "Converting...",
+ "downloadConverted": "Download Converted 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.",
+ "images": "Images",
+ "officeDocs": "Office Documents (Word, Excel, PowerPoint)",
+ "imagesExt": "Images (JPG, PNG, etc.)",
+ "markdown": "Markdown",
+ "textRtf": "Text/RTF",
+ "grayscale": "Greyscale",
+ "errorConversion": "An error occurred while converting the file."
},
"imageToPdf": {
"tags": "conversion,img,jpg,picture,photo"
@@ -797,7 +1113,20 @@
"8": "Remove Last",
"9": "Remove First and Last",
"10": "Odd-Even Merge",
- "11": "Duplicate all pages"
+ "11": "Duplicate all pages",
+ "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)."
+ }
},
"desc": {
"CUSTOM": "Use a custom sequence of page numbers or expressions to define a new order.",
@@ -822,6 +1151,198 @@
"upload": "Add image",
"submit": "Add image"
},
+ "attachments": {
+ "tags": "attachments,add,remove,embed,file",
+ "title": "Add Attachments",
+ "header": "Add Attachments",
+ "add": "Add Attachment",
+ "remove": "Remove Attachment",
+ "embed": "Embed Attachment",
+ "submit": "Add Attachments"
+ },
+ "watermark": {
+ "title": "Add Watermark",
+ "desc": "Add text or image watermarks to PDF files",
+ "completed": "Watermark added",
+ "submit": "Add Watermark",
+ "filenamePrefix": "watermarked",
+ "error": {
+ "failed": "An error occurred while adding watermark to the PDF."
+ },
+ "watermarkType": {
+ "text": "Text",
+ "image": "Image"
+ },
+ "settings": {
+ "type": "Watermark Type",
+ "text": {
+ "label": "Watermark Text",
+ "placeholder": "Enter watermark text"
+ },
+ "image": {
+ "label": "Watermark Image",
+ "choose": "Choose Image",
+ "selected": "Selected: {{filename}}"
+ },
+ "fontSize": "Font Size",
+ "size": "Size",
+ "alphabet": "Font/Language",
+ "color": "Watermark Color",
+ "rotation": "Rotation (degrees)",
+ "opacity": "Opacity (%)",
+ "spacing": {
+ "horizontal": "Horizontal Spacing",
+ "vertical": "Vertical Spacing",
+ "height": "Height Spacing",
+ "width": "Width Spacing"
+ },
+ "convertToImage": "Flatten PDF pages to images"
+ },
+ "alphabet": {
+ "roman": "Roman/Latin",
+ "arabic": "Arabic",
+ "japanese": "Japanese",
+ "korean": "Korean",
+ "chinese": "Chinese",
+ "thai": "Thai"
+ },
+ "steps": {
+ "type": "Watermark Type",
+ "wording": "Wording",
+ "textStyle": "Style",
+ "formatting": "Formatting",
+ "file": "Watermark File"
+ },
+ "results": {
+ "title": "Watermark Results"
+ },
+ "tooltip": {
+ "language": {
+ "title": "Language Support",
+ "text": "Choose the appropriate language setting to ensure proper font rendering for your text."
+ },
+ "appearance": {
+ "title": "Appearance Settings",
+ "text": "Control how your watermark looks and blends with the document.",
+ "bullet1": "Rotation: -360° to 360° for angled watermarks",
+ "bullet2": "Opacity: 0-100% for transparency control",
+ "bullet3": "Lower opacity creates subtle watermarks"
+ },
+ "spacing": {
+ "title": "Spacing Control",
+ "text": "Adjust the spacing between repeated watermarks across the page.",
+ "bullet1": "Width spacing: Horizontal distance between watermarks",
+ "bullet2": "Height spacing: Vertical distance between watermarks",
+ "bullet3": "Higher values create more spread out patterns"
+ },
+ "type": {
+ "header": {
+ "title": "Watermark Type Selection"
+ },
+ "description": {
+ "title": "Choose Your Watermark",
+ "text": "Select between text or image watermarks based on your needs."
+ },
+ "text": {
+ "title": "Text Watermarks",
+ "text": "Perfect for adding copyright notices, company names, or confidentiality labels. Supports multiple languages and custom colors.",
+ "bullet1": "Customizable fonts and languages",
+ "bullet2": "Adjustable colors and transparency",
+ "bullet3": "Ideal for legal or branding text"
+ },
+ "image": {
+ "title": "Image Watermarks",
+ "text": "Use logos, stamps, or any image as a watermark. Great for branding and visual identification.",
+ "bullet1": "Upload any image format",
+ "bullet2": "Maintains image quality",
+ "bullet3": "Perfect for logos and stamps"
+ }
+ },
+ "wording": {
+ "header": {
+ "title": "Text Content"
+ },
+ "text": {
+ "title": "Watermark Text",
+ "text": "Enter the text that will appear as your watermark across the document.",
+ "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"
+ }
+ },
+ "textStyle": {
+ "header": {
+ "title": "Text Style"
+ },
+ "color": {
+ "title": "Color Selection",
+ "text": "Choose a color that provides good contrast with your document content.",
+ "bullet1": "Light gray (#d3d3d3) for subtle watermarks",
+ "bullet2": "Black or dark colors for high contrast",
+ "bullet3": "Custom colors for branding purposes"
+ },
+ "language": {
+ "title": "Language Support",
+ "text": "Choose the appropriate language setting to ensure proper font rendering."
+ }
+ },
+ "file": {
+ "header": {
+ "title": "Image Upload"
+ },
+ "upload": {
+ "title": "Image Selection",
+ "text": "Upload an image file to use as your watermark.",
+ "bullet1": "Supports common formats: PNG, JPG, GIF, BMP",
+ "bullet2": "PNG with transparency works best",
+ "bullet3": "Higher resolution images maintain quality better"
+ },
+ "recommendations": {
+ "title": "Best Practices",
+ "text": "Tips for optimal image watermark results.",
+ "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"
+ }
+ },
+ "formatting": {
+ "header": {
+ "title": "Formatting & Layout"
+ },
+ "size": {
+ "title": "Size Control",
+ "text": "Adjust the size of your watermark (text or image).",
+ "bullet1": "Larger sizes create more prominent watermarks"
+ },
+ "appearance": {
+ "title": "Appearance Settings",
+ "text": "Control how your watermark looks and blends with the document.",
+ "bullet1": "Rotation: -360° to 360° for angled watermarks",
+ "bullet2": "Opacity: 0-100% for transparency control",
+ "bullet3": "Lower opacity creates subtle watermarks"
+ },
+ "spacing": {
+ "title": "Spacing Control",
+ "text": "Adjust the spacing between repeated watermarks across the page.",
+ "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"
+ },
+ "security": {
+ "title": "Security Option",
+ "text": "Flatten PDF pages to images for enhanced 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"
+ }
+ }
+ },
+ "type": {
+ "1": "Text",
+ "2": "Image"
+ }
+ },
"permissions": {
"tags": "read,write,edit,print",
"title": "Change Permissions",
@@ -906,30 +1427,7 @@
"bullet3": "All pages: all"
},
"advanced": {
- "title": "Advanced Features",
- "expandText": "▶ Show advanced options",
- "collapseText": "▼ Hide advanced options",
- "mathematical": {
- "title": "Mathematical Functions",
- "text": "Use mathematical expressions to select page patterns:",
- "bullet1": "2n - all even pages (2, 4, 6, 8...)",
- "bullet2": "2n+1 - all odd pages (1, 3, 5, 7...)",
- "bullet3": "3n - every 3rd page (3, 6, 9, 12...)",
- "bullet4": "4n-1 - pages 3, 7, 11, 15..."
- },
- "ranges": {
- "title": "Open-ended Ranges",
- "text": "Select from a starting point to the end:",
- "bullet1": "5- selects pages 5 to end of document",
- "bullet2": "10- selects pages 10 to end"
- },
- "combinations": {
- "title": "Complex Combinations",
- "text": "Combine different selection methods:",
- "bullet1": "1,3-5,8,2n - pages 1, 3-5, 8, and all even pages",
- "bullet2": "10-,2n+1 - pages 10 to end plus all odd pages",
- "bullet3": "1-5,15-,3n - pages 1-5, 15 to end, and every 3rd page"
- }
+ "title": "Advanced Features"
},
"tips": {
"title": "Tips",
@@ -954,11 +1452,47 @@
"comma": "Comma: , or | — combine selections (e.g., 1-10, 20)",
"not": "NOT: ! or \"not\" — exclude pages (e.g., 3n & not 30)"
},
- "examples": { "title": "Examples" }
+ "examples": {
+ "title": "Examples"
+ },
+ "complex": {
+ "bullet1": "1,3-5,8,2n → pages 1, 3–5, 8, plus evens",
+ "bullet2": "10-,2n-1 → from page 10 to end + odd pages",
+ "description": "Mix different types.",
+ "title": "Complex Combinations"
+ },
+ "description": "Choose which pages to use for the operation. Supports single pages, ranges, formulas, and the all keyword.",
+ "individual": {
+ "bullet1": "1,3,5 → selects pages 1, 3, 5",
+ "bullet2": "2,7,12 → selects pages 2, 7, 12",
+ "description": "Enter numbers separated by commas.",
+ "title": "Individual Pages"
+ },
+ "mathematical": {
+ "bullet1": "2n → all even pages (2, 4, 6…)",
+ "bullet2": "2n-1 → all odd pages (1, 3, 5…)",
+ "bullet3": "3n → every 3rd page (3, 6, 9…)",
+ "bullet4": "4n-1 → pages 3, 7, 11, 15…",
+ "description": "Use n in formulas for patterns.",
+ "title": "Mathematical Functions"
+ },
+ "ranges": {
+ "bullet1": "3-6 → selects pages 3–6",
+ "bullet2": "10-15 → selects pages 10–15",
+ "bullet3": "5- → selects pages 5 to end",
+ "description": "Use - for consecutive pages.",
+ "title": "Page Ranges"
+ },
+ "special": {
+ "bullet1": "all → selects all pages",
+ "title": "Special Keywords"
+ }
}
},
"bulkSelection": {
- "header": { "title": "Page Selection Guide" },
+ "header": {
+ "title": "Page Selection Guide"
+ },
"syntax": {
"title": "Syntax Basics",
"text": "Use numbers, ranges, keywords, and progressions (n starts at 0). Parentheses are supported.",
@@ -1028,25 +1562,127 @@
}
},
"changeMetadata": {
- "tags": "Title,author,date,creation,time,publisher,producer,stats",
- "title": "Title:",
"header": "Change Metadata",
- "selectText": {
- "1": "Please edit the variables you wish to change",
- "2": "Delete all metadata",
- "3": "Show Custom Metadata:",
- "4": "Other Metadata:",
- "5": "Add Custom Metadata Entry"
+ "submit": "Change",
+ "filenamePrefix": "metadata",
+ "settings": {
+ "title": "Metadata Settings"
},
- "author": "Author:",
- "creationDate": "Creation Date (yyyy/MM/dd HH:mm:ss):",
- "creator": "Creator:",
- "keywords": "Keywords:",
- "modDate": "Modification Date (yyyy/MM/dd HH:mm:ss):",
- "producer": "Producer:",
- "subject": "Subject:",
- "trapped": "Trapped:",
- "submit": "Change"
+ "standardFields": {
+ "title": "Standard Fields"
+ },
+ "deleteAll": {
+ "label": "Remove Existing Metadata",
+ "checkbox": "Delete all metadata"
+ },
+ "title": {
+ "label": "Title",
+ "placeholder": "Document title"
+ },
+ "author": {
+ "label": "Author",
+ "placeholder": "Document author"
+ },
+ "subject": {
+ "label": "Subject",
+ "placeholder": "Document subject"
+ },
+ "keywords": {
+ "label": "Keywords",
+ "placeholder": "Document keywords"
+ },
+ "creator": {
+ "label": "Creator",
+ "placeholder": "Document creator"
+ },
+ "producer": {
+ "label": "Producer",
+ "placeholder": "Document producer"
+ },
+ "dates": {
+ "title": "Date Fields"
+ },
+ "creationDate": {
+ "label": "Creation Date",
+ "placeholder": "Creation date"
+ },
+ "modificationDate": {
+ "label": "Modification Date",
+ "placeholder": "Modification date"
+ },
+ "trapped": {
+ "label": "Trapped Status",
+ "unknown": "Unknown",
+ "true": "True",
+ "false": "False"
+ },
+ "advanced": {
+ "title": "Advanced Options"
+ },
+ "customFields": {
+ "title": "Custom Metadata",
+ "description": "Add custom metadata fields to the document",
+ "add": "Add Field",
+ "key": "Key",
+ "keyPlaceholder": "Custom key",
+ "value": "Value",
+ "valuePlaceholder": "Custom value",
+ "remove": "Remove"
+ },
+ "results": {
+ "title": "Updated PDFs"
+ },
+ "error": {
+ "failed": "An error occurred while changing the PDF metadata."
+ },
+ "tooltip": {
+ "header": {
+ "title": "PDF Metadata Overview"
+ },
+ "standardFields": {
+ "title": "Standard Fields",
+ "text": "Common PDF metadata fields that describe the document.",
+ "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"
+ },
+ "dates": {
+ "title": "Date Fields",
+ "text": "When the document was created and modified.",
+ "bullet1": "Creation Date: When original document was made",
+ "bullet2": "Modification Date: When last changed"
+ },
+ "options": {
+ "title": "Additional Options",
+ "text": "Custom fields and privacy controls.",
+ "bullet1": "Custom Metadata: Add your own key-value pairs",
+ "bullet2": "Trapped Status: High-quality printing setting",
+ "bullet3": "Delete All: Remove all metadata for privacy"
+ },
+ "deleteAll": {
+ "title": "Remove Existing Metadata",
+ "text": "Complete metadata deletion to ensure privacy."
+ },
+ "customFields": {
+ "title": "Custom Metadata",
+ "text": "Add your own custom key-value metadata pairs.",
+ "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"
+ },
+ "advanced": {
+ "title": "Advanced Options",
+ "trapped": {
+ "title": "Trapped Status",
+ "description": "Indicates if document is prepared for high-quality printing.",
+ "bullet1": "True: Document has been trapped for printing",
+ "bullet2": "False: Document has not been trapped",
+ "bullet3": "Unknown: Trapped status is not specified"
+ }
+ }
+ }
},
"fileToPDF": {
"tags": "transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint",
@@ -1078,7 +1714,91 @@
},
"help": "Please read this documentation on how to use this for other languages and/or use not in docker",
"credit": "This service uses qpdf and Tesseract for OCR.",
- "submit": "Process PDF with OCR"
+ "submit": "Process PDF with OCR",
+ "operation": {
+ "submit": "Process OCR and Review"
+ },
+ "results": {
+ "title": "OCR Results"
+ },
+ "languagePicker": {
+ "additionalLanguages": "Looking for additional languages?",
+ "viewSetupGuide": "View setup guide →"
+ },
+ "settings": {
+ "title": "Settings",
+ "ocrMode": {
+ "label": "OCR Mode",
+ "auto": "Auto (skip text layers)",
+ "force": "Force (re-OCR all, replace text)",
+ "strict": "Strict (abort if text found)"
+ },
+ "languages": {
+ "label": "Languages",
+ "placeholder": "Select languages"
+ },
+ "compatibilityMode": {
+ "label": "Compatibility Mode"
+ },
+ "advancedOptions": {
+ "label": "Processing Options",
+ "sidecar": "Create a text file",
+ "deskew": "Deskew pages",
+ "clean": "Clean input file",
+ "cleanFinal": "Clean final output"
+ }
+ },
+ "tooltip": {
+ "header": {
+ "title": "OCR Settings Overview"
+ },
+ "mode": {
+ "title": "OCR Mode",
+ "text": "Optical Character Recognition (OCR) helps you turn scanned or screenshotted pages into text you can search, copy, or highlight.",
+ "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."
+ },
+ "languages": {
+ "title": "Languages",
+ "text": "Improve OCR accuracy by specifying the expected languages. Choose one or more languages to guide detection."
+ },
+ "output": {
+ "title": "Output",
+ "text": "Decide how you want the text output formatted:",
+ "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."
+ },
+ "advanced": {
+ "header": {
+ "title": "Advanced OCR Processing"
+ },
+ "compatibility": {
+ "title": "Compatibility Mode",
+ "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."
+ },
+ "sidecar": {
+ "title": "Create Text File",
+ "text": "Generates a separate .txt file alongside the PDF containing all extracted text content for easy access and processing."
+ },
+ "deskew": {
+ "title": "Deskew Pages",
+ "text": "Automatically corrects skewed or tilted pages to improve OCR accuracy. Useful for scanned documents that weren't perfectly aligned."
+ },
+ "clean": {
+ "title": "Clean Input File",
+ "text": "Preprocesses the input by removing noise, enhancing contrast, and optimising the image for better OCR recognition before processing."
+ },
+ "cleanFinal": {
+ "title": "Clean Final Output",
+ "text": "Post-processes the final PDF by removing OCR artefacts and optimising the text layer for better readability and smaller file size."
+ }
+ }
+ },
+ "error": {
+ "failed": "OCR operation failed"
+ }
},
"extractImages": {
"tags": "picture,photo,save,archive,zip,capture,grab",
@@ -1164,16 +1884,53 @@
},
"info": "Python is not installed. It is required to run."
},
+ "scannerImageSplit": {
+ "title": "Extracted Images",
+ "submit": "Extract Image Scans",
+ "error": {
+ "failed": "An error occurred while extracting image scans."
+ },
+ "tooltip": {
+ "title": "Photo Splitter",
+ "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",
+ "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",
+ "quickFixes": "Quick fixes",
+ "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",
+ "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",
+ "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."
+ }
+ },
"sign": {
"title": "Sign",
"header": "Sign PDFs",
"upload": "Upload Image",
- "draw": "Draw Signature",
- "text": "Text Input",
+ "draw": {
+ "title": "Draw your signature",
+ "clear": "Clear"
+ },
+ "text": {
+ "name": "Signer Name",
+ "placeholder": "Enter your full name"
+ },
"clear": "Clear",
"add": "Add",
"saved": "Saved Signatures",
"save": "Save Signature",
+ "applySignatures": "Apply Signatures",
"personalSigs": "Personal Signatures",
"sharedSigs": "Shared Signatures",
"noSavedSigs": "No saved signatures found",
@@ -1185,14 +1942,89 @@
"previous": "Previous page",
"maintainRatio": "Toggle maintain aspect ratio",
"undo": "Undo",
- "redo": "Redo"
+ "redo": "Redo",
+ "submit": "Sign Document",
+ "steps": {
+ "configure": "Configure Signature"
+ },
+ "type": {
+ "title": "Signature Type",
+ "draw": "Draw",
+ "canvas": "Canvas",
+ "image": "Image",
+ "text": "Text"
+ },
+ "image": {
+ "label": "Upload signature image",
+ "placeholder": "Select image file",
+ "hint": "Upload a PNG or JPG image of your signature"
+ },
+ "instructions": {
+ "title": "How to add signature",
+ "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.",
+ "text": "After entering your name above, click anywhere on the PDF to place your signature."
+ },
+ "mode": {
+ "move": "Move Signature",
+ "place": "Place Signature"
+ },
+ "updateAndPlace": "Update and Place",
+ "activate": "Activate Signature Placement",
+ "deactivate": "Stop Placing Signatures",
+ "results": {
+ "title": "Signature Results"
+ },
+ "error": {
+ "failed": "An error occurred while signing the PDF."
+ }
},
"flatten": {
- "tags": "static,deactivate,non-interactive,streamline",
"title": "Flatten",
"header": "Flatten PDFs",
"flattenOnlyForms": "Flatten only forms",
- "submit": "Flatten"
+ "submit": "Flatten",
+ "filenamePrefix": "flattened",
+ "files": {
+ "placeholder": "Select a PDF file in the main view to get started"
+ },
+ "steps": {
+ "settings": "Settings"
+ },
+ "options": {
+ "stepTitle": "Flatten Options",
+ "title": "Flatten Options",
+ "flattenOnlyForms": "Flatten only forms",
+ "flattenOnlyForms.desc": "Only flatten form fields, leaving other interactive elements intact",
+ "note": "Flattening removes interactive elements from the PDF, making them non-editable."
+ },
+ "results": {
+ "title": "Flatten Results"
+ },
+ "error": {
+ "failed": "An error occurred while flattening the PDF."
+ },
+ "tooltip": {
+ "header": {
+ "title": "About Flattening PDFs"
+ },
+ "description": {
+ "title": "What does flattening do?",
+ "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.",
+ "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"
+ },
+ "formsOnly": {
+ "title": "What does 'Flatten only forms' mean?",
+ "text": "This option only removes the ability to fill in forms, but keeps other features working like clicking links, viewing bookmarks, and reading comments.",
+ "bullet1": "Forms become non-editable",
+ "bullet2": "Links still work when clicked",
+ "bullet3": "Comments and notes remain visible",
+ "bullet4": "Bookmarks still help you navigate"
+ }
+ }
},
"repair": {
"tags": "fix,restore,correction,recover",
@@ -1212,7 +2044,6 @@
}
},
"removeBlanks": {
- "tags": "cleanup,streamline,non-content,organize",
"title": "Remove Blanks",
"header": "Remove Blank Pages",
"settings": {
@@ -1254,7 +2085,13 @@
"bullet3": "Can be disabled to reduce output file size"
}
},
- "submit": "Remove blank pages"
+ "submit": "Remove blank pages",
+ "error": {
+ "failed": "Failed to remove blank pages"
+ },
+ "results": {
+ "title": "Removed Blank Pages"
+ }
},
"removeAnnotations": {
"tags": "comments,highlight,notes,markup,remove",
@@ -1302,21 +2139,142 @@
"certSign": {
"tags": "authenticate,PEM,P12,official,encrypt",
"title": "Certificate Signing",
- "header": "Sign a PDF with your certificate (Work in progress)",
- "selectPDF": "Select a PDF File for Signing:",
- "jksNote": "Note: If your certificate type is not listed below, please convert it to a Java Keystore (.jks) file using the keytool command line tool. Then, choose the .jks file option below.",
- "selectKey": "Select Your Private Key File (PKCS#8 format, could be .pem or .der):",
- "selectCert": "Select Your Certificate File (X.509 format, could be .pem or .der):",
- "selectP12": "Select Your PKCS#12 Keystore File (.p12 or .pfx) (Optional, If provided, it should contain your private key and certificate):",
- "selectJKS": "Select Your Java Keystore File (.jks or .keystore):",
- "certType": "Certificate Type",
- "password": "Enter Your Keystore or Private Key Password (If Any):",
- "showSig": "Show Signature",
- "reason": "Reason",
+ "filenamePrefix": "signed",
+ "signMode": {
+ "stepTitle": "Sign Mode",
+ "tooltip": {
+ "header": {
+ "title": "About PDF Signatures"
+ },
+ "overview": {
+ "title": "How signatures work",
+ "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."
+ },
+ "manual": {
+ "title": "Manual - Bring your certificate",
+ "text": "Use your own certificate files for brand-aligned identity. Can display Trusted when your CA/chain is recognised.",
+ "use": "Use for: customer-facing, legal, compliance."
+ },
+ "auto": {
+ "title": "Auto - Zero-setup, instant system seal",
+ "text": "Signs with a server self-signed certificate. Same tamper-evident seal and audit trail; typically shows Unverified in viewers.",
+ "use": "Use when: you need speed and consistent internal identity across reviews and records."
+ },
+ "rule": {
+ "title": "Rule of thumb",
+ "text": "Need recipient Trusted status? Manual. Need a fast, tamper-evident seal and audit trail with no setup? Auto."
+ }
+ }
+ },
+ "certTypeStep": {
+ "stepTitle": "Certificate Format"
+ },
+ "certFiles": {
+ "stepTitle": "Certificate Files"
+ },
+ "appearance": {
+ "stepTitle": "Signature Appearance",
+ "tooltip": {
+ "header": {
+ "title": "About Signature Appearance"
+ },
+ "invisible": {
+ "title": "Invisible Signatures",
+ "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.",
+ "bullet1": "Provides security without visual changes",
+ "bullet2": "Meets legal requirements for digital signing",
+ "bullet3": "Doesn't affect document layout or design"
+ },
+ "visible": {
+ "title": "Visible Signatures",
+ "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.",
+ "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"
+ }
+ },
+ "invisible": "Invisible",
+ "options": {
+ "title": "Signature Details"
+ },
+ "visible": "Visible"
+ },
+ "sign": {
+ "submit": "Sign PDF",
+ "results": "Signed PDF"
+ },
+ "error": {
+ "failed": "An error occurred whilst processing signatures."
+ },
+ "tooltip": {
+ "header": {
+ "title": "About Managing Signatures"
+ },
+ "overview": {
+ "title": "What can this tool do?",
+ "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.",
+ "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"
+ },
+ "validation": {
+ "title": "Checking Signatures",
+ "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.",
+ "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"
+ },
+ "signing": {
+ "title": "Adding Signatures",
+ "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.",
+ "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"
+ }
+ },
+ "certType": {
+ "tooltip": {
+ "header": {
+ "title": "About Certificate Types"
+ },
+ "what": {
+ "title": "What's a certificate?",
+ "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."
+ },
+ "which": {
+ "title": "Which option should I use?",
+ "text": "Choose the format that matches your certificate file:",
+ "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"
+ },
+ "convert": {
+ "title": "Key not listed?",
+ "text": "Convert your file to a Java keystore (.jks) with keytool, then pick JKS."
+ }
+ }
+ },
+ "chooseCertificate": "Choose Certificate File",
+ "chooseJksFile": "Choose JKS File",
+ "chooseP12File": "Choose PKCS12 File",
+ "choosePfxFile": "Choose PFX File",
+ "choosePrivateKey": "Choose Private Key File",
"location": "Location",
+ "logoTitle": "Logo",
"name": "Name",
- "showLogo": "Show Logo",
- "submit": "Sign PDF"
+ "noLogo": "No Logo",
+ "pageNumber": "Page Number",
+ "password": "Enter Your Keystore or Private Key Password (If Any):",
+ "passwordOptional": "Leave empty if no password",
+ "reason": "Reason",
+ "serverCertMessage": "Using server certificate - no files or password required",
+ "showLogo": "Show Logo"
},
"removeCertSign": {
"tags": "authenticate,PEM,P12,official,decrypt",
@@ -1342,21 +2300,112 @@
"header": "Multi Page Layout",
"pagesPerSheet": "Pages per sheet:",
"addBorder": "Add Borders",
- "submit": "Submit"
+ "submit": "Submit",
+ "desc": {
+ "2": "Place 2 pages side-by-side on a single sheet.",
+ "3": "Place 3 pages on a single sheet in a single row.",
+ "4": "Place 4 pages on a single sheet (2 × 2 grid).",
+ "9": "Place 9 pages on a single sheet (3 × 3 grid).",
+ "16": "Place 16 pages on a single sheet (4 × 4 grid)."
+ },
+ "error": {
+ "failed": "An error occurred while creating the multi-page layout."
+ }
},
"bookletImposition": {
"tags": "booklet,imposition,printing,binding,folding,signature",
"title": "Booklet Imposition",
"header": "Booklet Imposition",
"submit": "Create Booklet",
- "files": {
+ "spineLocation": {
+ "label": "Spine Location",
+ "left": "Left (Standard)",
+ "right": "Right (RTL)"
+ },
+ "doubleSided": {
+ "label": "Double-sided printing",
+ "tooltip": "Creates both front and back sides for proper booklet printing"
+ },
+ "manualDuplex": {
+ "title": "Manual Duplex Mode",
+ "instructions": "For printers without automatic duplex. You'll need to run this twice:"
+ },
+ "duplexPass": {
+ "label": "Print Pass",
+ "first": "1st Pass",
+ "second": "2nd Pass",
+ "firstInstructions": "Prints front sides → stack face-down → run again with 2nd Pass",
+ "secondInstructions": "Load printed stack face-down → prints back sides"
+ },
+ "rtlBinding": {
+ "label": "Right-to-left binding",
+ "tooltip": "For Arabic, Hebrew, or other right-to-left languages"
+ },
+ "addBorder": {
+ "label": "Add borders around pages",
+ "tooltip": "Adds borders around each page section to help with cutting and alignment"
+ },
+ "addGutter": {
+ "label": "Add gutter margin",
+ "tooltip": "Adds inner margin space for binding"
+ },
+ "gutterSize": {
+ "label": "Gutter size (points)"
+ },
+ "flipOnShortEdge": {
+ "label": "Flip on short edge (automatic duplex only)",
+ "tooltip": "Enable for short-edge duplex printing (automatic duplex only - ignored in manual mode)",
+ "manualNote": "Not needed in manual mode - you flip the stack yourself"
+ },
+ "advanced": {
+ "toggle": "Advanced Options"
+ },
+ "paperSizeNote": "Paper size is automatically derived from your first page.",
+ "tooltip": {
+ "header": {
+ "title": "Booklet Creation Guide"
+ },
+ "description": {
+ "title": "What is Booklet Imposition?",
+ "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."
+ },
+ "example": {
+ "title": "Example: 8-Page Booklet",
+ "text": "Your 8-page document becomes 2 sheets:",
+ "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"
+ },
+ "printing": {
+ "title": "How to Print & Assemble",
+ "text": "Follow these steps for perfect booklets:",
+ "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"
+ },
+ "manualDuplex": {
+ "title": "Manual Duplex (Single-sided Printers)",
+ "text": "For printers without automatic duplex:",
+ "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"
+ },
+ "advanced": {
+ "title": "Advanced Options",
+ "text": "Fine-tune your booklet:",
+ "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"
+ }
},
"error": {
"failed": "An error occurred while creating the booklet imposition."
}
},
"scalePages": {
- "tags": "resize,modify,dimension,adapt",
"title": "Adjust page-scale",
"header": "Adjust page-scale",
"pageSize": "Size of a page of the document.",
@@ -1364,6 +2413,44 @@
"scaleFactor": "Zoom level (crop) of a page.",
"submit": "Submit"
},
+ "adjustPageScale": {
+ "tags": "resize,modify,dimension,adapt",
+ "title": "Adjust Page Scale",
+ "header": "Adjust Page Scale",
+ "scaleFactor": {
+ "label": "Scale Factor"
+ },
+ "pageSize": {
+ "label": "Target Page Size",
+ "keep": "Keep Original Size",
+ "letter": "Letter",
+ "legal": "Legal"
+ },
+ "submit": "Adjust Page Scale",
+ "error": {
+ "failed": "An error occurred while adjusting the page scale."
+ },
+ "tooltip": {
+ "header": {
+ "title": "Page Scale Settings Overview"
+ },
+ "description": {
+ "title": "Description",
+ "text": "Adjust the size of PDF content and change the page dimensions."
+ },
+ "scaleFactor": {
+ "title": "Scale Factor",
+ "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.",
+ "bullet1": "1.0 = Original size",
+ "bullet2": "0.5 = Half size (50% smaller)",
+ "bullet3": "2.0 = Double size (200% larger, may crop)"
+ },
+ "pageSize": {
+ "title": "Target Page Size",
+ "text": "Sets the dimensions of the output PDF pages. 'Keep Original Size' maintains current dimensions, whilst other options resize to standard paper sizes."
+ }
+ }
+ },
"add-page-numbers": {
"tags": "paginate,label,organize,index"
},
@@ -1371,6 +2458,7 @@
"tags": "auto-detect,header-based,organize,relabel",
"title": "Auto Rename",
"header": "Auto Rename PDF",
+ "description": "Automatically finds the title from your PDF content and uses it as the filename.",
"submit": "Auto Rename",
"files": {
"placeholder": "Select a PDF file in the main view to get started"
@@ -1398,10 +2486,54 @@
"tags": "color-correction,tune,modify,enhance"
},
"crop": {
- "tags": "trim,shrink,edit,shape",
"title": "Crop",
"header": "Crop PDF",
- "submit": "Submit"
+ "submit": "Submit",
+ "noFileSelected": "Select a PDF file to begin cropping",
+ "preview": {
+ "title": "Crop Area Selection"
+ },
+ "reset": "Reset to full PDF",
+ "coordinates": {
+ "title": "Position and Size",
+ "x": {
+ "label": "X Position",
+ "desc": "Left edge (points)"
+ },
+ "y": {
+ "label": "Y Position",
+ "desc": "Bottom edge (points)"
+ },
+ "width": {
+ "label": "Width",
+ "desc": "Crop width (points)"
+ },
+ "height": {
+ "label": "Height",
+ "desc": "Crop height (points)"
+ }
+ },
+ "error": {
+ "invalidArea": "Crop area extends beyond PDF boundaries",
+ "failed": "Failed to crop PDF"
+ },
+ "steps": {
+ "selectArea": "Select Crop Area"
+ },
+ "tooltip": {
+ "title": "How to Crop PDFs",
+ "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",
+ "resize": "Drag the corner and edge handles to resize",
+ "precision": "Use coordinate inputs for precise positioning"
+ },
+ "results": {
+ "title": "Crop Results"
+ },
+ "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."
+ }
},
"autoSplitPDF": {
"tags": "QR-based,separate,scan-segment,organize",
@@ -1484,50 +2616,123 @@
"downloadJS": "Download Javascript",
"submit": "Show"
},
- "autoRedact": {
- "tags": "Redact,Hide,black out,black,marker,hidden",
- "title": "Auto Redact",
- "header": "Auto Redact",
- "colorLabel": "Color",
- "textsToRedactLabel": "Text to Redact (line-separated)",
- "textsToRedactPlaceholder": "e.g. \\nConfidential \\nTop-Secret",
- "useRegexLabel": "Use Regex",
- "wholeWordSearchLabel": "Whole Word Search",
- "customPaddingLabel": "Custom Extra Padding",
- "convertPDFToImageLabel": "Convert PDF to PDF-Image (Used to remove text behind the box)",
- "submitButton": "Submit"
- },
"redact": {
"tags": "Redact,Hide,black out,black,marker,hidden,manual",
"title": "Manual Redaction",
- "header": "Manual Redaction",
"submit": "Redact",
- "textBasedRedaction": "Text based Redaction",
- "pageBasedRedaction": "Page-based Redaction",
- "convertPDFToImageLabel": "Convert PDF to PDF-Image (Used to remove text behind the box)",
- "pageRedactionNumbers": {
- "title": "Pages",
- "placeholder": "(e.g. 1,2,8 or 4,7,12-16 or 2n-1)"
+ "error": {
+ "failed": "An error occurred while redacting the PDF."
},
- "redactionColor": {
- "title": "Redaction Color"
+ "modeSelector": {
+ "title": "Redaction Method",
+ "mode": "Mode",
+ "automatic": "Automatic",
+ "automaticDesc": "Redact text based on search terms",
+ "manual": "Manual",
+ "manualDesc": "Click and drag to redact specific areas",
+ "manualComingSoon": "Manual redaction coming soon"
},
- "export": "Export",
- "upload": "Upload",
- "boxRedaction": "Box draw redaction",
- "zoom": "Zoom",
- "zoomIn": "Zoom in",
- "zoomOut": "Zoom out",
- "nextPage": "Next Page",
- "previousPage": "Previous Page",
- "toggleSidebar": "Toggle Sidebar",
- "showThumbnails": "Show Thumbnails",
- "showDocumentOutline": "Show Document Outline (double-click to expand/collapse all items)",
- "showAttatchments": "Show Attachments",
- "showLayers": "Show Layers (double-click to reset all layers to the default state)",
- "colourPicker": "Colour Picker",
- "findCurrentOutlineItem": "Find current outline item",
- "applyChanges": "Apply Changes"
+ "auto": {
+ "header": "Auto Redact",
+ "settings": {
+ "title": "Redaction Settings",
+ "advancedTitle": "Advanced"
+ },
+ "colorLabel": "Box Colour",
+ "wordsToRedact": {
+ "title": "Words to Redact",
+ "placeholder": "Enter a word",
+ "add": "Add",
+ "examples": "Examples: Confidential, Top-Secret"
+ },
+ "useRegexLabel": "Use Regex",
+ "wholeWordSearchLabel": "Whole Word Search",
+ "customPaddingLabel": "Custom Extra Padding",
+ "convertPDFToImageLabel": "Convert PDF to PDF-Image"
+ },
+ "tooltip": {
+ "mode": {
+ "header": {
+ "title": "Redaction Method"
+ },
+ "automatic": {
+ "title": "Automatic Redaction",
+ "text": "Automatically finds and redacts specified text throughout the document. Perfect for removing consistent sensitive information like names, addresses, or confidential markers."
+ },
+ "manual": {
+ "title": "Manual Redaction",
+ "text": "Click and drag to manually select specific areas to redact. Gives you precise control over what gets redacted. (Coming soon)"
+ }
+ },
+ "words": {
+ "header": {
+ "title": "Words to Redact"
+ },
+ "description": {
+ "title": "Text Matching",
+ "text": "Enter words or phrases to find and redact in your document. Each word will be searched for separately."
+ },
+ "bullet1": "Add one word at a time",
+ "bullet2": "Press Enter or click 'Add Another' to add",
+ "bullet3": "Click × to remove words",
+ "examples": {
+ "title": "Common Examples",
+ "text": "Typical words to redact include: bank details, email addresses, or specific names."
+ }
+ },
+ "advanced": {
+ "header": {
+ "title": "Advanced Redaction Settings"
+ },
+ "color": {
+ "title": "Box Colour & Padding",
+ "text": "Customise the appearance of redaction boxes. Black is standard, but you can choose any colour. Padding adds extra space around the found text."
+ },
+ "regex": {
+ "title": "Use Regex",
+ "text": "Enable regular expressions for advanced pattern matching. Useful for finding phone numbers, emails, or complex patterns.",
+ "bullet1": "Example: \\d{4}-\\d{2}-\\d{2} to match any dates in YYYY-MM-DD format",
+ "bullet2": "Use with caution - test thoroughly"
+ },
+ "wholeWord": {
+ "title": "Whole Word Search",
+ "text": "Only match complete words, not partial matches. 'John' won't match 'Johnson' when enabled."
+ },
+ "convert": {
+ "title": "Convert to PDF-Image",
+ "text": "Converts the PDF to an image-based PDF after redaction. This ensures text behind redaction boxes is completely removed and unrecoverable."
+ }
+ }
+ },
+ "manual": {
+ "header": "Manual Redaction",
+ "textBasedRedaction": "Text-based Redaction",
+ "pageBasedRedaction": "Page-based Redaction",
+ "convertPDFToImageLabel": "Convert PDF to PDF-Image (Used to remove text behind the box)",
+ "pageRedactionNumbers": {
+ "title": "Pages",
+ "placeholder": "(e.g. 1,2,8 or 4,7,12-16 or 2n-1)"
+ },
+ "redactionColor": {
+ "title": "Redaction Colour"
+ },
+ "export": "Export",
+ "upload": "Upload",
+ "boxRedaction": "Box draw redaction",
+ "zoom": "Zoom",
+ "zoomIn": "Zoom in",
+ "zoomOut": "Zoom out",
+ "nextPage": "Next Page",
+ "previousPage": "Previous Page",
+ "toggleSidebar": "Toggle Sidebar",
+ "showThumbnails": "Show Thumbnails",
+ "showDocumentOutline": "Show Document Outline (double-click to expand/collapse all items)",
+ "showAttachments": "Show Attachments",
+ "showLayers": "Show Layers (double-click to reset all layers to the default state)",
+ "colourPicker": "Colour Picker",
+ "findCurrentOutlineItem": "Find current outline item",
+ "applyChanges": "Apply Changes"
+ }
},
"tableExtraxt": {
"tags": "CSV,Table Extraction,extract,convert"
@@ -1557,7 +2762,8 @@
"counts": {
"label": "Overlay Counts (for Fixed Repeat Mode)",
"placeholder": "Enter comma-separated counts (e.g., 2,3,1)",
- "item": "Count for file"
+ "item": "Count for file",
+ "noFiles": "Add overlay files to configure counts"
},
"position": {
"label": "Select Overlay Position",
@@ -1598,6 +2804,9 @@
"title": "Counts (Fixed Repeat only)",
"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."
}
+ },
+ "error": {
+ "failed": "An error occurred while overlaying PDFs."
}
},
"split-by-sections": {
@@ -1633,7 +2842,18 @@
"customMargin": "Custom Margin",
"customColor": "Custom Text Color",
"submit": "Submit",
- "noStampSelected": "No stamp selected. Return to Step 1."
+ "noStampSelected": "No stamp selected. Return to Step 1.",
+ "customPosition": "Drag the stamp to the desired location in the preview window.",
+ "error": {
+ "failed": "An error occurred while adding stamp to the PDF."
+ },
+ "imageSize": "Image Size",
+ "margin": "Margin",
+ "positionAndFormatting": "Position & Formatting",
+ "quickPosition": "Select a position on the page to place the stamp.",
+ "results": {
+ "title": "Stamp Results"
+ }
},
"removeImagePdf": {
"tags": "Remove Image,Page operations,Back end,server side"
@@ -1651,7 +2871,8 @@
"status": {
"_value": "Status",
"valid": "Valid",
- "invalid": "Invalid"
+ "invalid": "Invalid",
+ "complete": "Validation complete"
},
"signer": "Signer",
"date": "Date",
@@ -1678,40 +2899,117 @@
"version": "Version",
"keyUsage": "Key Usage",
"selfSigned": "Self-Signed",
- "bits": "bits"
+ "bits": "bits",
+ "details": "Certificate Details"
},
"signature": {
"info": "Signature Information",
"_value": "Signature",
"mathValid": "Signature is mathematically valid BUT:"
},
- "selectCustomCert": "Custom Certificate File X.509 (Optional)"
- },
- "replace-color": {
- "title": "Replace-Invert-Color",
- "header": "Replace-Invert Color PDF",
- "selectText": {
- "1": "Replace or Invert color Options",
- "2": "Default(Default high contrast colors)",
- "3": "Custom(Customized colors)",
- "4": "Full-Invert(Invert all colors)",
- "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",
- "10": "Choose text Color",
- "11": "Choose background Color"
+ "selectCustomCert": "Custom Certificate File X.509 (Optional)",
+ "downloadCsv": "Download CSV",
+ "downloadJson": "Download JSON",
+ "downloadPdf": "Download PDF Report",
+ "downloadType": {
+ "csv": "CSV",
+ "json": "JSON",
+ "pdf": "PDF"
},
- "submit": "Replace"
+ "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."
+ },
+ "finalizing": "Preparing downloads...",
+ "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"
+ },
+ "noResults": "Run the validation to generate a report.",
+ "noSignaturesShort": "No signatures",
+ "processing": "Validating signatures...",
+ "report": {
+ "continued": "Continued",
+ "downloads": "Downloads",
+ "entryLabel": "Signature Summary",
+ "fields": {
+ "created": "Created",
+ "fileSize": "File Size",
+ "signatureCount": "Total Signatures",
+ "signatureDate": "Signature Date"
+ },
+ "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"
+ },
+ "settings": {
+ "certHint": "Upload a trusted X.509 certificate to validate against a custom trust source.",
+ "title": "Validation Settings"
+ },
+ "signatureDate": "Signature Date",
+ "totalSignatures": "Total Signatures"
},
- "replaceColorPdf": {
- "tags": "Replace Color,Page operations,Back end,server side"
+ "replaceColor": {
+ "tags": "Replace Colour,Page operations,Back end,server side",
+ "labels": {
+ "settings": "Settings",
+ "colourOperation": "Colour operation"
+ },
+ "options": {
+ "highContrast": "High contrast",
+ "invertAll": "Invert all colours",
+ "custom": "Custom"
+ },
+ "tooltip": {
+ "header": {
+ "title": "Replace & Invert Colour Settings Overview"
+ },
+ "description": {
+ "title": "Description",
+ "text": "Transform PDF colours to improve readability and accessibility. Choose from high contrast presets, invert all colours, or create custom colour schemes."
+ },
+ "highContrast": {
+ "title": "High Contrast",
+ "text": "Apply predefined high contrast colour combinations designed for better readability and accessibility compliance.",
+ "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"
+ },
+ "invertAll": {
+ "title": "Invert All Colours",
+ "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."
+ },
+ "custom": {
+ "title": "Custom Colours",
+ "text": "Define your own text and background colours using the colour pickers. Perfect for creating branded documents or specific accessibility requirements.",
+ "bullet1": "Text colour - Choose the colour for text elements",
+ "bullet2": "Background colour - Set the background colour for the document"
+ }
+ },
+ "error": {
+ "failed": "An error occurred while processing the colour replacement."
+ }
},
"login": {
"title": "Sign in",
"header": "Sign in",
"signin": "Sign in",
+ "signInWith": "Sign in with",
+ "signInAnonymously": "Sign Up as a Guest",
"rememberme": "Remember me",
"invalid": "Invalid username or password.",
"locked": "Your account has been locked.",
@@ -1730,7 +3028,36 @@
"alreadyLoggedIn": "You are already logged in to",
"alreadyLoggedIn2": "devices. Please log out of the devices and try again.",
"toManySessions": "You have too many active sessions",
- "logoutMessage": "You have been logged out."
+ "logoutMessage": "You have been logged out.",
+ "youAreLoggedIn": "You are logged in!",
+ "email": "Email",
+ "password": "Password",
+ "enterEmail": "Enter your email",
+ "enterPassword": "Enter your password",
+ "loggingIn": "Logging In...",
+ "username": "Username",
+ "enterUsername": "Enter username",
+ "useEmailInstead": "Login with email",
+ "forgotPassword": "Forgot your password?",
+ "logIn": "Log In",
+ "signingIn": "Signing in...",
+ "login": "Login",
+ "or": "Or",
+ "useMagicLink": "Use magic link instead",
+ "enterEmailForMagicLink": "Enter your email for magic link",
+ "sending": "Sending…",
+ "sendMagicLink": "Send Magic Link",
+ "cancel": "Cancel",
+ "dontHaveAccount": "Don't have an account? Sign up",
+ "home": "Home",
+ "debug": "Debug",
+ "signOut": "Sign Out",
+ "pleaseEnterBoth": "Please enter both email and password",
+ "pleaseEnterEmail": "Please enter your email address",
+ "magicLinkSent": "Magic link sent to {{email}}! Check your email and click the link to sign in.",
+ "passwordResetSent": "Password reset link sent to {{email}}! Check your email and follow the instructions.",
+ "failedToSignIn": "Failed to sign in with {{provider}}: {{message}}",
+ "unexpectedError": "Unexpected error: {{message}}"
},
"pdfToSinglePage": {
"title": "PDF To Single Page",
@@ -1774,15 +3101,55 @@
"contrast": "Contrast:",
"brightness": "Brightness:",
"saturation": "Saturation:",
- "download": "Download"
+ "download": "Download",
+ "adjustColors": "Adjust Colors",
+ "blue": "Blue",
+ "confirm": "Confirm",
+ "error": {
+ "failed": "Failed to adjust colors/contrast"
+ },
+ "green": "Green",
+ "noPreview": "Select a PDF to preview",
+ "red": "Red",
+ "results": {
+ "title": "Adjusted PDF"
+ }
},
"compress": {
"title": "Compress",
+ "desc": "Compress PDFs to reduce their file size.",
"header": "Compress PDF",
+ "method": {
+ "title": "Compression Method",
+ "quality": "Quality",
+ "filesize": "File Size"
+ },
"credit": "This service uses qpdf for PDF Compress/Optimisation.",
"grayscale": {
"label": "Apply Grayscale for Compression"
},
+ "tooltip": {
+ "header": {
+ "title": "Compress Settings Overview"
+ },
+ "description": {
+ "title": "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."
+ },
+ "qualityAdjustment": {
+ "title": "Quality Adjustment",
+ "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.",
+ "bullet1": "Lower values preserve quality",
+ "bullet2": "Higher values reduce file size"
+ },
+ "grayscale": {
+ "title": "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."
+ }
+ },
+ "error": {
+ "failed": "An error occurred while compressing the PDF."
+ },
"selectText": {
"1": {
"_value": "Compression Settings",
@@ -1894,11 +3261,11 @@
"header": "Remove Images",
"removeImage": "Remove Images",
"submit": "Remove Images",
- "results": {
- "title": "Remove Images Results"
- },
"error": {
"failed": "Failed to remove images from the PDF."
+ },
+ "results": {
+ "title": "Remove Images Results"
}
},
"splitByChapters": {
@@ -1976,82 +3343,252 @@
}
}
},
- "convert": {
+ "removeMetadata": {
+ "submit": "Remove Metadata"
+ },
+ "sidebar": {
+ "toggle": "Toggle Sidebar"
+ },
+ "theme": {
+ "toggle": "Toggle Theme"
+ },
+ "view": {
+ "viewer": "Viewer",
+ "pageEditor": "Page Editor",
+ "fileManager": "File Manager"
+ },
+ "pageEditor": {
+ "title": "Page Editor",
+ "save": "Save Changes",
+ "noPdfLoaded": "No PDF loaded. Please upload a PDF to edit.",
+ "rotatedLeft": "Rotated left:",
+ "rotatedRight": "Rotated right:",
+ "deleted": "Deleted:",
+ "movedLeft": "Moved left:",
+ "movedRight": "Moved right:",
+ "splitAt": "Split at:",
+ "insertedPageBreak": "Inserted page break at:",
+ "addFileNotImplemented": "Add file not implemented in demo",
+ "closePdf": "Close PDF",
+ "reset": "Reset Changes",
+ "zoomIn": "Zoom In",
+ "zoomOut": "Zoom Out",
+ "fitToWidth": "Fit to Width",
+ "actualSize": "Actual Size"
+ },
+ "viewer": {
+ "firstPage": "First Page",
+ "lastPage": "Last Page",
+ "previousPage": "Previous Page",
+ "nextPage": "Next Page",
+ "zoomIn": "Zoom In",
+ "zoomOut": "Zoom Out",
+ "singlePageView": "Single Page View",
+ "dualPageView": "Dual Page View"
+ },
+ "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",
+ "downloadAll": "Download All",
+ "toggleTheme": "Toggle Theme",
+ "language": "Language",
+ "search": "Search PDF",
+ "panMode": "Pan Mode",
+ "rotateLeft": "Rotate Left",
+ "rotateRight": "Rotate Right",
+ "toggleSidebar": "Toggle Sidebar",
+ "exportSelected": "Export Selected Pages",
+ "toggleAnnotations": "Toggle Annotations Visibility",
+ "annotationMode": "Toggle Annotation Mode",
+ "draw": "Draw",
+ "save": "Save"
+ },
+ "search": {
+ "title": "Search PDF",
+ "placeholder": "Enter search term...",
+ "noResults": "No results found",
+ "searching": "Searching..."
+ },
+ "guestBanner": {
+ "title": "You're using Stirling PDF as a guest!",
+ "message": "Create a free account to save your work, access more features, and support the project.",
+ "dismiss": "Dismiss banner",
+ "signUp": "Sign Up Free"
+ },
+ "toolPicker": {
+ "searchPlaceholder": "Search tools...",
+ "noToolsFound": "No tools found",
+ "allTools": "ALL TOOLS",
+ "quickAccess": "QUICK ACCESS",
+ "categories": {
+ "standardTools": "Standard Tools",
+ "advancedTools": "Advanced Tools",
+ "recommendedTools": "Recommended Tools"
+ },
+ "subcategories": {
+ "signing": "Signing",
+ "documentSecurity": "Document Security",
+ "verification": "Verification",
+ "documentReview": "Document Review",
+ "pageFormatting": "Page Formatting",
+ "extraction": "Extraction",
+ "removal": "Removal",
+ "automation": "Automation",
+ "general": "General",
+ "advancedFormatting": "Advanced Formatting",
+ "developerTools": "Developer Tools"
+ }
+ },
+ "quickAccess": {
+ "read": "Read",
+ "sign": "Sign",
+ "automate": "Automate",
"files": "Files",
- "selectFilesPlaceholder": "Select files in the main view to get started",
- "settings": "Settings",
- "conversionCompleted": "Conversion completed",
- "results": "Results",
- "defaultFilename": "converted_file",
- "conversionResults": "Conversion Results",
- "converting": "Converting...",
- "convertFiles": "Convert Files",
- "downloadConverted": "Download Converted File",
- "convertFrom": "Convert from",
- "convertTo": "Convert to",
- "sourceFormatPlaceholder": "Source format",
- "targetFormatPlaceholder": "Target format",
- "selectSourceFormatFirst": "Select a source format first",
- "imageOptions": "Image Options",
- "colorType": "Color Type",
- "color": "Color",
- "greyscale": "Greyscale",
- "blackwhite": "Black & White",
- "dpi": "DPI",
- "output": "Output",
- "single": "Single",
- "multiple": "Multiple",
- "pdfOptions": "PDF Options",
- "fitOption": "Fit Option",
- "maintainAspectRatio": "Maintain Aspect Ratio",
- "fitDocumentToPage": "Fit Document to Page",
- "fillPage": "Fill Page",
- "autoRotate": "Auto Rotate",
- "autoRotateDescription": "Automatically rotate images to better fit the PDF page",
- "combineImages": "Combine Images",
- "combineImagesDescription": "Combine all images into one PDF, or create separate PDFs for each image",
- "webOptions": "Web to PDF Options",
- "zoomLevel": "Zoom Level",
- "emailOptions": "Email to PDF Options",
- "includeAttachments": "Include email attachments",
- "maxAttachmentSize": "Maximum attachment size (MB)",
- "includeAllRecipients": "Include CC and BCC recipients in header",
- "downloadHtml": "Download HTML intermediate file instead of PDF",
- "pdfaOptions": "PDF/A Options",
- "outputFormat": "Output Format",
- "pdfaNote": "PDF/A-1b is more compatible, PDF/A-2b supports more features.",
- "pdfaDigitalSignatureWarning": "The PDF contains a digital signature. This will be removed in the next step.",
- "sanitize": {
- "submit": "Sanitize PDF",
- "completed": "Sanitization completed successfully",
- "error.generic": "Sanitization failed",
- "error.failed": "An error occurred while sanitizing the PDF.",
- "filenamePrefix": "sanitized",
- "sanitizationResults": "Sanitization Results",
- "steps": {
- "files": "Files",
- "settings": "Settings",
- "results": "Results"
- },
- "files": {
- "placeholder": "Select a PDF file in the main view to get started"
- },
- "options": {
- "title": "Sanitization Options",
- "note": "Select the elements you want to remove from the PDF. At least one option must be selected.",
- "removeJavaScript": "Remove JavaScript",
- "removeJavaScript.desc": "Remove JavaScript actions and scripts from the PDF",
- "removeEmbeddedFiles": "Remove Embedded Files",
- "removeEmbeddedFiles.desc": "Remove any files embedded within the PDF",
- "removeXMPMetadata": "Remove XMP Metadata",
- "removeXMPMetadata.desc": "Remove XMP metadata from the PDF",
- "removeMetadata": "Remove Document Metadata",
- "removeMetadata.desc": "Remove document information metadata (title, author, etc.)",
- "removeLinks": "Remove Links",
- "removeLinks.desc": "Remove external links and launch actions from the PDF",
- "removeFonts": "Remove Fonts",
- "removeFonts.desc": "Remove embedded fonts from the PDF"
- }
+ "activity": "Activity",
+ "help": "Help",
+ "account": "Account",
+ "config": "Config",
+ "allTools": "All Tools"
+ },
+ "fileUpload": {
+ "selectFile": "Select a file",
+ "selectFiles": "Select files",
+ "selectPdfToView": "Select a PDF to view",
+ "selectPdfToEdit": "Select a PDF to edit",
+ "chooseFromStorage": "Choose a file from storage or upload a new PDF",
+ "chooseFromStorageMultiple": "Choose files from storage or upload new PDFs",
+ "loadFromStorage": "Load from Storage",
+ "filesAvailable": "files available",
+ "loading": "Loading...",
+ "or": "or",
+ "dropFileHere": "Drop file here or click to upload",
+ "dropFilesHere": "Drop files here or click the upload button",
+ "pdfFilesOnly": "PDF files only",
+ "supportedFileTypes": "Supported file types",
+ "upload": "Upload",
+ "uploadFile": "Upload File",
+ "uploadFiles": "Upload Files",
+ "noFilesInStorage": "No files available in storage. Upload some files first.",
+ "selectFromStorage": "Select from Storage",
+ "backToTools": "Back to Tools",
+ "addFiles": "Add Files",
+ "dragFilesInOrClick": "Drag files in or click \"Add Files\" to browse"
+ },
+ "fileEditor": {
+ "addFiles": "Add Files"
+ },
+ "fileManager": {
+ "title": "Upload PDF Files",
+ "subtitle": "Add files to your storage for easy access across tools",
+ "filesSelected": "files selected",
+ "clearSelection": "Clear Selection",
+ "openInFileEditor": "Open in File Editor",
+ "uploadError": "Failed to upload some files.",
+ "failedToOpen": "Failed to open file. It may have been removed from storage.",
+ "failedToLoad": "Failed to load file to active set.",
+ "storageCleared": "Browser cleared storage. Files have been removed. Please re-upload.",
+ "clearAll": "Clear All",
+ "reloadFiles": "Reload Files",
+ "dragDrop": "Drag & Drop files here",
+ "clickToUpload": "Click to upload files",
+ "selectedFiles": "Selected Files",
+ "storage": "Storage",
+ "filesStored": "files stored",
+ "storageError": "Storage error occurred",
+ "storageLow": "Storage is running low. Consider removing old files.",
+ "supportMessage": "Powered by browser database storage for unlimited capacity",
+ "noFileSelected": "No files selected",
+ "showHistory": "Show History",
+ "hideHistory": "Hide History",
+ "fileHistory": "File History",
+ "loadingHistory": "Loading History...",
+ "lastModified": "Last Modified",
+ "toolChain": "Tools Applied",
+ "restore": "Restore",
+ "unzip": "Unzip",
+ "searchFiles": "Search files...",
+ "recent": "Recent",
+ "localFiles": "Local Files",
+ "googleDrive": "Google Drive",
+ "googleDriveShort": "Drive",
+ "myFiles": "My Files",
+ "noRecentFiles": "No recent files found",
+ "googleDriveNotAvailable": "Google Drive integration not available",
+ "openFiles": "Open Files",
+ "openFile": "Open File",
+ "details": "File Details",
+ "fileName": "Name",
+ "fileFormat": "Format",
+ "fileSize": "Size",
+ "fileVersion": "Version",
+ "totalSelected": "Total Selected",
+ "dropFilesHere": "Drop files here",
+ "selectAll": "Select All",
+ "deselectAll": "Deselect All",
+ "deleteSelected": "Delete Selected",
+ "downloadSelected": "Download Selected",
+ "selectedCount": "{{count}} selected",
+ "download": "Download",
+ "delete": "Delete",
+ "unsupported": "Unsupported",
+ "addToUpload": "Add to Upload",
+ "deleteAll": "Delete All",
+ "loadingFiles": "Loading files...",
+ "noFiles": "No files available",
+ "noFilesFound": "No files found matching your search",
+ "openInPageEditor": "Open in Page Editor",
+ "showAll": "Show All",
+ "sortByDate": "Sort by Date",
+ "sortByName": "Sort by Name",
+ "sortBySize": "Sort by Size"
+ },
+ "storage": {
+ "temporaryNotice": "Files are stored temporarily in your browser and may be cleared automatically",
+ "storageLimit": "Storage limit",
+ "storageUsed": "Temporary Storage used",
+ "storageFull": "Storage is nearly full. Consider removing some files.",
+ "fileTooLarge": "File too large. Maximum size per file is",
+ "storageQuotaExceeded": "Storage quota exceeded. Please remove some files before uploading more.",
+ "approximateSize": "Approximate size"
+ },
+ "sanitize": {
+ "title": "Sanitise",
+ "desc": "Remove potentially harmful elements from PDF files.",
+ "submit": "Sanitise PDF",
+ "completed": "Sanitisation completed successfully",
+ "error.generic": "Sanitisation failed",
+ "error.failed": "An error occurred while sanitising the PDF.",
+ "filenamePrefix": "sanitised",
+ "sanitizationResults": "Sanitisation Results",
+ "steps": {
+ "files": "Files",
+ "settings": "Settings",
+ "results": "Results"
+ },
+ "files": {
+ "placeholder": "Select a PDF file in the main view to get started"
+ },
+ "options": {
+ "title": "Sanitisation Options",
+ "note": "Select the elements you want to remove from the PDF. At least one option must be selected.",
+ "removeJavaScript": "Remove JavaScript",
+ "removeJavaScript.desc": "Remove JavaScript actions and scripts from the PDF",
+ "removeEmbeddedFiles": "Remove Embedded Files",
+ "removeEmbeddedFiles.desc": "Remove any files embedded within the PDF",
+ "removeXMPMetadata": "Remove XMP Metadata",
+ "removeXMPMetadata.desc": "Remove XMP metadata from the PDF",
+ "removeMetadata": "Remove Document Metadata",
+ "removeMetadata.desc": "Remove document information metadata (title, author, etc.)",
+ "removeLinks": "Remove Links",
+ "removeLinks.desc": "Remove external links and launch actions from the PDF",
+ "removeFonts": "Remove Fonts",
+ "removeFonts.desc": "Remove embedded fonts from the PDF"
}
},
"addPassword": {
@@ -2064,7 +3601,6 @@
"failed": "An error occurred while encrypting the PDF."
},
"passwords": {
- "title": "Passwords",
"stepTitle": "Passwords & Encryption",
"completed": "Passwords configured",
"user": {
@@ -2076,9 +3612,6 @@
"placeholder": "Enter owner password"
}
},
- "permissions": {
- "stepTitle": "Document Permissions"
- },
"encryption": {
"keyLength": {
"label": "Encryption Key Length",
@@ -2114,9 +3647,10 @@
}
},
"changePermissions": {
+ "title": "Document Permissions",
+ "desc": "Change document restrictions and permissions.",
"completed": "Permissions changed",
"submit": "Change Permissions",
- "title": "Document Permissions",
"error": {
"failed": "An error occurred while changing PDF permissions."
},
@@ -2161,257 +3695,6 @@
}
}
},
- "watermark": {
- "tags": "Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo",
- "title": "Add Watermark",
- "desc": "Add text or image watermarks to PDF files",
- "header": "Add Watermark",
- "completed": "Watermark added",
- "submit": "Add Watermark",
- "filenamePrefix": "watermarked",
- "error": {
- "failed": "An error occurred while adding watermark to the PDF."
- },
- "watermarkType": {
- "text": "Text",
- "image": "Image"
- },
- "settings": {
- "type": "Watermark Type",
- "text": {
- "label": "Watermark Text",
- "placeholder": "Enter watermark text"
- },
- "image": {
- "label": "Watermark Image",
- "choose": "Choose Image",
- "selected": "Selected: {{filename}}"
- },
- "fontSize": "Font Size",
- "alphabet": "Font/Language",
- "color": "Watermark Color",
- "rotation": "Rotation (degrees)",
- "opacity": "Opacity (%)",
- "spacing": {
- "horizontal": "Horizontal Spacing",
- "vertical": "Vertical Spacing"
- },
- "convertToImage": "Flatten PDF pages to images"
- },
- "alphabet": {
- "roman": "Roman/Latin",
- "arabic": "Arabic",
- "japanese": "Japanese",
- "korean": "Korean",
- "chinese": "Chinese",
- "thai": "Thai"
- },
- "steps": {
- "type": "Watermark Type",
- "wording": "Wording",
- "textStyle": "Style",
- "file": "Watermark File",
- "formatting": "Formatting"
- },
- "results": {
- "title": "Watermark Results"
- },
- "tooltip": {
- "language": {
- "title": "Language Support",
- "text": "Choose the appropriate language setting to ensure proper font rendering for your text."
- },
- "appearance": {
- "title": "Appearance Settings",
- "text": "Control how your watermark looks and blends with the document.",
- "bullet1": "Rotation: -360° to 360° for angled watermarks",
- "bullet2": "Opacity: 0-100% for transparency control",
- "bullet3": "Lower opacity creates subtle watermarks"
- },
- "spacing": {
- "title": "Spacing Control",
- "text": "Adjust the spacing between repeated watermarks across the page.",
- "bullet1": "Width spacing: Horizontal distance between watermarks",
- "bullet2": "Height spacing: Vertical distance between watermarks",
- "bullet3": "Higher values create more spread out patterns"
- },
- "type": {
- "header": {
- "title": "Watermark Type Selection"
- },
- "description": {
- "title": "Choose Your Watermark",
- "text": "Select between text or image watermarks based on your needs."
- },
- "text": {
- "title": "Text Watermarks",
- "text": "Perfect for adding copyright notices, company names, or confidentiality labels. Supports multiple languages and custom colors.",
- "bullet1": "Customizable fonts and languages",
- "bullet2": "Adjustable colors and transparency",
- "bullet3": "Ideal for legal or branding text"
- },
- "image": {
- "title": "Image Watermarks",
- "text": "Use logos, stamps, or any image as a watermark. Great for branding and visual identification.",
- "bullet1": "Upload any image format",
- "bullet2": "Maintains image quality",
- "bullet3": "Perfect for logos and stamps"
- }
- },
- "content": {
- "header": {
- "title": "Content Configuration"
- },
- "text": {
- "title": "Text Settings",
- "text": "Configure your text watermark appearance and language support.",
- "bullet1": "Enter your watermark text",
- "bullet2": "Adjust font size (8-72pt)",
- "bullet3": "Select language/script support",
- "bullet4": "Choose custom colors"
- },
- "language": {
- "title": "Language Support",
- "text": "Choose the appropriate language setting to ensure proper font rendering for your text.",
- "bullet1": "Roman/Latin for Western languages",
- "bullet2": "Arabic for Arabic script",
- "bullet3": "Japanese, Korean, Chinese for Asian languages",
- "bullet4": "Thai for Thai script"
- }
- },
- "style": {
- "header": {
- "title": "Style & Positioning"
- },
- "appearance": {
- "title": "Appearance Settings",
- "text": "Control how your watermark looks and blends with the document.",
- "bullet1": "Rotation: -360° to 360° for angled watermarks",
- "bullet2": "Opacity: 0-100% for transparency control",
- "bullet3": "Lower opacity creates subtle watermarks"
- },
- "spacing": {
- "title": "Spacing Control",
- "text": "Adjust the spacing between repeated watermarks across the page.",
- "bullet1": "Width spacing: Horizontal distance between watermarks",
- "bullet2": "Height spacing: Vertical distance between watermarks",
- "bullet3": "Higher values create more spread out patterns"
- }
- },
- "wording": {
- "header": {
- "title": "Text Content"
- },
- "text": {
- "title": "Watermark Text",
- "text": "Enter the text that will appear as your watermark across the document.",
- "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"
- }
- },
- "textStyle": {
- "header": {
- "title": "Text Style"
- },
- "language": {
- "title": "Language Support",
- "text": "Choose the appropriate language setting to ensure proper font rendering.",
- "bullet1": "Roman/Latin for Western languages",
- "bullet2": "Arabic for Arabic script",
- "bullet3": "Japanese, Korean, Chinese for Asian languages",
- "bullet4": "Thai for Thai script"
- },
- "color": {
- "title": "Color Selection",
- "text": "Choose a color that provides good contrast with your document content.",
- "bullet1": "Light gray (#d3d3d3) for subtle watermarks",
- "bullet2": "Black or dark colors for high contrast",
- "bullet3": "Custom colors for branding purposes"
- }
- },
- "file": {
- "header": {
- "title": "Image Upload"
- },
- "upload": {
- "title": "Image Selection",
- "text": "Upload an image file to use as your watermark.",
- "bullet1": "Supports common formats: PNG, JPG, GIF, BMP",
- "bullet2": "PNG with transparency works best",
- "bullet3": "Higher resolution images maintain quality better"
- },
- "recommendations": {
- "title": "Best Practices",
- "text": "Tips for optimal image watermark results.",
- "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"
- }
- },
- "formatting": {
- "header": {
- "title": "Formatting & Layout"
- },
- "size": {
- "title": "Size Control",
- "text": "Adjust the size of your watermark (text or image).",
- "bullet1": "Larger sizes create more prominent watermarks"
- },
- "appearance": {
- "title": "Appearance Settings",
- "text": "Control how your watermark looks and blends with the document.",
- "bullet1": "Rotation: -360° to 360° for angled watermarks",
- "bullet2": "Opacity: 0-100% for transparency control",
- "bullet3": "Lower opacity creates subtle watermarks"
- },
- "spacing": {
- "title": "Spacing Control",
- "text": "Adjust the spacing between repeated watermarks across the page.",
- "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"
- },
- "security": {
- "title": "Security Option",
- "text": "Flatten PDF pages to images for enhanced 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"
- }
- },
- "advanced": {
- "header": {
- "title": "Advanced Options"
- },
- "conversion": {
- "title": "PDF to Image Conversion",
- "text": "Convert the final PDF to an image-based format for enhanced 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"
- },
- "security": {
- "title": "Security Considerations",
- "text": "Image-based PDFs provide additional protection against unauthorized editing and content extraction."
- }
- }
- }
- },
- "rightRail": {
- "closePdf": "Close PDF",
- "closeSelected": "Close Selected Files",
- "selectAll": "Select All",
- "deselectAll": "Deselect All",
- "selectByNumber": "Select by Page Numbers",
- "deleteSelected": "Delete Selected Pages",
- "toggleTheme": "Toggle Theme",
- "exportAll": "Export PDF",
- "downloadSelected": "Download Selected Files",
- "downloadAll": "Download All"
- },
"removePassword": {
"title": "Remove Password",
"desc": "Remove password protection from your PDF document.",
@@ -2434,6 +3717,78 @@
"title": "Decrypted PDFs"
}
},
+ "automate": {
+ "title": "Automate",
+ "desc": "Build multi-step workflows by chaining together PDF actions. Ideal for recurring tasks.",
+ "invalidStep": "Invalid step",
+ "files": {
+ "placeholder": "Select files to process with this automation"
+ },
+ "selection": {
+ "title": "Automation Selection",
+ "saved": {
+ "title": "Saved"
+ },
+ "createNew": {
+ "title": "Create New Automation"
+ },
+ "suggested": {
+ "title": "Suggested"
+ }
+ },
+ "creation": {
+ "createTitle": "Create Automation",
+ "editTitle": "Edit Automation",
+ "intro": "Automations run tools sequentially. To get started, add tools in the order you want them to run.",
+ "name": {
+ "label": "Automation Name",
+ "placeholder": "My Automation"
+ },
+ "description": {
+ "label": "Description (optional)",
+ "placeholder": "Describe what this automation does..."
+ },
+ "tools": {
+ "selectTool": "Select a tool...",
+ "selected": "Selected Tools",
+ "remove": "Remove tool",
+ "configure": "Configure tool",
+ "notConfigured": "! Not Configured",
+ "addTool": "Add Tool",
+ "add": "Add a tool..."
+ },
+ "save": "Save Automation",
+ "unsavedChanges": {
+ "title": "Unsaved Changes",
+ "message": "You have unsaved changes. Are you sure you want to go back? All changes will be lost.",
+ "cancel": "Cancel",
+ "confirm": "Go Back"
+ },
+ "icon": {
+ "label": "Icon"
+ }
+ },
+ "run": {
+ "title": "Run Automation"
+ },
+ "sequence": {
+ "unnamed": "Unnamed Automation",
+ "steps": "{{count}} steps",
+ "running": "Running Automation...",
+ "run": "Run Automation",
+ "finish": "Finish"
+ },
+ "reviewTitle": "Automation Results",
+ "config": {
+ "loading": "Loading tool configuration...",
+ "noSettings": "This tool does not have configurable settings.",
+ "title": "Configure {{toolName}}",
+ "description": "Configure the settings for this tool. These settings will be applied when the automation runs.",
+ "cancel": "Cancel",
+ "save": "Save Configuration"
+ },
+ "copyToSaved": "Copy to Saved"
+ },
"automation": {
"suggested": {
"securePdfIngestion": "Secure PDF Ingestion",
@@ -2446,8 +3801,62 @@
"processImagesDesc": "Converts multiple image files into a single PDF document, then applies OCR technology to extract searchable text from the images."
}
},
- "automate": {
- "copyToSaved": "Copy to Saved"
+ "common": {
+ "copy": "Copy",
+ "copied": "Copied!",
+ "refresh": "Refresh",
+ "retry": "Retry",
+ "remaining": "remaining",
+ "used": "used",
+ "available": "available",
+ "cancel": "Cancel",
+ "preview": "Preview"
+ },
+ "config": {
+ "account": {
+ "overview": {
+ "title": "Account Settings",
+ "manageAccountPreferences": "Manage your account preferences",
+ "guestDescription": "You are signed in as a guest. Consider upgrading your account above."
+ },
+ "upgrade": {
+ "title": "Upgrade Guest Account",
+ "description": "Link your account to preserve your history and access more features!",
+ "socialLogin": "Upgrade with Social Account",
+ "linkWith": "Link with",
+ "emailPassword": "or enter your email & password",
+ "email": "Email",
+ "emailPlaceholder": "Enter your email",
+ "password": "Password (optional)",
+ "passwordPlaceholder": "Set a password",
+ "passwordNote": "Leave empty to use email verification only",
+ "upgradeButton": "Upgrade Account"
+ }
+ },
+ "apiKeys": {
+ "description": "Your API key for accessing Stirling's suite of PDF tools. Copy it to your project or refresh to generate a new one.",
+ "publicKeyAriaLabel": "Public API key",
+ "copyKeyAriaLabel": "Copy API key",
+ "refreshAriaLabel": "Refresh API key",
+ "includedCredits": "Included credits",
+ "purchasedCredits": "Purchased credits",
+ "totalCredits": "Total Credits",
+ "chartAriaLabel": "Credits usage: included {{includedUsed}} of {{includedTotal}}, purchased {{purchasedUsed}} of {{purchasedTotal}}",
+ "nextReset": "Next Reset",
+ "lastApiUse": "Last API Use",
+ "overlayMessage": "Generate a key to see credits and available credits",
+ "label": "API Key",
+ "guestInfo": "Guest users do not receive API keys. Create an account to get an API key you can use in your applications.",
+ "goToAccount": "Go to Account",
+ "refreshModal": {
+ "title": "Refresh API Keys",
+ "warning": "⚠️ Warning: This action will generate new API keys and make your previous keys invalid.",
+ "impact": "Any applications or services currently using these keys will stop working until you update them with the new keys.",
+ "confirmPrompt": "Are you sure you want to continue?",
+ "confirmCta": "Refresh Keys"
+ },
+ "generateError": "We couldn't generate your API key."
+ }
},
"AddAttachmentsRequest": {
"attachments": "Select Attachments",
@@ -2459,11 +3868,150 @@
"submit": "Add Attachments",
"results": {
"title": "Attachment Results"
+ },
+ "error": {
+ "failed": "Add attachments operation failed"
}
},
+ "termsAndConditions": "Terms & Conditions",
+ "logOut": "Log out",
"addAttachments": {
"error": {
"failed": "An error occurred while adding attachments to the PDF."
}
+ },
+ "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."
+ },
+ "customPosition": "Custom Position",
+ "details": "Details",
+ "downloadUnavailable": "Download unavailable for this item",
+ "invalidUndoData": "Cannot undo: invalid operation data",
+ "margin": {
+ "large": "Large",
+ "medium": "Medium",
+ "small": "Small",
+ "xLarge": "Extra Large"
+ },
+ "noFilesToUndo": "Cannot undo: no files were processed in the last operation",
+ "noOperationToUndo": "No operation to undo",
+ "noValidFiles": "No valid files to process",
+ "operationCancelled": "Operation cancelled",
+ "pageEdit": {
+ "deselectAll": "Select None",
+ "selectAll": "Select All"
+ },
+ "quickPosition": "Quick Position",
+ "reorganizePages": {
+ "error": {
+ "failed": "Failed to reorganize pages"
+ },
+ "results": {
+ "title": "Pages Reorganized"
+ },
+ "settings": {
+ "title": "Settings"
+ },
+ "submit": "Reorganize Pages"
+ },
+ "replace-color": {
+ "options": {
+ "fill": "Fill colour",
+ "gradient": "Gradient"
+ },
+ "previewOverlayOpacity": "Preview overlay opacity",
+ "previewOverlayTransparency": "Preview overlay transparency",
+ "previewOverlayVisibility": "Show preview overlay",
+ "selectText": {
+ "1": "Replace or Invert color Options",
+ "2": "Default(Default high contrast colors)",
+ "3": "Custom(Customized colors)",
+ "4": "Full-Invert(Invert all colors)",
+ "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",
+ "10": "Choose text Color",
+ "11": "Choose background Color",
+ "12": "Choose start colour",
+ "13": "Choose end colour"
+ },
+ "submit": "Replace",
+ "title": "Replace-Invert-Color"
+ },
+ "size": "Size",
+ "submit": "Submit",
+ "success": "Success",
+ "tools": {
+ "noSearchResults": "No tools found",
+ "noTools": "No tools available"
+ },
+ "undoDataMismatch": "Cannot undo: operation data is corrupted",
+ "undoFailed": "Failed to undo operation",
+ "undoQuotaError": "Cannot undo: insufficient storage space",
+ "undoStorageError": "Undo completed but some files could not be saved to storage",
+ "undoSuccess": "Operation undone successfully",
+ "unsupported": "Unsupported",
+ "signup": {
+ "title": "Create an account",
+ "subtitle": "Join Stirling PDF to get started",
+ "name": "Name",
+ "email": "Email",
+ "password": "Password",
+ "confirmPassword": "Confirm password",
+ "enterName": "Enter your name",
+ "enterEmail": "Enter your email",
+ "enterPassword": "Enter your password",
+ "confirmPasswordPlaceholder": "Confirm password",
+ "or": "or",
+ "creatingAccount": "Creating Account...",
+ "signUp": "Sign Up",
+ "alreadyHaveAccount": "Already have an account? Sign in",
+ "pleaseFillAllFields": "Please fill in all fields",
+ "passwordsDoNotMatch": "Passwords do not match",
+ "passwordTooShort": "Password must be at least 6 characters long",
+ "invalidEmail": "Please enter a valid email address",
+ "checkEmailConfirmation": "Check your email for a confirmation link to complete your registration.",
+ "accountCreatedSuccessfully": "Account created successfully! You can now sign in.",
+ "unexpectedError": "Unexpected error: {{message}}",
+ "useEmailInstead": "Use Email Instead",
+ "nameRequired": "Name is required",
+ "emailRequired": "Email is required",
+ "passwordRequired": "Password is required",
+ "confirmPasswordRequired": "Please confirm your password"
+ },
+ "onboarding": {
+ "welcomeModal": {
+ "title": "Welcome to Stirling PDF!",
+ "description": "Would you like to take a quick 1-minute tour to learn the key features and how to get started?",
+ "helpHint": "You can always access this tour later from the Help button in the bottom left.",
+ "startTour": "Start Tour",
+ "maybeLater": "Maybe Later",
+ "dontShowAgain": "Don't Show Again"
+ },
+ "allTools": "This is the All Tools panel, where you can browse and select from all available PDF tools.",
+ "selectCropTool": "Let's select the Crop tool to demonstrate how to use one of the tools.",
+ "toolInterface": "This is the Crop tool interface. As you can see, there's not much there because we haven't added any PDF files to work with yet.",
+ "filesButton": "The Files 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.",
+ "workbench": "This is the Workbench - the main area where you view and edit your PDFs.",
+ "viewSwitcher": "Use these controls to select how you want to view your PDFs.",
+ "viewer": "The Viewer lets you read and annotate your PDFs.",
+ "pageEditor": "The Page Editor allows you to do various operations on the pages within your PDFs, such as reordering, rotating and deleting.",
+ "activeFiles": "The Active Files view shows all of the PDFs you have loaded into the tool, and allows you to select which ones to process.",
+ "fileCheckbox": "Clicking one of the files selects it for processing. You can select multiple files for batch operations.",
+ "selectControls": "The Right Rail contains buttons to quickly select/deselect all of your active PDFs, along with buttons to change the app's theme or language.",
+ "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.",
+ "runButton": "Once the tool has been configured, this button allows you to run the tool on all the selected PDFs.",
+ "results": "After the tool has finished running, the Review step will show a preview of the results in this panel, and allow you to undo the operation or download the file. ",
+ "fileReplacement": "The modified file will replace the original file in the Workbench automatically, allowing you to easily run it through more tools.",
+ "pinButton": "You can use the Pin button if you'd rather your files stay active after running tools on them.",
+ "wrapUp": "You're all set! You've learnt about the main areas of the app and how to use them. Click the Help button whenever you like to see this tour again.",
+ "previous": "Previous",
+ "next": "Next",
+ "finish": "Finish",
+ "startTour": "Start Tour",
+ "startTourDescription": "Take a guided tour of Stirling PDF's key features"
}
}