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
61 KiB
JSON
Raw Permalink 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": "번호를 매길 페이지, 기본값 'all', 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": "경고: 이 과정은 파일 크기에 따라 최대 1분이 소요될 수 있습니다",
"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": "스택 추적 표시",
"copyStack": "스택 추적 복사",
"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": "초기화",
"apply": "적용",
"noFileSelected": "No file selected. Please upload one.",
"legal": {
"privacy": "개인정보 처리방침",
"terms": "이용약관",
"accessibility": "접근성",
"cookie": "쿠키 정책",
"impressum": "법적 고지",
"showCookieBanner": "Cookie Preferences"
},
"pipeline": {
"header": "파이프라인 메뉴 (베타)",
"uploadButton": "사용자 지정 업로드",
"configureButton": "구성",
"defaultOption": "사용자 지정",
"submitButton": "제출",
"help": "파이프라인 도움말",
"scanHelp": "폴더 스캔 도움말",
"deletePrompt": "파이프라인을 삭제하시겠습니까?",
"tags": "자동화,순서,스크립트,일괄-처리",
"title": "파이프라인"
},
"pipelineOptions": {
"header": "파이프라인 구성",
"pipelineNameLabel": "파이프라인 이름",
"saveSettings": "작업 설정 저장",
"pipelineNamePrompt": "여기에 파이프라인 이름 입력",
"selectOperation": "작업 선택",
"addOperationButton": "작업 추가",
"pipelineHeader": "파이프라인:",
"saveButton": "다운로드",
"validateButton": "검증"
},
"enterpriseEdition": {
"button": "프로 버전으로 업그레이드",
"warning": "이 기능은 프로 사용자만 이용할 수 있습니다.",
"yamlAdvert": "Stirling PDF 프로는 YAML 구성 파일과 기타 SSO 기능을 지원합니다.",
"ssoAdvert": "더 많은 사용자 관리 기능을 찾고 계신가요? 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": "검색",
"sections": {
"organize": "구성",
"convertTo": "PDF로 변환",
"convertFrom": "PDF에서 변환",
"security": "서명 & 보안",
"advance": "고급",
"edit": "보기 & 편집",
"popular": "인기"
}
},
"settings": {
"title": "설정",
"update": "업데이트 가능",
"updateAvailable": "{0}은(는) 현재 설치된 버전입니다. 새 버전({1})이 사용 가능합니다.",
"appVersion": "앱 버전:",
"downloadOption": {
"title": "다운로드 옵션 선택 (단일 파일 비압축 다운로드용):",
"1": "같은 창에서 열기",
"2": "새 창에서 열기",
"3": "파일 다운로드"
},
"zipThreshold": "다운로드 파일 수가 다음을 초과할 때 ZIP으로 압축",
"signOut": "로그아웃",
"accountSettings": "계정 설정",
"bored": {
"help": "이스터에그 게임 활성화"
},
"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": "백업 파일 생성",
"downloadBackupFile": "백업 파일 다운로드",
"info_1": " . . .",
"info_2": " . backup_user_yyyyMMddHHmm.sql .",
"submit": " ",
"importIntoDatabaseSuccessed": " ",
"backupCreated": " ",
"fileNotFound": " ",
"fileNullOrEmpty": " null ",
"failedImportFile": " ",
"notSupported": " ."
},
"session": {
"expired": " . .",
"refreshPage": " "
},
"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": "",
"desc": " PDF ."
},
"split": {
"title": "",
"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 ",
"desc": "PDF (PPT, PPTX ODP)"
},
"PDFToText": {
"title": "PDF RTF()",
"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": "2 PDF "
},
"certSign": {
"title": " ",
"desc": "/(PEM/P12) PDF "
},
"removeCertSign": {
"title": " ",
"desc": "PDF "
},
"pageLayout": {
"title": " ",
"desc": "PDF "
},
"scalePages": {
"title": " / ",
"desc": " / ."
},
"pipeline": {
"title": "",
"desc": " PDF "
},
"addPageNumbers": {
"title": " ",
"desc": " "
},
"auto-rename": {
"title": "PDF ",
"desc": " PDF "
},
"adjustContrast": {
"title": "/ ",
"desc": "PDF , "
},
"crop": {
"title": "PDF ",
"desc": "PDF ( !)"
},
"autoSplitPDF": {
"title": " ",
"desc": " QR PDF "
},
"sanitizePDF": {
"title": "",
"desc": "PDF "
},
"URLToPDF": {
"title": "URL/ PDF",
"desc": "http(s) URL PDF "
},
"HTMLToPDF": {
"title": "HTML PDF",
"desc": "HTML zip PDF "
},
"MarkdownToPDF": {
"title": "Markdown PDF",
"desc": "Markdown PDF "
},
"PDFToMarkdown": {
"title": "PDF Markdown",
"desc": "PDF Markdown "
},
"getPdfInfo": {
"title": "PDF ",
"desc": "PDF "
},
"pageExtracter": {
"title": " ",
"desc": "PDF "
},
"pdfToSinglePage": {
"title": " ",
"desc": " PDF "
},
"showJS": {
"title": "JavaScript ",
"desc": "PDF JavaScript "
},
"autoRedact": {
"title": " ",
"desc": " PDF ()"
},
"redact": {
"title": " ",
"desc": " , / PDF "
},
"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": " ",
"desc": " PDF "
},
"splitByChapters": {
"title": " PDF ",
"desc": "PDF ."
},
"validateSignature": {
"title": "PDF ",
"desc": "PDF "
},
"replace-color": {
"title": " ",
"desc": "PDF PDF "
}
},
"viewPdf": {
"tags": ",,,,",
"title": "View/Edit PDF",
"header": "PDF "
},
"multiTool": {
"tags": " , ,UI, ,, ,,,,,,",
"title": "PDF ",
"header": "PDF ",
"uploadPrompts": " ",
"selectAll": " ",
"deselectAll": " ",
"selectPages": " ",
"selectedPages": " ",
"page": "",
"deleteSelected": " ",
"downloadAll": "",
"downloadSelected": " ",
"insertPageBreak": " ",
"addFile": " ",
"rotateLeft": " ",
"rotateRight": " ",
"split": "",
"moveLeft": " ",
"moveRight": " ",
"delete": "",
"dragDropMessage": " ",
"undo": " ",
"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 6 PDF :",
"3": " #1: 1",
"4": " #2: 2-3",
"5": " #3: 4-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": "WebP Python . Python .",
"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": "PDF PDF- "
},
"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": ",,,,,,,,,,,",
"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": " OCR qpdf Tesseract .",
"submit": "OCR PDF "
},
"extractImages": {
"tags": ",,,zip,,",
"title": " ",
"header": " ",
"selectText": " ",
"allowDuplicates": " ",
"submit": ""
},
"pdfToPDFA": {
"tags": ",,,,,",
"title": "PDF PDF/A",
"header": "PDF PDF/A",
"credit": " PDF/A libreoffice ",
"submit": "",
"tip": " ",
"outputFormat": " ",
"pdfWithDigitalSignature": "PDF . ."
},
"PDFToWord": {
"tags": "doc,docx,odt,,,,,,,docfile",
"title": "PDF Word",
"header": "PDF Word",
"selectText": {
"1": " "
},
"credit": " LibreOffice .",
"submit": ""
},
"PDFToPresentation": {
"tags": ",,,",
"title": "PDF ",
"header": "PDF ",
"selectText": {
"1": " "
},
"credit": " LibreOffice .",
"submit": ""
},
"PDFToText": {
"tags": ",, ",
"title": "PDF RTF()",
"header": "PDF RTF()",
"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": " ",
"delete": "",
"first": " ",
"last": " ",
"next": " ",
"previous": " ",
"maintainRatio": " ",
"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": ": keytool Java (.jks) .jks .",
"selectKey": " (PKCS#8 , .pem .der):",
"selectCert": " (X.509 , .pem .der):",
"selectP12": "PKCS#12 (.p12 .pfx) ( , ):",
"selectJKS": "Java (.jks .keystore):",
"certType": " ",
"password": " ( ):",
"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": " PDF ",
"header": " PDF ",
"description": ", , , . .",
"selectText": {
"1": " ( ).",
"2": " .",
"3": " PDF Stirling PDF .",
"4": " ."
},
"formPrompt": "Stirling-PDF PDF :",
"duplexMode": " ( )",
"dividerDownload2": "' ( )' 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 html/css/ ZIP ",
"submit": "",
"credit": "WeasyPrint ",
"zoom": " / .",
"pageWidth": " - ( )",
"pageHeight": " - ( )",
"marginTop": " - ( )",
"marginBottom": " - ( )",
"marginLeft": " - ( )",
"marginRight": " - ( )",
"printBackground": " .",
"defaultHeader": " ( )",
"cssMediaType": " CSS .",
"none": "",
"print": "",
"screen": ""
},
"MarkdownToPDF": {
"tags": ",-,,,md",
"title": "Markdown PDF",
"header": "Markdown PDF",
"submit": "",
"help": " ",
"credit": "WeasyPrint "
},
"PDFToMarkdown": {
"tags": ",-,,,md",
"title": "PDF Markdown",
"header": "PDF Markdown",
"submit": ""
},
"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": ": \\n \\n ",
"useRegexLabel": " ",
"wholeWordSearchLabel": " ",
"customPaddingLabel": " ",
"convertPDFToImageLabel": "PDF PDF-Image ( )",
"submitButton": ""
},
"redact": {
"tags": ",,-,,,,",
"title": " ",
"header": " ",
"submit": "",
"textBasedRedaction": " ",
"pageBasedRedaction": " ",
"convertPDFToImageLabel": "PDF PDF- ( )",
"pageRedactionNumbers": {
"title": "",
"placeholder": "(: 1,2,8 4,7,12-16 2n-1)"
},
"redactionColor": {
"title": " "
},
"export": "",
"upload": "",
"boxRedaction": " ",
"zoom": "/",
"zoomIn": "",
"zoomOut": "",
"nextPage": " ",
"previousPage": " ",
"toggleSidebar": " ",
"showThumbnails": " ",
"showDocumentOutline": " ( /)",
"showAttatchments": " ",
"showLayers": " ( )",
"colourPicker": " ",
"findCurrentOutlineItem": " ",
"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": " , ,, "
},
"splitPdfByChapters": {
"tags": ",,,"
},
"validateSignature": {
"tags": ",,,pdf,, , , ",
"title": "PDF ",
"header": " ",
"selectPDF": " PDF ",
"submit": " ",
"results": " ",
"status": {
"_value": "",
"valid": "",
"invalid": " "
},
"signer": "",
"date": "",
"reason": "",
"location": "",
"noSignatures": " ",
"chain": {
"invalid": " - "
},
"trust": {
"invalid": " - "
},
"cert": {
"expired": " ",
"revoked": " ",
"info": " ",
"issuer": "",
"subject": "",
"serialNumber": "",
"validFrom": " ",
"validUntil": " ",
"algorithm": "",
"keySize": " ",
"version": "",
"keyUsage": " ",
"selfSigned": " ",
"bits": ""
},
"signature": {
"info": " ",
"_value": "",
"mathValid": " :"
},
"selectCustomCert": " X.509 ()"
},
"replace-color": {
"title": " -",
"header": "PDF -",
"selectText": {
"1": " ",
"2": "( )",
"3": " ( )",
"4": " ( )",
"5": " ",
"6": " ",
"7": " ",
"8": " ",
"9": " ",
"10": " ",
"11": " "
},
"submit": ""
},
"replaceColorPdf": {
"tags": " , ,, "
},
"login": {
"title": "",
"header": "",
"signin": "",
"rememberme": " ",
"invalid": " .",
"locked": " .",
"signinTitle": " ",
"ssoSignIn": " ",
"oAuth2AutoCreateDisabled": "OAuth2 ",
"oAuth2AdminBlockedUser": " . .",
"oauth2RequestNotFound": " ",
"oauth2InvalidUserInfoResponse": " ",
"oauth2invalidRequest": " ",
"oauth2AccessDenied": " ",
"oauth2InvalidTokenResponse": " ",
"oauth2InvalidIdToken": " ID ",
"relyingPartyRegistrationNotFound": " ",
"userIsDisabled": " . .",
"alreadyLoggedIn": " ",
"alreadyLoggedIn2": " . .",
"toManySessions": " ",
"logoutMessage": "You have been logged out."
},
"pdfToSinglePage": {
"title": " ",
"header": " ",
"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": " PDF / qpdf .",
"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": " . :",
"cancelled": "PDF : {0}",
"noPassword": " PDF : {0}",
"invalidPassword": " .",
"invalidPasswordHeader": " . PDF: {0}",
"unexpectedError": " . .",
"serverError": " : {0}",
"success": " ."
},
"multiTool-advert": {
"message": " <a href=\"{0}\">멀티 도구 페이지</a>에서도 사용할 수 있습니다. 향상된 페이지별 UI와 추가 기능을 확인해보세요!"
},
"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": "제3자 라이선스",
"header": "제3자 라이선스",
"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의 메타데이터가 각 분할된 PDF에 포함됩니다.",
"4": "중복 허용: 체크하면 동일한 페이지의 여러 북마크가 별도의 PDF를 생성할 수 있습니다."
},
"submit": "PDF 분할"
},
"fileChooser": {
"click": "클릭",
"or": "또는",
"dragAndDrop": "드래그 앤 드롭",
"dragAndDropPDF": "PDF 파일을 드래그 앤 드롭",
"dragAndDropImage": "이미지 파일을 드래그 앤 드롭",
"hoveredDragAndDrop": "여기에 파일을 드래그 앤 드롭하세요",
"extractPDF": "추출 중..."
},
"releases": {
"footer": "릴리스",
"title": "릴리스 노트",
"header": "릴리스 노트",
"current": {
"version": "현재 릴리스"
},
"note": "릴리스 노트는 영어로만 제공됩니다"
},
"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."
}
}
}
}