Anthony Stirling 8149cb157c
SEO init (#4197)
# Description of Changes
This pull request introduces dynamic document meta tag management and
improves URL routing and tool metadata handling in the frontend. The
most significant changes are the addition of a custom hook to update
document meta tags (including OpenGraph tags) based on the selected
tool, enhancements to the tool selection context for better URL
synchronization, and enrichment of the `Tool` type and tool registry
with more metadata.

**Dynamic document meta management:**

* Added a new `useDocumentMeta` hook that updates the page's `<title>`,
description, and OpenGraph meta tags based on the currently selected
tool, and restores the original values on cleanup.
(`frontend/src/hooks/useDocumentMeta.ts`)
* Integrated `useDocumentMeta` into `HomePageContent` so the document's
meta tags dynamically reflect the selected tool's metadata, improving
SEO and social sharing. (`frontend/src/pages/HomePage.tsx`)
[[1]](diffhunk://#diff-85c26b21681286c20e97a26a4912f0b91812776c9d4d0c54aa541fded2565c7eR2-R8)
[[2]](diffhunk://#diff-85c26b21681286c20e97a26a4912f0b91812776c9d4d0c54aa541fded2565c7eR17)
[[3]](diffhunk://#diff-85c26b21681286c20e97a26a4912f0b91812776c9d4d0c54aa541fded2565c7eR28-R37)

**Tool metadata and context improvements:**

* Enhanced the `Tool` type and tool registry to include `title` and
`description` fields, which are now translated and used throughout the
UI and meta tags. (`frontend/src/types/tool.ts`,
`frontend/src/hooks/useToolManagement.tsx`)
[[1]](diffhunk://#diff-0b557df7bd27ac90cd2f925ddd8ef8096ea2decfaee9a5c12a94dc7a03c64bfaR46)
[[2]](diffhunk://#diff-57f8a6b3e75ecaec10ad445b01afe8fccc376af6f8ad4d693c68cf98e8863273L116-R118)
* Updated the `ToolWorkflowContext` to use the new `Tool` type for
`selectedTool`, replacing the previous `ToolConfiguration` type.
(`frontend/src/contexts/ToolWorkflowContext.tsx`)
[[1]](diffhunk://#diff-9b36e2c06dddbcfba6cb66fd0b303b7860f88ca8b562bb2534af1ab50390d385L6-R8)
[[2]](diffhunk://#diff-9b36e2c06dddbcfba6cb66fd0b303b7860f88ca8b562bb2534af1ab50390d385L72-R72)

**URL routing and synchronization:**

* Implemented logic in `ToolWorkflowContext` to synchronize the selected
tool with the browser URL, initialize tool selection from the URL on
load, and handle browser navigation (back/forward) for tool selection.
(`frontend/src/contexts/ToolWorkflowContext.tsx`)
---

## Checklist

### General

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

### Documentation

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

### UI Changes (if applicable)

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

### Testing (if applicable)

- [ ] I have tested my changes locally. Refer to the [Testing
Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/devGuide/DeveloperGuide.md#6-testing)
for more details.
2025-08-14 15:52:38 +01:00

1562 lines
91 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"language": {
"direction": "ltr"
},
"addPageNumbers": {
"fontSize": "ขนาดตัวอักษร",
"fontName": "ชื่อฟอนต์",
"title": "เพิ่มหมายเลขหน้า",
"header": "เพิ่มหมายเลขหน้า",
"selectText": {
"1": "เลือกไฟล์ PDF:",
"2": "ขนาดขอบ",
"3": "ตำแหน่ง",
"4": "หมายเลขเริ่มต้น",
"5": "หน้าเพื่อกำหนดหมายเลข",
"6": "ข้อความที่กำหนดเอง"
},
"customTextDesc": "ข้อความที่กำหนดเอง",
"numberPagesDesc": "หมายเลขหน้าที่จะกำหนด หมายเลขเริ่มต้น 'ทั้งหมด', ยังยอมรับ 1-5 หรือ 2,5,9 เป็นต้น",
"customNumberDesc": "ค่าเริ่มต้น {n}, ยังยอมรับ 'หน้า {n} ของ {total}', 'ข้อความ-{n}', '{filename}-{n}'",
"submit": "เพิ่มหมายเลขหน้า"
},
"pdfPrompt": "เลือก PDF",
"multiPdfPrompt": "เลือก PDF หลายไฟล์ (2 ขึ้นไป)",
"multiPdfDropPrompt": "เลือก (หรือลากและวาง) PDF ทั้งหมดที่คุณต้องการ",
"imgPrompt": "เลือกภาพ",
"genericSubmit": "ส่ง",
"uploadLimit": "Maximum file size:",
"uploadLimitExceededSingular": "is too large. Maximum allowed size is",
"uploadLimitExceededPlural": "are too large. Maximum allowed size is",
"processTimeWarning": "คำเตือน: กระบวนการนี้อาจใช้เวลาสูงสุดหนึ่งนาทีขึ้นอยู่กับขนาดไฟล์",
"pageOrderPrompt": "เรียงลำดับหน้าตามความต้องการ (ป้อนหมายเลขหน้าแยกด้วยเครื่องหมายจุลภาคหรือฟังก์ชัน เช่น 2n+1) :",
"pageSelectionPrompt": "เลือกหน้าตามความต้องการ (ป้อนหมายเลขหน้าแยกด้วยเครื่องหมายจุลภาค เช่น 1,5,6 หรือฟังก์ชัน เช่น 2n+1) :",
"goToPage": "ไปที่หน้า",
"true": "จริง",
"false": "เท็จ",
"unknown": "ไม่ทราบ",
"save": "บันทึก",
"saveToBrowser": "บันทึกในเบราว์เซอร์",
"close": "ปิด",
"filesSelected": "ไฟล์ที่เลือก",
"noFavourites": "ไม่มีรายการโปรดที่เพิ่ม",
"downloadComplete": "การดาวน์โหลดเสร็จสมบูรณ์",
"bored": "เบื่อรอหรือยัง?",
"alphabet": "ตัวอักษร",
"downloadPdf": "ดาวน์โหลด PDF",
"text": "ข้อความ",
"font": "ฟอนต์",
"selectFillter": "-- เลือก --",
"pageNum": "หมายเลขหน้า",
"sizes": {
"small": "เล็ก",
"medium": "กลาง",
"large": "ใหญ่",
"x-large": "ใหญ่มาก"
},
"error": {
"pdfPassword": "เอกสาร PDF มีรหัสผ่าน และไม่ได้ระบุรหัสผ่านหรือรหัสผ่านไม่ถูกต้อง",
"_value": "ข้อผิดพลาด",
"sorry": "ขออภัยในปัญหา!",
"needHelp": "ต้องการความช่วยเหลือ / พบปัญหา?",
"contactTip": "หากคุณยังมีปัญหา อย่าลังเลที่จะติดต่อเราเพื่อขอความช่วยเหลือ คุณสามารถส่งตั๋วบนหน้าของเราใน GitHub หรือ ติดต่อเราผ่าน Discord:",
"404": {
"head": "404 - ไม่พบหน้า | อุ๊ย! เราพลาดในโค้ด!",
"1": "เราไม่สามารถหาหน้าที่คุณกำลังมองหา",
"2": "บางสิ่งบางอย่างผิดพลาด"
},
"github": "ส่งตั๋วใน GitHub",
"showStack": "แสดง Stack Trace",
"copyStack": "คัดลอก Stack Trace",
"githubSubmit": "GitHub - ส่งตั๋ว",
"discordSubmit": "Discord - ส่งโพสต์การสนับสนุน"
},
"delete": "ลบ",
"username": "ชื่อผู้ใช้",
"password": "รหัสผ่าน",
"welcome": "ยินดีต้อนรับ",
"property": "คุณสมบัติ",
"black": "ดำ",
"white": "ขาว",
"red": "แดง",
"green": "เขียว",
"blue": "น้ำเงิน",
"custom": "ปรับแต่ง...",
"WorkInProgess": "กำลังดำเนินการ อาจไม่ทำงานหรือมีบั๊ก โปรดรายงานปัญหาใด ๆ!",
"poweredBy": "ขับเคลื่อนโดย",
"yes": "ใช่",
"no": "ไม่",
"changedCredsMessage": "ข้อมูลรับรองเปลี่ยนแปลงแล้ว!",
"notAuthenticatedMessage": "ผู้ใช้ไม่ได้รับการยืนยัน",
"userNotFoundMessage": "ไม่พบผู้ใช้",
"incorrectPasswordMessage": "รหัสผ่านปัจจุบันไม่ถูกต้อง",
"usernameExistsMessage": "ชื่อผู้ใช้ใหม่มีอยู่แล้ว",
"invalidUsernameMessage": "ชื่อผู้ใช้ไม่ถูกต้อง ชื่อผู้ใช้สามารถประกอบด้วยตัวอักษร ตัวเลข และอักขระพิเศษต่อไปนี้ @._+- หรือจะต้องเป็นที่อยู่อีเมลที่ถูกต้อง",
"invalidPasswordMessage": "รหัสผ่านไม่ควรว่าง และไม่ควรมีพื้นที่ว่างที่ขอบของข้อความ",
"confirmPasswordErrorMessage": "รหัสผ่านใหม่และยืนยันรหัสผ่านใหม่ต้องตรงกัน",
"deleteCurrentUserMessage": "ไม่สามารถลบผู้ใช้ที่เข้าสู่ระบบในปัจจุบันได้",
"deleteUsernameExistsMessage": "ชื่อผู้ใช้ไม่ปรากฏและไม่สามารถลบได้",
"downgradeCurrentUserMessage": "ไม่สามารถลดระดับบทบาทของผู้ใช้ปัจจุบันได้",
"disabledCurrentUserMessage": "ผู้ใช้งานปัจจุบันไม่สามารถปิดการใช้งานได้",
"downgradeCurrentUserLongMessage": "ไม่สามารถลดระดับบทบาทของผู้ใช้ปัจจุบันได้ ดังนั้นผู้ใช้ปัจจุบันจะไม่ปรากฏ",
"userAlreadyExistsOAuthMessage": "ผู้ใช้มีอยู่แล้วในฐานะผู้ใช้ OAuth2",
"userAlreadyExistsWebMessage": "ผู้ใช้มีอยู่แล้วในฐานะผู้ใช้เว็บ",
"oops": "อุ๊ย!",
"help": "ช่วยเหลือ",
"goHomepage": "ไปที่หน้าหลัก",
"joinDiscord": "เข้าร่วมเซิร์ฟเวอร์ Discord ของเรา",
"seeDockerHub": "ดู Docker Hub",
"visitGithub": "เยี่ยมชมที่เก็บ Github",
"donate": "บริจาค",
"color": "สี",
"sponsor": "ผู้สนับสนุน",
"info": "ข้อมูล",
"pro": "โปร",
"page": "หน้า",
"pages": "หน้า",
"loading": "กำลังโหลด...",
"addToDoc": "เพิ่มเข้าสู่เอกสาร",
"reset": "Reset",
"apply": "Apply",
"noFileSelected": "No file selected. Please upload one.",
"legal": {
"privacy": "นโยบายความเป็นส่วนตัว",
"terms": "ข้อกำหนดการใช้งาน",
"accessibility": "ความเข้าถึง",
"cookie": "นโยบายคุกกี้",
"impressum": "ปฏิญญา",
"showCookieBanner": "Cookie Preferences"
},
"pipeline": {
"header": "เมนู Pipeline (เบต้า)",
"uploadButton": "อัปโหลดแบบกำหนดเอง",
"configureButton": "",
"defaultOption": "",
"submitButton": "",
"help": " Pipeline",
"scanHelp": "",
"deletePrompt": " pipeline ",
"tags": ", , , ",
"title": "ne"
},
"pipelineOptions": {
"header": " Pipeline",
"pipelineNameLabel": " Pipeline",
"saveSettings": "",
"pipelineNamePrompt": " pipeline ",
"selectOperation": "",
"addOperationButton": "",
"pipelineHeader": "Pipeline:",
"saveButton": "",
"validateButton": ""
},
"enterpriseEdition": {
"button": "",
"warning": "",
"yamlAdvert": "Stirling PDF Pro supports YAML configuration files and other SSO features.",
"ssoAdvert": "Looking for more user management features? Check out Stirling PDF Pro"
},
"analytics": {
"title": " Stirling PDF ?",
"paragraph1": "Stirling PDF ",
"paragraph2": " Stirling-PDF ",
"enable": "",
"disable": "",
"settings": " config/settings.yml"
},
"navbar": {
"favorite": "",
"recent": "New and recently updated",
"darkmode": "",
"language": "",
"settings": "",
"allTools": "",
"multiTool": "",
"search": "Search",
"sections": {
"organize": "",
"convertTo": " PDF",
"convertFrom": " PDF",
"security": "",
"advance": "",
"edit": "",
"popular": ""
}
},
"settings": {
"title": "",
"update": "",
"updateAvailable": "{0} ({1}) ",
"appVersion": ":",
"downloadOption": {
"title": " ( zip):",
"1": "",
"2": "",
"3": ""
},
"zipThreshold": "",
"signOut": "",
"accountSettings": "",
"bored": {
"help": " easter egg"
},
"cacheInputs": {
"name": "",
"help": ""
}
},
"changeCreds": {
"title": "",
"header": "",
"changePassword": " ",
"newUsername": "",
"oldPassword": "",
"newPassword": "",
"confirmNewPassword": "",
"submit": ""
},
"account": {
"title": "",
"accountSettings": "",
"adminSettings": " - ",
"userControlSettings": "",
"changeUsername": "",
"newUsername": "",
"password": "",
"oldPassword": "",
"newPassword": "",
"changePassword": "",
"confirmNewPassword": "",
"signOut": "",
"yourApiKey": " API ",
"syncTitle": "",
"settingsCompare": ":",
"property": "",
"webBrowserSettings": "",
"syncToBrowser": " -> ",
"syncToAccount": " <- "
},
"adminUserSettings": {
"title": "",
"header": "",
"admin": "",
"user": "",
"addUser": "",
"deleteUser": "",
"confirmDeleteUser": "?",
"confirmChangeUserStatus": "/?",
"usernameInfo": " @._+- ",
"roles": "",
"role": "",
"actions": "",
"apiUser": " API ",
"extraApiUser": " API ",
"webOnlyUser": "",
"demoUser": " ()",
"internalApiUser": " API ",
"forceChange": "",
"submit": "",
"changeUserRole": "",
"authenticated": "",
"editOwnProfil": "",
"enabledUser": "",
"disabledUser": "",
"activeUsers": ":",
"disabledUsers": ":",
"totalUsers": ":",
"lastRequest": "",
"usage": "View Usage"
},
"endpointStatistics": {
"title": "Endpoint Statistics",
"header": "Endpoint Statistics",
"top10": "Top 10",
"top20": "Top 20",
"all": "All",
"refresh": "Refresh",
"includeHomepage": "Include Homepage ('/')",
"includeLoginPage": "Include Login Page ('/login')",
"totalEndpoints": "Total Endpoints",
"totalVisits": "Total Visits",
"showing": "Showing",
"selectedVisits": "Selected Visits",
"endpoint": "Endpoint",
"visits": "Visits",
"percentage": "Percentage",
"loading": "Loading...",
"failedToLoad": "Failed to load endpoint data. Please try refreshing.",
"home": "Home",
"login": "Login",
"top": "Top",
"numberOfVisits": "Number of Visits",
"visitsTooltip": "Visits: {0} ({1}% of total)",
"retry": "Retry"
},
"database": {
"title": "/",
"header": "/",
"fileName": "",
"creationDate": "",
"fileSize": "",
"deleteBackupFile": "",
"importBackupFile": "",
"createBackupFile": "Create Backup File",
"downloadBackupFile": "",
"info_1": " ",
"info_2": " backup_user_yyyyMMddHHmm.sql ",
"submit": "",
"importIntoDatabaseSuccessed": "",
"backupCreated": "Database backup successful",
"fileNotFound": "",
"fileNullOrEmpty": "",
"failedImportFile": "",
"notSupported": "This function is not available for your database connection."
},
"session": {
"expired": " ",
"refreshPage": "Refresh Page"
},
"home": {
"desc": " PDF ",
"searchBar": "...",
"viewPdf": {
"title": "View/Edit PDF",
"desc": " "
},
"setFavorites": "Set Favourites",
"hideFavorites": "Hide Favourites",
"showFavorites": "Show Favourites",
"legacyHomepage": "Old homepage",
"newHomePage": "Try our new homepage!",
"alphabetical": "Alphabetical",
"globalPopularity": "Global Popularity",
"sortBy": "Sort by:",
"multiTool": {
"title": " PDF ",
"desc": " "
},
"merge": {
"title": " PDF",
"desc": " PDF "
},
"split": {
"title": " PDF",
"desc": " PDF "
},
"rotate": {
"title": "",
"desc": " PDF "
},
"imageToPDF": {
"title": " PDF",
"desc": " (PNG, JPEG, GIF) PDF"
},
"pdfToImage": {
"title": "PDF ",
"desc": " PDF (PNG, JPEG, GIF)"
},
"pdfOrganiser": {
"title": "",
"desc": "/ "
},
"addImage": {
"title": "",
"desc": " PDF"
},
"watermark": {
"title": "",
"desc": " PDF "
},
"permissions": {
"title": "",
"desc": " PDF "
},
"pageRemover": {
"title": "",
"desc": " PDF "
},
"addPassword": {
"title": "",
"desc": " PDF "
},
"removePassword": {
"title": "",
"desc": " PDF "
},
"compress": {
"title": "",
"desc": " PDF "
},
"unlockPDFForms": {
"title": "Unlock PDF Forms",
"desc": "Remove read-only property of form fields in a PDF document."
},
"changeMetadata": {
"title": "",
"desc": "// PDF"
},
"fileToPDF": {
"title": " PDF",
"desc": " PDF (DOCX, PNG, XLS, PPT, TXT )"
},
"ocr": {
"title": "OCR / ",
"desc": " PDF "
},
"extractImages": {
"title": "",
"desc": " PDF zip"
},
"pdfToPDFA": {
"title": "PDF PDF/A",
"desc": " PDF PDF/A "
},
"PDFToWord": {
"title": "PDF Word",
"desc": " PDF Word (DOC, DOCX ODT)"
},
"PDFToPresentation": {
"title": "PDF Presentation",
"desc": " PDF Presentation (PPT, PPTX ODP)"
},
"PDFToText": {
"title": "PDF RTF (Text)",
"desc": " PDF RTF"
},
"PDFToHTML": {
"title": "PDF HTML",
"desc": " PDF HTML"
},
"PDFToXML": {
"title": "PDF XML",
"desc": " PDF XML"
},
"ScannerImageSplit": {
"title": "/",
"desc": "/ PDF"
},
"sign": {
"title": "",
"desc": " PDF "
},
"flatten": {
"title": "",
"desc": " PDF"
},
"repair": {
"title": "",
"desc": " PDF /"
},
"removeBlanks": {
"title": "",
"desc": ""
},
"removeAnnotations": {
"title": "",
"desc": "/ PDF"
},
"compare": {
"title": "",
"desc": " PDF "
},
"certSign": {
"title": "",
"desc": " PDF / (PEM/P12)"
},
"removeCertSign": {
"title": "",
"desc": " PDF"
},
"pageLayout": {
"title": "",
"desc": " PDF "
},
"scalePages": {
"title": "/",
"desc": "//"
},
"pipeline": {
"title": "",
"desc": " PDF pipeline"
},
"addPageNumbers": {
"title": "",
"desc": ""
},
"auto-rename": {
"title": " PDF ",
"desc": " PDF "
},
"adjustContrast": {
"title": "/",
"desc": " PDF"
},
"crop": {
"title": " PDF",
"desc": " PDF (!)"
},
"autoSplitPDF": {
"title": "",
"desc": " PDF QR Code "
},
"sanitizePDF": {
"title": "",
"desc": " PDF"
},
"URLToPDF": {
"title": "URL/ PDF",
"desc": " URL http(s) PDF"
},
"HTMLToPDF": {
"title": "HTML PDF",
"desc": " HTML zip PDF"
},
"MarkdownToPDF": {
"title": "Markdown PDF",
"desc": " Markdown PDF"
},
"PDFToMarkdown": {
"title": "PDF to Markdown",
"desc": "Converts any PDF to Markdown"
},
"getPdfInfo": {
"title": " PDF",
"desc": " PDF"
},
"pageExtracter": {
"title": "",
"desc": " PDF"
},
"pdfToSinglePage": {
"title": "",
"desc": " PDF "
},
"showJS": {
"title": " Javascript",
"desc": " Javascript PDF"
},
"autoRedact": {
"title": "",
"desc": " PDF "
},
"redact": {
"title": "Manual Redaction",
"desc": "Redacts a PDF based on selected text, drawn shapes and/or selected page(s)"
},
"PDFToCSV": {
"title": "PDF CSV",
"desc": " PDF CSV"
},
"split-by-size-or-count": {
"title": "/",
"desc": " PDF "
},
"overlay-pdfs": {
"title": " PDF",
"desc": " PDF PDF "
},
"split-by-sections": {
"title": " PDF ",
"desc": " PDF "
},
"AddStampRequest": {
"title": " PDF",
"desc": ""
},
"removeImage": {
"title": " PDF",
"desc": " PDF "
},
"splitByChapters": {
"title": "Split PDF by Chapters",
"desc": "Split a PDF into multiple files based on its chapter structure."
},
"validateSignature": {
"title": "Validate PDF Signature",
"desc": "Verify digital signatures and certificates in PDF documents"
},
"replace-color": {
"title": "Replace and Invert Color",
"desc": "Replace color for text and background in PDF and invert full color of pdf to reduce file size"
}
},
"viewPdf": {
"tags": ", , , , ",
"title": "View/Edit PDF",
"header": " PDF"
},
"multiTool": {
"tags": ", , UI, , , , , ",
"title": " PDF ",
"header": " PDF ",
"uploadPrompts": "",
"selectAll": "Select All",
"deselectAll": "Deselect All",
"selectPages": "Page Select",
"selectedPages": "Selected Pages",
"page": "Page",
"deleteSelected": "Delete Selected",
"downloadAll": "Export",
"downloadSelected": "Export Selected",
"insertPageBreak": "Insert Page Break",
"addFile": "Add File",
"rotateLeft": "Rotate Left",
"rotateRight": "Rotate Right",
"split": "Split",
"moveLeft": "Move Left",
"moveRight": "Move Right",
"delete": "Delete",
"dragDropMessage": "Page(s) Selected",
"undo": "Undo",
"redo": "Redo"
},
"merge": {
"tags": ", , ",
"title": "",
"header": " PDF (2 )",
"sortByName": "",
"sortByDate": "",
"removeCertSign": "?",
"submit": ""
},
"split": {
"tags": ", , , , ",
"title": " PDF",
"header": " PDF",
"desc": {
"1": "",
"2": " 1,3,7-9 10 PDF 6 :",
"3": " #1: 1",
"4": " #2: 2 3",
"5": " #3: 4, 5, 6, 7",
"6": " #4: 8",
"7": " #5: 9",
"8": " #6: 10"
},
"splitPages": ":",
"submit": ""
},
"rotate": {
"tags": "",
"title": " PDF",
"header": " PDF",
"selectAngle": " ( 90 ):",
"submit": ""
},
"imageToPdf": {
"tags": ", , JPG, , "
},
"pdfToImage": {
"tags": ", , JPG, , ",
"title": "PDF ",
"header": "PDF ",
"selectText": "",
"singleOrMultiple": "",
"single": "",
"multi": "",
"colorType": "",
"color": "",
"grey": "",
"blackwhite": " (!)",
"submit": "",
"info": "Python WebP",
"placeholder": "( 1,2,8 4,7,12-16 2n-1)"
},
"pdfOrganiser": {
"tags": ", , , ",
"title": "",
"header": " PDF",
"submit": "",
"mode": {
"_value": "",
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "-",
"7": "",
"8": "",
"9": "",
"10": "-",
"11": "Duplicate all pages"
},
"placeholder": "( 1,3,2 4-8,2,10-12 2n-1)"
},
"addImage": {
"tags": ", JPG, , ",
"title": "",
"header": " PDF",
"everyPage": "?",
"upload": "",
"submit": ""
},
"watermark": {
"tags": ", , , , , , , JPG, , ",
"title": "",
"header": "",
"customColor": "",
"selectText": {
"1": " PDF :",
"2": ":",
"3": ":",
"4": " (0-360):",
"5": " ():",
"6": " ():",
"7": " (0% - 100%):",
"8": ":",
"9": ":",
"10": "Convert PDF to PDF-Image"
},
"submit": "",
"type": {
"1": "",
"2": ""
}
},
"permissions": {
"tags": ", , , ",
"title": "",
"header": "",
"warning": ": ",
"selectText": {
"1": " PDF ",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "",
"7": "",
"8": "",
"9": "",
"10": ""
},
"submit": ""
},
"removePages": {
"tags": ", "
},
"addPassword": {
"tags": ", ",
"title": "",
"header": " ()",
"selectText": {
"1": " PDF ",
"2": "",
"3": "",
"4": " ",
"5": " ()",
"6": "",
"7": "",
"8": "",
"9": "",
"10": "",
"11": "",
"12": "",
"13": "",
"14": "",
"15": " ()",
"16": ""
},
"submit": ""
},
"removePassword": {
"tags": ", , , ",
"title": "",
"header": " ()",
"selectText": {
"1": " PDF ",
"2": ""
},
"submit": ""
},
"compressPdfs": {
"tags": ", , "
},
"unlockPDFForms": {
"tags": "remove,delete,form,field,readonly",
"title": "Remove Read-Only from Form Fields",
"header": "Unlock PDF Forms",
"submit": "Remove"
},
"changeMetadata": {
"tags": ", , , , , , , ",
"title": "",
"header": "",
"selectText": {
"1": "",
"2": "",
"3": ":",
"4": " :",
"5": ""
},
"author": ":",
"creationDate": " (yyyy/MM/dd HH:mm:ss):",
"creator": ":",
"keywords": ":",
"modDate": " (yyyy/MM/dd HH:mm:ss):",
"producer": ":",
"subject": ":",
"trapped": ":",
"submit": ""
},
"fileToPDF": {
"tags": ", , , , , , , , , Word, Excel, PowerPoint",
"title": " PDF",
"header": " PDF",
"credit": " LibreOffice Unoconv ",
"supportedFileTypesInfo": "",
"supportedFileTypes": " LibreOffice",
"submit": " PDF"
},
"ocr": {
"tags": ", , , , , , , ",
"title": "OCR / ",
"header": " / OCR ()",
"selectText": {
"1": " PDF ():",
"2": " OCR PDF OCR ",
"3": "",
"4": " OCR ()",
"5": " OCR ",
"6": " OCR ",
"7": " OCR OCR ",
"8": " ( PDF )",
"9": "",
"10": " OCR",
"11": " OCR (, )",
"12": " ()"
},
"help": " / docker",
"credit": " qpdf Tesseract OCR",
"submit": " PDF OCR"
},
"extractImages": {
"tags": ", , , , zip, , ",
"title": "",
"header": "",
"selectText": "",
"allowDuplicates": "",
"submit": ""
},
"pdfToPDFA": {
"tags": ", , , , ",
"title": "PDF PDF/A",
"header": "PDF PDF/A",
"credit": " libreoffice PDF/A",
"submit": "",
"tip": "",
"outputFormat": "",
"pdfWithDigitalSignature": "PDF "
},
"PDFToWord": {
"tags": "doc, docx, odt, word, , , , , microsoft, docfile",
"title": "PDF Word",
"header": "PDF Word",
"selectText": {
"1": ""
},
"credit": " LibreOffice ",
"submit": ""
},
"PDFToPresentation": {
"tags": ", , , microsoft",
"title": "PDF Presentation",
"header": "PDF Presentation",
"selectText": {
"1": ""
},
"credit": " LibreOffice ",
"submit": ""
},
"PDFToText": {
"tags": ", rich text format",
"title": "PDF RTF (Text)",
"header": "PDF RTF (Text)",
"selectText": {
"1": ""
},
"credit": " LibreOffice ",
"submit": ""
},
"PDFToHTML": {
"tags": ", ",
"title": "PDF HTML",
"header": "PDF HTML",
"credit": " pdftohtml ",
"submit": ""
},
"PDFToXML": {
"tags": ", , , ",
"title": "PDF XML",
"header": "PDF XML",
"credit": " LibreOffice ",
"submit": ""
},
"ScannerImageSplit": {
"tags": ", , , , ",
"selectText": {
"1": ":",
"2": " (: 10)",
"3": ":",
"4": " (: 30)",
"5": ":",
"6": " (: 10000)",
"7": ":",
"8": "",
"9": ":",
"10": " (: 1)"
},
"info": "Python "
},
"sign": {
"tags": ", , , , ",
"title": "",
"header": " PDF",
"upload": "",
"draw": "",
"text": "",
"clear": "",
"add": "",
"saved": "",
"save": "",
"personalSigs": "",
"sharedSigs": "",
"noSavedSigs": "",
"addToAll": "Add to all pages",
"delete": "Delete",
"first": "First page",
"last": "Last page",
"next": "Next page",
"previous": "Previous page",
"maintainRatio": "Toggle maintain aspect ratio",
"undo": "Undo",
"redo": "Redo"
},
"flatten": {
"tags": ", , , ",
"title": "",
"header": " PDF",
"flattenOnlyForms": "",
"submit": ""
},
"repair": {
"tags": ", , ",
"title": "",
"header": " PDF",
"submit": ""
},
"removeBlanks": {
"tags": ", , , ",
"title": "",
"header": "",
"threshold": ":",
"thresholdDesc": " '' 0 = , 255 = ",
"whitePercent": " (%):",
"whitePercentDesc": " '' ",
"submit": ""
},
"removeAnnotations": {
"tags": ", , , , ",
"title": "",
"header": "",
"submit": ""
},
"compare": {
"tags": ", , , ",
"title": "",
"header": " PDF",
"highlightColor": {
"1": " 1:",
"2": " 2:"
},
"document": {
"1": " 1",
"2": " 2"
},
"submit": "",
"complex": {
"message": " "
},
"large": {
"file": {
"message": " "
}
},
"no": {
"text": {
"message": " PDF PDF "
}
}
},
"certSign": {
"tags": ", PEM, P12, , ",
"title": "",
"header": " PDF ()",
"selectPDF": " PDF :",
"jksNote": ": Java Keystore (.jks) keytool .jks ",
"selectKey": " ( PKCS#8, .pem .der):",
"selectCert": " ( X.509, .pem .der):",
"selectP12": " PKCS#12 Keystore (.p12 .pfx) ( ):",
"selectJKS": " Java Keystore (.jks .keystore):",
"certType": "",
"password": " Keystore ():",
"showSig": "",
"reason": "",
"location": "",
"name": "",
"showLogo": "",
"submit": " PDF"
},
"removeCertSign": {
"tags": ", PEM, P12, , ",
"title": "",
"header": " PDF",
"selectPDF": " PDF:",
"submit": ""
},
"pageLayout": {
"tags": ", , , ",
"title": "",
"header": "",
"pagesPerSheet": ":",
"addBorder": "",
"submit": ""
},
"scalePages": {
"tags": ", , , ",
"title": "",
"header": "",
"pageSize": "",
"keepPageSize": "",
"scaleFactor": " () ",
"submit": ""
},
"add-page-numbers": {
"tags": ", , , "
},
"auto-rename": {
"tags": ", , , ",
"title": "",
"header": " PDF ",
"submit": ""
},
"adjust-contrast": {
"tags": ", , , "
},
"crop": {
"tags": ", , , ",
"title": "",
"header": " PDF",
"submit": ""
},
"autoSplitPDF": {
"tags": " QR, , , ",
"title": "",
"header": " PDF ",
"description": " ",
"selectText": {
"1": " ()",
"2": "",
"3": " PDF Stirling PDF ",
"4": " "
},
"formPrompt": " PDF Stirling-PDF:",
"duplexMode": " Duplex ()",
"dividerDownload2": " 'Auto Splitter Divider (with instructions).pdf'",
"submit": ""
},
"sanitizePdf": {
"tags": ", , , "
},
"URLToPDF": {
"tags": ", , , ",
"title": "URL PDF",
"header": "URL PDF",
"submit": "",
"credit": " WeasyPrint"
},
"HTMLToPDF": {
"tags": ", , , ",
"title": "HTML PDF",
"header": "HTML PDF",
"help": " HTML ZIP html/css/ ",
"submit": "",
"credit": " WeasyPrint",
"zoom": "",
"pageWidth": " ()",
"pageHeight": " ()",
"marginTop": " ()",
"marginBottom": " ()",
"marginLeft": " ()",
"marginRight": " ()",
"printBackground": "",
"defaultHeader": " ()",
"cssMediaType": " CSS ",
"none": "",
"print": "",
"screen": ""
},
"MarkdownToPDF": {
"tags": ", , , ",
"title": "Markdown PDF",
"header": "Markdown PDF",
"submit": "",
"help": "",
"credit": " WeasyPrint"
},
"PDFToMarkdown": {
"tags": "markup,web-content,transformation,convert,md",
"title": "PDF To Markdown",
"header": "PDF To Markdown",
"submit": "Convert"
},
"getPdfInfo": {
"tags": ", , ",
"title": " PDF",
"header": " PDF",
"submit": "",
"downloadJson": " JSON"
},
"extractPage": {
"tags": ""
},
"PdfToSinglePage": {
"tags": ""
},
"showJS": {
"tags": "JS",
"title": " Javascript",
"header": " Javascript",
"downloadJS": " Javascript",
"submit": ""
},
"autoRedact": {
"tags": ", , ",
"title": "",
"header": "",
"colorLabel": "",
"textsToRedactLabel": " ()",
"textsToRedactPlaceholder": " \\nConfidential \\nTop-Secret",
"useRegexLabel": " Regex",
"wholeWordSearchLabel": "",
"customPaddingLabel": "",
"convertPDFToImageLabel": " PDF PDF ()",
"submitButton": ""
},
"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)"
},
"redactionColor": {
"title": "Redaction Color"
},
"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"
},
"tableExtraxt": {
"tags": "CSV, , , "
},
"autoSizeSplitPDF": {
"tags": "pdf, , , "
},
"overlay-pdfs": {
"tags": "",
"header": " PDF",
"baseFile": {
"label": " PDF "
},
"overlayFiles": {
"label": " PDF "
},
"mode": {
"label": "",
"sequential": "",
"interleaved": "",
"fixedRepeat": ""
},
"counts": {
"label": " ()",
"placeholder": " ( 2,3,1)"
},
"position": {
"label": "",
"foreground": "",
"background": ""
},
"submit": ""
},
"split-by-sections": {
"tags": ", , ",
"title": " PDF ",
"header": " PDF ",
"horizontal": {
"label": "",
"placeholder": ""
},
"vertical": {
"label": "",
"placeholder": ""
},
"submit": " PDF",
"merge": " PDF "
},
"AddStampRequest": {
"tags": ", , , , PDF, , ",
"header": " PDF",
"title": " PDF",
"stampType": "",
"stampText": "",
"stampImage": "",
"alphabet": "",
"fontSize": "/",
"rotation": "",
"opacity": "",
"position": "",
"overrideX": " X",
"overrideY": " Y",
"customMargin": "",
"customColor": "",
"submit": ""
},
"removeImagePdf": {
"tags": "Remove Image,Page operations,Back end,server side"
},
"splitPdfByChapters": {
"tags": "split,chapters,bookmarks,organize"
},
"validateSignature": {
"tags": "signature,verify,validate,pdf,certificate,digital signature,Validate Signature,Validate certificate",
"title": "Validate PDF Signatures",
"header": "Validate Digital Signatures",
"selectPDF": "Select signed PDF file",
"submit": "Validate Signatures",
"results": "Validation Results",
"status": {
"_value": "Status",
"valid": "Valid",
"invalid": "Invalid"
},
"signer": "Signer",
"date": "Date",
"reason": "Reason",
"location": "Location",
"noSignatures": "No digital signatures found in this document",
"chain": {
"invalid": "Certificate chain validation failed - cannot verify signer's identity"
},
"trust": {
"invalid": "Certificate not in trust store - source cannot be verified"
},
"cert": {
"expired": "Certificate has expired",
"revoked": "Certificate has been revoked",
"info": "Certificate Details",
"issuer": "Issuer",
"subject": "Subject",
"serialNumber": "Serial Number",
"validFrom": "Valid From",
"validUntil": "Valid Until",
"algorithm": "Algorithm",
"keySize": "Key Size",
"version": "Version",
"keyUsage": "Key Usage",
"selfSigned": "Self-Signed",
"bits": "bits"
},
"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"
},
"submit": "Replace"
},
"replaceColorPdf": {
"tags": "Replace Color,Page operations,Back end,server side"
},
"login": {
"title": "",
"header": "",
"signin": "",
"rememberme": "",
"invalid": "",
"locked": "",
"signinTitle": "",
"ssoSignIn": " Single Sign-on",
"oAuth2AutoCreateDisabled": " OAuth2 ",
"oAuth2AdminBlockedUser": "Registration or logging in of non-registered users is currently blocked. Please contact the administrator.",
"oauth2RequestNotFound": "",
"oauth2InvalidUserInfoResponse": "",
"oauth2invalidRequest": "",
"oauth2AccessDenied": "",
"oauth2InvalidTokenResponse": "",
"oauth2InvalidIdToken": " Id ",
"relyingPartyRegistrationNotFound": "No relying party registration found",
"userIsDisabled": " ",
"alreadyLoggedIn": "",
"alreadyLoggedIn2": " ",
"toManySessions": "",
"logoutMessage": "You have been logged out."
},
"pdfToSinglePage": {
"title": "PDF ",
"header": "PDF ",
"submit": ""
},
"pageExtracter": {
"title": "",
"header": "",
"submit": "",
"placeholder": "( 1,2,8 4,7,12-16 2n-1)"
},
"sanitizePDF": {
"title": " PDF",
"header": " PDF",
"selectText": {
"1": " JavaScript",
"2": "",
"3": "Remove XMP metadata",
"4": "",
"5": "",
"6": "Remove Document Info Metadata"
},
"submit": " PDF"
},
"adjustContrast": {
"title": "",
"header": "",
"contrast": ":",
"brightness": ":",
"saturation": ":",
"download": ""
},
"compress": {
"title": "",
"header": " PDF",
"credit": " qpdf / PDF",
"grayscale": {
"label": ""
},
"selectText": {
"1": {
"_value": "Compression Settings",
"1": "1-3 PDF compression,</br> 4-6 lite image compression,</br> 7-9 intense image compression Will dramatically reduce image quality"
},
"2": ":",
"4": " - PDF ",
"5": " PDF ( 25MB, 10.8MB, 25KB)"
},
"submit": ""
},
"decrypt": {
"passwordPrompt": "This file is password-protected. Please enter the password:",
"cancelled": "Operation cancelled for PDF: {0}",
"noPassword": "No password provided for encrypted PDF: {0}",
"invalidPassword": "Please try again with the correct password.",
"invalidPasswordHeader": "Incorrect password or unsupported encryption for PDF: {0}",
"unexpectedError": "There was an error processing the file. Please try again.",
"serverError": "Server error while decrypting: {0}",
"success": "File decrypted successfully."
},
"multiTool-advert": {
"message": "This feature is also available in our <a href=\"{0}\">multi-tool page</a>. Check it out for enhanced page-by-page UI and additional features!"
},
"pageRemover": {
"title": "ตัวลบหน้า",
"header": "ตัวลบหน้า PDF",
"pagesToDelete": "หน้าที่จะลบ (ป้อนหมายเลขหน้าแยกด้วยเครื่องหมายจุลภาค):",
"submit": "ลบหน้า",
"placeholder": "(เช่น 1,2,6 หรือ 1-10,15-30)"
},
"imageToPDF": {
"title": "รูปภาพเป็น PDF",
"header": "รูปภาพเป็น PDF",
"submit": "แปลง",
"selectLabel": "ตัวเลือกการใส่ภาพ",
"fillPage": "เติมหน้า",
"fitDocumentToImage": "ปรับหน้าให้พอดีกับภาพ",
"maintainAspectRatio": "รักษาอัตราส่วนกว้างยาว",
"selectText": {
"2": "หมุน PDF อัตโนมัติ",
"3": "ตรรกะหลายไฟล์ (เปิดใช้งานเฉพาะเมื่อทำงานกับหลายภาพ)",
"4": "รวมเป็น PDF เดียว",
"5": "แปลงเป็น PDF แยก"
}
},
"PDFToCSV": {
"title": "PDF เป็น CSV",
"header": "PDF เป็น CSV",
"prompt": "เลือกหน้าที่ต้องการแยกตาราง",
"submit": "แยก"
},
"split-by-size-or-count": {
"title": "แยก PDF ตามขนาดหรือจำนวน",
"header": "แยก PDF ตามขนาดหรือจำนวน",
"type": {
"label": "เลือกประเภทการแยก",
"size": "ตามขนาด",
"pageCount": "ตามจำนวนหน้า",
"docCount": "ตามจำนวนเอกสาร"
},
"value": {
"label": "ป้อนค่า",
"placeholder": "ป้อนขนาด (เช่น 2MB หรือ 3KB) หรือจำนวน (เช่น 5)"
},
"submit": "ส่ง"
},
"printFile": {
"title": "พิมพ์ไฟล์",
"header": "พิมพ์ไฟล์ไปยังเครื่องพิมพ์",
"selectText": {
"1": "เลือกไฟล์ที่จะพิมพ์",
"2": "ป้อนชื่อเครื่องพิมพ์"
},
"submit": "พิมพ์"
},
"licenses": {
"nav": "ใบอนุญาต",
"title": "ใบอนุญาตบุคคลที่สาม",
"header": "ใบอนุญาตบุคคลที่สาม",
"module": "โมดูล",
"version": "เวอร์ชัน",
"license": "ใบอนุญาต"
},
"survey": {
"nav": "สำรวจ",
"title": "สำรวจ Stirling-PDF",
"description": "Stirling-PDF ไม่มีการติดตาม ดังนั้นเราต้องการฟังความคิดเห็นจากผู้ใช้เพื่อปรับปรุง Stirling-PDF!",
"changes": "Stirling-PDF ได้มีการเปลี่ยนแปลงตั้งแต่การสำรวจครั้งล่าสุด! กรุณาตรวจสอบบล็อกของเราที่นี้เพื่อรับข้อมูลเพิ่มเติม:",
"changes2": "ด้วยการเปลี่ยนแปลงเหล่านี้เราได้รับการสนับสนุนทางธุรกิจและการเงินจากผู้ประกอบการ",
"please": "กรุณาพิจารณาการสำรวจของเรา!",
"disabled": "(ป๊อปอัปการสำรวจจะถูกปิดใช้งานในการอัปเดตต่อไปนี้ แต่สามารถใช้ได้ที่ส่วนท้ายของหน้า)",
"button": "เริ่มสำรวจ",
"dontShowAgain": "ไม่ต้องแสดงอีก",
"meeting": {
"1": "If you're using Stirling PDF at work, we'd love to speak to you. We're offering technical support sessions in exchange for a 15 minute user discovery session.",
"2": "This is a chance to:",
"3": "Get help with deployment, integrations, or troubleshooting",
"4": "Provide direct feedback on performance, edge cases, and feature gaps",
"5": "Help us refine Stirling PDF for real-world enterprise use",
"6": "If you're interested, you can book time with our team directly. (English speaking only)",
"7": "Looking forward to digging into your use cases and making Stirling PDF even better!",
"notInterested": "Not a business and/or interested in a meeting?",
"button": "Book meeting"
}
},
"removeImage": {
"title": "ลบภาพ",
"header": "ลบภาพ",
"removeImage": "ลบภาพ",
"submit": "ยืนยันการลบภาพ"
},
"splitByChapters": {
"title": "แบ่งไฟล์ PDF ตามหมวดหมู่",
"header": "แบ่งไฟล์ PDF ตามหมวดหมู่",
"bookmarkLevel": "ระดับบุคคลที่ได้รับเลือก",
"includeMetadata": "รวมข้อมูลเสริม",
"allowDuplicates": "อนุญาตให้มีการซ้ำ",
"desc": {
"1": "เครื่องมือนี้จะแบ่งไฟล์ PDF ออกเป็นหลายไฟล์ PDF ตามโครงสร้างหมวดหมู่ของไฟล์นั้นๆ",
"2": "ระดับบุคคลที่ได้รับเลือก: เลือกระดับบุคคลที่ได้รับเลือกที่จะใช้ในการแบ่ง (0 สำหรับระดับต้น, 1 สำหรับระดับที่สอง เป็นต้น)",
"3": "รวมข้อมูลเสริม: หากถูกเลือก ข้อมูลเสริมของไฟล์ PDF ที่เดิมจะถูกรวมอยู่ในแต่ละไฟล์ที่แบ่งออก",
"4": "อนุญาตให้มีการซ้ำ: หากถูกเลือก จะทำให้สามารถสร้างไฟล์ PDF แยกออกมาจากหน้าเดียวกันได้หลายรายการ"
},
"submit": "แบ่งไฟล์ PDF"
},
"fileChooser": {
"click": "Click",
"or": "or",
"dragAndDrop": "Drag & Drop",
"dragAndDropPDF": "Drag & Drop PDF file",
"dragAndDropImage": "Drag & Drop Image file",
"hoveredDragAndDrop": "Drag & Drop file(s) here",
"extractPDF": "Extracting..."
},
"releases": {
"footer": "Releases",
"title": "Release Notes",
"header": "Release Notes",
"current": {
"version": "Current Release"
},
"note": "Release notes are only available in English"
},
"cookieBanner": {
"popUp": {
"title": "How we use Cookies",
"description": {
"1": "We use cookies and other technologies to make Stirling PDF work better for you—helping us improve our tools and keep building features you'll love.",
"2": "If youd rather not, clicking 'No Thanks' will only enable the essential cookies needed to keep things running smoothly."
},
"acceptAllBtn": "Okay",
"acceptNecessaryBtn": "No Thanks",
"showPreferencesBtn": "Manage preferences"
},
"preferencesModal": {
"title": "Consent Preferences Center",
"acceptAllBtn": "Accept all",
"acceptNecessaryBtn": "Reject all",
"savePreferencesBtn": "Save preferences",
"closeIconLabel": "Close modal",
"serviceCounterLabel": "Service|Services",
"subtitle": "Cookie Usage",
"description": {
"1": "Stirling PDF uses cookies and similar technologies to enhance your experience and understand how our tools are used. This helps us improve performance, develop the features you care about, and provide ongoing support to our users.",
"2": "Stirling PDF cannot—and will never—track or access the content of the documents you use.",
"3": "Your privacy and trust are at the core of what we do."
},
"necessary": {
"title": {
"1": "Strictly Necessary Cookies",
"2": "Always Enabled"
},
"description": "These cookies are essential for the website to function properly. They enable core features like setting your privacy preferences, logging in, and filling out forms—which is why they cant be turned off."
},
"analytics": {
"title": "Analytics",
"description": "These cookies help us understand how our tools are being used, so we can focus on building the features our community values most. Rest assured—Stirling PDF cannot and will never track the content of the documents you work with."
}
}
}
}