Added localisation support with en and ar

This commit is contained in:
Saud Fatayerji 2023-11-05 14:13:34 +03:00
parent 35c5a457b7
commit 0d2d1726f8
9 changed files with 1959 additions and 43 deletions

View File

@ -14,10 +14,13 @@
"@tauri-apps/api": "^1.5.1",
"archiver": "^6.0.1",
"bootstrap": "^5.3.2",
"i18next": "^23.6.0",
"i18next-browser-languagedetector": "^7.1.0",
"path-browserify": "^1.0.1",
"react": "^18.2.0",
"react-bootstrap": "^2.9.1",
"react-dom": "^18.2.0",
"react-i18next": "^13.3.1",
"react-icons": "^4.11.0",
"react-router-bootstrap": "^0.26.2",
"react-router-dom": "^6.18.0"

View File

@ -1,3 +1,5 @@
import { Suspense } from 'react';
import { Routes, Route, Outlet } from "react-router-dom";
import Home from "./pages/Home";
import About from "./pages/About";
@ -6,11 +8,28 @@ import NoMatch from "./pages/NoMatch";
import NavBar from "./components/NavBar";
import 'bootstrap/dist/css/bootstrap.min.css';
import { Col, Container, Row } from "react-bootstrap";
import { Container } from "react-bootstrap";
import i18n from "i18next";
import { useTranslation, initReactI18next } from "react-i18next";
import LanguageDetector from 'i18next-browser-languagedetector';
import ar from './locales/ar.json';
import en from './locales/en.json';
import './general.css'
i18n
.use(LanguageDetector)
.use(initReactI18next) // passes i18n down to react-i18next
.init({
fallbackLng: "en",
resources: { ar,en },
});
export default function App() {
return (
<div>
<Suspense fallback="loading">
{/* Routes nest inside one another. Nested route paths build upon
parent route paths, and nested route elements render inside
parent route elements. See the note about <Outlet> below. */}
@ -26,13 +45,14 @@ export default function App() {
<Route path="*" element={<NoMatch />} />
</Route>
</Routes>
</div>
</Suspense>
);
}
function Layout() {
const { t } = useTranslation();
return (
<div>
<div lang-direction={t('language.direction')}>
<NavBar/>
{/* An <Outlet> renders whatever child route is currently active,

View File

@ -0,0 +1,30 @@
import NavDropdown from 'react-bootstrap/NavDropdown';
import { useTranslation } from 'react-i18next';
import { BsGlobe2 } from 'react-icons/bs';
function generateSublist() {
const { t, i18n } = useTranslation();
const out: JSX.Element[] = [];
const languages = i18n.options.resources;
for (var key in languages) {
const lang: any = languages[key].translation;
const staticKey = key;
out.push((
<NavDropdown.Item key={"language-"+key} className="nav-icon" onClick={()=>i18n.changeLanguage(staticKey)}>
<span>{lang.language?.flag}</span>
<span>{lang.language?.name}</span>
</NavDropdown.Item>
));
}
return <>{out}</>;
}
export default function LanguagePicker() {
return (
<NavDropdown id="languages-dropdown" title={<><span className="nav-icon"><BsGlobe2/></span></>}>
{generateSublist()}
</NavDropdown>
);
}

View File

@ -103,6 +103,8 @@
height: 16px;
vertical-align: middle;
transform: translateY(-2px);
margin-left: 4px;
margin-right: 4px;
}
/*
.icon+.icon {
@ -110,7 +112,8 @@
}
*/
.nav-icon span {
margin-left: 9px;
margin-left: 4px;
margin-right: 4px;
}
.nav-item-separator {

View File

@ -1,12 +1,19 @@
import { AiOutlineMergeCells, AiOutlineSplitCells } from "react-icons/ai";
import { BiCrop } from "react-icons/bi";
import {
BsTools, BsSortNumericDown, BsArrowClockwise, BsFileEarmarkX, BsLayoutSplit, BsPalette, BsArrowUpSquare, Bs1Square, BsFileEarmarkPdf,
BsArrowLeftRight, BsFileEarmarkImage, BsFileEarmark, BsFiletypeHtml, BsLink, BsFiletypeMd, BsFileEarmarkWord, BsFiletypePpt, BsFiletypeTxt,
BsFiletypeXml
BsFiletypeXml, BsLock, BsUnlock, BsShieldLock, BsDroplet, BsAward, BsEraserFill, BsCardList, BsClipboardData, BsFile, BsFileEarmarkRichtext,
BsFileZip, BsFiletypeJs, BsFonts, BsImages, BsInfoCircle, BsSearch, BsShieldCheck, BsVectorPen, BsWrench
} from "react-icons/bs";
import { AiOutlineMergeCells, AiOutlineSplitCells } from "react-icons/ai";
import { GiScales } from "react-icons/gi";
import { LuLayoutGrid } from "react-icons/lu";
import { MdOutlineScanner } from "react-icons/md";
import { PiArrowsInLineVertical } from "react-icons/pi";
import { SlSizeFullscreen } from "react-icons/sl";
import { BiCrop } from "react-icons/bi";
import { TfiSpray } from "react-icons/tfi";
import { TbNumbers } from "react-icons/tb";
import { IconType } from "react-icons";
import Container from 'react-bootstrap/Container';
@ -14,7 +21,9 @@ import Nav from 'react-bootstrap/Nav';
import Navbar from 'react-bootstrap/Navbar';
import NavDropdown from 'react-bootstrap/NavDropdown';
import { LinkContainer } from 'react-router-bootstrap';
import { useTranslation } from 'react-i18next';
import LanguagePicker from "./LanguagePicker";
import Logo from '../../public/stirling-pdf-logo.svg'
import './NavBar.css';
@ -36,53 +45,107 @@ function convertToNavLink(item: NavInfoItem, index: number) {
function convertToNavDropdownItem(item: NavInfoItem | null) {
if (item == null)
return <NavDropdown.Divider />;
return <LinkContainer to={item.dest}><NavDropdown.Item className="nav-icon" title={item.tooltip}><item.icon/><span>{item.displayText}</span></NavDropdown.Item></LinkContainer>;
return (
<LinkContainer to={item.dest}>
<NavDropdown.Item className="nav-icon" title={item.tooltip}>
<item.icon/>
<span>{item.displayText}</span>
</NavDropdown.Item>
</LinkContainer>
);
}
function convertToNavDropdown(sublist: NavInfoSublist) {
var myTitle = <>
<span className="nav-icon">
<sublist.icon/>
<span>{sublist.displayText}</span>
</span>
</>;
return (
<NavDropdown title={<><span className="nav-icon"><sublist.icon/><span>{sublist.displayText}</span></span></>} id="basic-nav-dropdown">
<NavDropdown title={myTitle} id="basic-nav-dropdown">
{sublist.sublist.map(convertToNavDropdownItem)}
</NavDropdown>
);
}
function NavBar() {
const { t, i18n } = useTranslation();
/* A "layout route" is a good place to put markup you want to
share across all the pages on your site, like navigation. */
function Layout() {
const navInfo = [
{displayText: "PDF Multi Tool", icon: BsTools, dest: "/home", tooltip: "Merge, Rotate, Rearrange, and Remove pages"},
{displayText: "Page Operations", icon: BsFileEarmarkPdf, sublist: [
{ displayText: "Merge", icon: AiOutlineMergeCells, dest: "/dashboard", tooltip: "Easily merge multiple PDFs into one." },
{ displayText: "Split", icon: AiOutlineSplitCells, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Organise", icon: BsSortNumericDown, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Rotate", icon: BsArrowClockwise, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Remove", icon: BsFileEarmarkX, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Multi-Page Layout", icon: LuLayoutGrid, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Adjust page size/scale", icon: SlSizeFullscreen, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Auto Split Pages", icon: BsLayoutSplit, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Adjust Colors/Contrast", icon: BsPalette, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Crop PDF", icon: BiCrop, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "Extract page(s)", icon: BsArrowUpSquare, dest: "/nothing-here", tooltip: "fghjgfhj" },
{ displayText: "PDF to Single Large Page", icon: Bs1Square, dest: "/nothing-here", tooltip: "fghjgfhj" },
{displayText: t('multiTool.title'), icon: BsTools, dest: "/home", tooltip: t('home.multiTool.desc')},
{displayText: t('navbar.pageOps'), icon: BsFileEarmarkPdf, sublist: [
{ displayText: t('home.merge.title'), icon: AiOutlineMergeCells, dest: "/dashboard", tooltip: t('home.merge.desc') },
{ displayText: t('home.split.title'), icon: AiOutlineSplitCells, dest: "/nothing-here", tooltip: t('home.split.desc') },
{ displayText: t('home.pdfOrganiser.title'), icon: BsSortNumericDown, dest: "/nothing-here", tooltip: t('home.pdfOrganiser.desc') },
{ displayText: t('home.rotate.title'), icon: BsArrowClockwise, dest: "/nothing-here", tooltip: t('home.rotate.desc') },
{ displayText: t('home.removePages.title'), icon: BsFileEarmarkX, dest: "/nothing-here", tooltip: t('home.removePages.desc') },
{ displayText: t('home.pageLayout.title'), icon: LuLayoutGrid, dest: "/nothing-here", tooltip: t('home.pageLayout.desc') },
{ displayText: t('home.scalePages.title'), icon: SlSizeFullscreen, dest: "/nothing-here", tooltip: t('home.scalePages.desc') },
{ displayText: t('home.autoSplitPDF.title'), icon: BsLayoutSplit, dest: "/nothing-here", tooltip: t('home.autoSplitPDF.desc') },
{ displayText: t('home.adjust-contrast.title'), icon: BsPalette, dest: "/nothing-here", tooltip: t('home.adjust-contrast.desc') },
{ displayText: t('home.crop.title'), icon: BiCrop, dest: "/nothing-here", tooltip: t('home.crop.desc') },
{ displayText: t('home.extractPage.title'), icon: BsArrowUpSquare, dest: "/nothing-here", tooltip: t('home.extractPage.desc') },
{ displayText: t('home.PdfToSinglePage.title'), icon: Bs1Square, dest: "/nothing-here", tooltip: t('home.PdfToSinglePage.desc') },
]},
{displayText: "Convert", icon: BsArrowLeftRight, sublist: [
{ displayText: "Image to PDF", icon: BsFileEarmarkImage, dest: "/dashboard" },
{ displayText: "File to PDF", icon: BsFileEarmark, dest: "/nothing-here" },
{ displayText: "HTML to PDF", icon: BsFiletypeHtml, dest: "/nothing-here" },
{ displayText: "URL/Website To PDF", icon: BsLink, dest: "/nothing-here" },
{ displayText: "Markdown to PDF", icon: BsFiletypeMd, dest: "/nothing-here" },
{displayText: t('navbar.convert'), icon: BsArrowLeftRight, sublist: [
{ displayText: t('home.imageToPdf.title'), icon: BsFileEarmarkImage, dest: "/dashboard", tooltip: t('home.imageToPdf.desc') },
{ displayText: t('home.fileToPDF.title'), icon: BsFileEarmark, dest: "/nothing-here", tooltip: t('home.fileToPDF.desc') },
{ displayText: t('home.HTMLToPDF.title'), icon: BsFiletypeHtml, dest: "/nothing-here", tooltip: t('home.HTMLToPDF.desc') },
{ displayText: t('home.URLToPDF.title'), icon: BsLink, dest: "/nothing-here", tooltip: t('home.URLToPDF.desc') },
{ displayText: t('home.MarkdownToPDF.title'), icon: BsFiletypeMd, dest: "/nothing-here", tooltip: t('home.MarkdownToPDF.desc') },
null,
{ displayText: "PDF to Image", icon: BsFileEarmarkImage, dest: "/nothing-here" },
{ displayText: "PDF to Word", icon: BsFileEarmarkWord, dest: "/nothing-here" },
{ displayText: "PDF to Presentation", icon: BsFiletypePpt, dest: "/nothing-here" },
{ displayText: "PDF to RTF (Text)", icon: BsFiletypeTxt, dest: "/nothing-here" },
{ displayText: "PDF to HTML", icon: BsFiletypeHtml, dest: "/nothing-here" },
{ displayText: "PDF to XML", icon: BsFiletypeXml, dest: "/nothing-here" },
{ displayText: "PDF to PDF/A", icon: BsFileEarmarkPdf, dest: "/nothing-here" },
{ displayText: t('home.pdfToImage.title'), icon: BsFileEarmarkImage, dest: "/nothing-here", tooltip: t('home.pdfToImage.desc') },
{ displayText: t('home.PDFToWord.title'), icon: BsFileEarmarkWord, dest: "/nothing-here", tooltip: t('home.PDFToWord.desc') },
{ displayText: t('home.PDFToPresentation.title'), icon: BsFiletypePpt, dest: "/nothing-here", tooltip: t('home.PDFToPresentation.desc') },
{ displayText: t('home.PDFToText.title'), icon: BsFiletypeTxt, dest: "/nothing-here", tooltip: t('home.PDFToText.desc') },
{ displayText: t('home.PDFToHTML.title'), icon: BsFiletypeHtml, dest: "/nothing-here", tooltip: t('home.PDFToHTML.desc') },
{ displayText: t('home.PDFToXML.title'), icon: BsFiletypeXml, dest: "/nothing-here", tooltip: t('home.PDFToXML.desc') },
{ displayText: t('home.pdfToPDFA.title'), icon: BsFileEarmarkPdf, dest: "/nothing-here", tooltip: t('home.pdfToPDFA.desc') },
]},
{displayText: t('navbar.security'), icon: BsShieldCheck, sublist: [
{ displayText: t('home.addPassword.title'), icon: BsLock, dest: "/dashboard", tooltip: t('home.addPassword.desc') },
{ displayText: t('home.removePassword.title'), icon: BsUnlock, dest: "/nothing-here", tooltip: t('home.removePassword.desc') },
{ displayText: t('home.permissions.title'), icon: BsShieldLock, dest: "/nothing-here", tooltip: t('home.permissions.desc') },
{ displayText: t('home.watermark.title'), icon: BsDroplet, dest: "/nothing-here", tooltip: t('home.watermark.desc') },
{ displayText: t('home.certSign.title'), icon: BsAward, dest: "/nothing-here", tooltip: t('home.certSign.desc') },
{ displayText: t('home.sanitizePdf.title'), icon: TfiSpray, dest: "/nothing-here", tooltip: t('home.sanitizePdf.desc') },
{ displayText: t('home.autoRedact.title'), icon: BsEraserFill, dest: "/nothing-here", tooltip: t('home.autoRedact.desc') },
]},
{displayText: t('navbar.other'), icon: BsCardList, sublist: [
{ displayText: t('home.ocr.title'), icon: BsSearch, dest: "/dashboard", tooltip: t('home.ocr.desc') },
{ displayText: t('home.addImage.title'), icon: BsFileEarmarkRichtext, dest: "/nothing-here", tooltip: t('home.addImage.desc') },
{ displayText: t('home.compressPdfs.title'), icon: BsFileZip, dest: "/nothing-here", tooltip: t('home.compressPdfs.desc') },
{ displayText: t('home.extractImages.title'), icon: BsImages, dest: "/nothing-here", tooltip: t('home.extractImages.desc') },
{ displayText: t('home.changeMetadata.title'), icon: BsClipboardData, dest: "/nothing-here", tooltip: t('home.changeMetadata.desc') },
{ displayText: t('home.ScannerImageSplit.title'), icon: MdOutlineScanner, dest: "/nothing-here", tooltip: t('home.ScannerImageSplit.desc') },
{ displayText: t('home.sign.title'), icon: BsVectorPen, dest: "/nothing-here", tooltip: t('home.sign.desc') },
{ displayText: t('home.flatten.title'), icon: PiArrowsInLineVertical, dest: "/nothing-here", tooltip: t('home.flatten.desc') },
{ displayText: t('home.repair.title'), icon: BsWrench, dest: "/nothing-here", tooltip: t('home.repair.desc') },
{ displayText: t('home.removeBlanks.title'), icon: BsFile, dest: "/nothing-here", tooltip: t('home.removeBlanks.desc') },
{ displayText: t('home.compare.title'), icon: GiScales, dest: "/nothing-here", tooltip: t('home.compare.desc') },
{ displayText: t('home.add-page-numbers.title'), icon: TbNumbers, dest: "/nothing-here", tooltip: t('home.add-page-numbers.desc') },
{ displayText: t('home.auto-rename.title'), icon: BsFonts, dest: "/nothing-here", tooltip: t('home.auto-rename.desc') },
{ displayText: t('home.getPdfInfo.title'), icon: BsInfoCircle, dest: "/nothing-here", tooltip: t('home.getPdfInfo.desc') },
{ displayText: t('home.showJS.title'), icon: BsFiletypeJs, dest: "/nothing-here", tooltip: t('home.showJS.desc') },
]},
] as Array<NavInfoItem | NavInfoSublist>;
return (
<Navbar expand="lg" className="bg-light">
<Container>
@ -94,7 +157,7 @@ function Layout() {
</LinkContainer>
<Navbar.Toggle aria-controls="basic-navbar-nav"/>
<Navbar.Collapse id="basic-navbar-nav">
<Nav className="me-auto">
<Nav>
{navInfo.map((ni, idx) => {
var element;
if ('dest' in ni) {
@ -112,10 +175,14 @@ function Layout() {
}
})}
</Nav>
<div className="flex-fill-remaining-space"></div>
<Nav>
<LanguagePicker />
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
);
}
export default Layout;
export default NavBar;

View File

@ -0,0 +1,16 @@
div[lang-direction=ltr] * {
direction: ltr;
}
div[lang-direction=rtl] * {
direction: rtl;
text-align: right;
}
.ignore-rtl {
direction: ltr !important;
text-align: left !important;
}
.flex-fill-remaining-space {
flex-grow: 10000000;
}

View File

@ -0,0 +1,853 @@
{
"translation": {
"language": {
"name":"العربية",
"flag": "🇸🇦",
"direction": "rtl"
},
"pdfPrompt": "اختر PDF",
"multiPdfPrompt": "اختر ملفات PDF (2+)",
"multiPdfDropPrompt": "حدد (أو اسحب وأفلت) جميع ملفات PDF التي تحتاجها",
"imgPrompt": "اختر صورة",
"genericSubmit": "إرسال",
"processTimeWarning": "تحذير: يمكن أن تستغرق هذه العملية ما يصل إلى دقيقة حسب حجم الملف",
"pageOrderPrompt": "ترتيب الصفحات (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):",
"goToPage": "اذهب",
"true": "\u0635\u062D\u064A\u062D",
"false": "\u062E\u0637\u0623",
"unknown": "\u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641",
"save": "\u062D\u0641\u0638",
"close": "\u0625\u063A\u0644\u0627\u0642",
"filesSelected": "الملفات المحددة",
"noFavourites": "لم تتم إضافة أي مفضلات",
"bored": "الانتظار بالملل؟",
"alphabet": "\u0627\u0644\u0623\u0628\u062C\u062F\u064A\u0629",
"downloadPdf": "تنزيل PDF",
"text": "نص",
"font": "الخط",
"selectFillter": "- حدد -",
"pageNum": "رقم الصفحة",
"sizes": {
"small": "Small",
"medium": "Medium",
"large": "Large",
"x-large": "X-Large"
},
"error": {
"pdfPassword": "The PDF Document is passworded and either the password was not provided or was incorrect"
},
"delete": "Delete",
"username": "Username",
"password": "Password",
"welcome": "Welcome",
"property": "Property",
"black": "Black",
"white": "White",
"red": "Red",
"green": "Green",
"blue": "Blue",
"custom": "Custom...",
"changedCredsMessage": "Credentials changed!",
"notAuthenticatedMessage": "User not authenticated.",
"userNotFoundMessage": "User not found.",
"incorrectPasswordMessage": "Current password is incorrect.",
"usernameExistsMessage": "New Username already exists.",
"navbar": {
"convert": "تحويل",
"security": "الأمان",
"other": "أخرى",
"darkmode": "الوضع الداكن",
"pageOps": "عمليات الصفحة",
"settings": "\u0625\u0639\u062F\u0627\u062F\u0627\u062A"
},
"settings": {
"title": "\u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A",
"update": "\u0627\u0644\u062A\u062D\u062F\u064A\u062B \u0645\u062A\u0627\u062D",
"appVersion": "\u0625\u0635\u062F\u0627\u0631 \u0627\u0644\u062A\u0637\u0628\u064A\u0642:",
"downloadOption": {
"1": "\u0641\u062A\u062D \u0641\u064A \u0646\u0641\u0633 \u0627\u0644\u0646\u0627\u0641\u0630\u0629",
"2": "\u0641\u062A\u062D \u0641\u064A \u0646\u0627\u0641\u0630\u0629 \u062C\u062F\u064A\u062F\u0629",
"3": "\u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u0645\u0644\u0641",
"title": "\u062A\u062D\u062F\u064A\u062F \u062E\u064A\u0627\u0631 \u0627\u0644\u062A\u0646\u0632\u064A\u0644 (\u0644\u0644\u062A\u0646\u0632\u064A\u0644\u0627\u062A \u0630\u0627\u062A \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0648\u0627\u062D\u062F \u063A\u064A\u0631 \u0627\u0644\u0645\u0636\u063A\u0648\u0637):"
},
"zipThreshold": "\u0645\u0644\u0641\u0627\u062A \u0645\u0636\u063A\u0648\u0637\u0629 \u0639\u0646\u062F \u062A\u062C\u0627\u0648\u0632 \u0639\u062F\u062F \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0645 \u062A\u0646\u0632\u064A\u0644\u0647\u0627",
"signOut": "Sign Out",
"accountSettings": "Account Settings"
},
"changeCreds": {
"title": "Change Credentials",
"header": "Update Your Account Details",
"changeUserAndPassword": "You are using default login credentials. Please enter a new password (and username if wanted)",
"newUsername": "New Username",
"oldPassword": "Current Password",
"newPassword": "New Password",
"confirmNewPassword": "Confirm New Password",
"submit": "Submit Changes"
},
"account": {
"title": "Account Settings",
"accountSettings": "Account Settings",
"adminSettings": "Admin Settings - View and Add Users",
"userControlSettings": "User Control Settings",
"changeUsername": "Change Username",
"password": "Confirmation Password",
"oldPassword": "Old password",
"newPassword": "New Password",
"changePassword": "Change Password",
"confirmNewPassword": "Confirm New Password",
"signOut": "Sign Out",
"yourApiKey": "Your API Key",
"syncTitle": "Sync browser settings with Account",
"settingsCompare": "Settings Comparison:",
"property": "Property",
"webBrowserSettings": "Web Browser Setting",
"syncToBrowser": "Sync Account -> Browser",
"syncToAccount": "Sync Account <- Browser"
},
"adminUserSettings": {
"title": "User Control Settings",
"header": "Admin User Control Settings",
"admin": "Admin",
"user": "User",
"addUser": "Add New User",
"roles": "Roles",
"role": "Role",
"actions": "Actions",
"apiUser": "Limited API User",
"webOnlyUser": "Web Only User",
"forceChange": "Force user to change username/password on login",
"submit": "Save User"
},
"home": {
"desc": "متجرك الشامل المستضاف محليًا لجميع احتياجات PDF الخاصة بك.",
"searchBar": "Search for features...",
"viewPdf": {
"title": "View PDF",
"desc": "View, annotate, add text or images"
},
"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": "إضافة صورة إلى ملف PDF",
"desc": "إضافة صورة إلى موقع معين في PDF (العمل قيد التقدم)"
},
"watermark": {
"title": "إضافة علامة مائية",
"desc": "أضف علامة مائية مخصصة إلى مستند PDF الخاص بك."
},
"permissions": {
"title": "تغيير الأذونات",
"desc": "قم بتغيير أذونات مستند PDF الخاص بك"
},
"removePages": {
"title": "إزالة الصفحات",
"desc": "حذف الصفحات غير المرغوب فيها من مستند PDF الخاص بك."
},
"addPassword": {
"title": "إضافة كلمة مرور",
"desc": "تشفير مستند PDF الخاص بك بكلمة مرور."
},
"removePassword": {
"title": "إزالة كلمة المرور",
"desc": "إزالة الحماية بكلمة مرور من مستند PDF الخاص بك."
},
"compressPdfs": {
"title": "ضغط ملفات",
"desc": "ضغط ملفات PDF لتقليل حجم الملف."
},
"changeMetadata": {
"title": "\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629",
"desc": "\u062A\u063A\u064A\u064A\u0631 / \u0625\u0632\u0627\u0644\u0629 / \u0625\u0636\u0627\u0641\u0629 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u0646 \u0645\u0633\u062A\u0646\u062F PDF"
},
"fileToPDF": {
"title": "\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641 \u0625\u0644\u0649 PDF",
"desc": "\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u062A\u0642\u0631\u064A\u0628\u0627 \u0625\u0644\u0649 PDF (DOCX \u0648PNG \u0648XLS \u0648PPT \u0648TXT \u0648\u0627\u0644\u0645\u0632\u064A\u062F)"
},
"ocr": {
"title": "\u062A\u0634\u063A\u064A\u0644 OCR \u0639\u0644\u0649 PDF \u0648 / \u0623\u0648 \u0645\u0633\u062D \u0636\u0648\u0626\u064A",
"desc": "\u064A\u0642\u0648\u0645 \u0628\u0631\u0646\u0627\u0645\u062C \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0628\u0645\u0633\u062D \u0648\u0627\u0643\u062A\u0634\u0627\u0641 \u0627\u0644\u0646\u0635 \u0645\u0646 \u0627\u0644\u0635\u0648\u0631 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF \u0648\u064A\u0639\u064A\u062F \u0625\u0636\u0627\u0641\u062A\u0647 \u0643\u0646\u0635"
},
"extractImages": {
"title": "\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631",
"desc": "\u064A\u0633\u062A\u062E\u0631\u062C \u062C\u0645\u064A\u0639 \u0627\u0644\u0635\u0648\u0631 \u0645\u0646 \u0645\u0644\u0641 PDF \u0648\u064A\u062D\u0641\u0638\u0647\u0627 \u0641\u064A \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064A\u062F\u064A"
},
"pdfToPDFA": {
"title": "\u062A\u062D\u0648\u064A\u0644 \u0645\u0644\u0641\u0627\u062A PDF \u0625\u0644\u0649 PDF / A",
"desc": "\u062A\u062D\u0648\u064A\u0644 PDF \u0625\u0644\u0649 PDF / A \u0644\u0644\u062A\u062E\u0632\u064A\u0646 \u0637\u0648\u064A\u0644 \u0627\u0644\u0645\u062F\u0649"
},
"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": "يكتشف ويزيل الصفحات الفارغة من المستند"
},
"compare": {
"title": "قارن",
"desc": "يقارن ويظهر الاختلافات بين 2 من مستندات PDF"
},
"certSign": {
"title": "Sign with Certificate",
"desc": "Signs a PDF with a Certificate/Key (PEM/P12)"
},
"pageLayout": {
"title": "Multi-Page Layout",
"desc": "Merge multiple pages of a PDF document into a single page"
},
"scalePages": {
"title": "Adjust page size/scale",
"desc": "Change the size/scale of page and/or its contents."
},
"pipeline": {
"title": "Pipeline (Advanced)",
"desc": "Run multiple actions on PDFs by defining pipeline scripts"
},
"add-page-numbers": {
"title": "Add Page Numbers",
"desc": "Add Page numbers throughout a document in a set location"
},
"auto-rename": {
"title": "Auto Rename PDF File",
"desc": "Auto renames a PDF file based on its detected header"
},
"adjust-contrast": {
"title": "Adjust Colors/Contrast",
"desc": "Adjust Contrast, Saturation and Brightness of a PDF"
},
"crop": {
"title": "Crop PDF",
"desc": "Crop a PDF to reduce its size (maintains text!)"
},
"autoSplitPDF": {
"title": "Auto Split Pages",
"desc": "Auto Split Scanned PDF with physical scanned page splitter QR Code"
},
"sanitizePdf": {
"title": "Sanitize",
"desc": "Remove scripts and other elements from PDF files"
},
"URLToPDF": {
"title": "URL/Website To PDF",
"desc": "Converts any http(s)URL to PDF"
},
"HTMLToPDF": {
"title": "HTML to PDF",
"desc": "Converts any HTML file or zip to PDF"
},
"MarkdownToPDF": {
"title": "Markdown to PDF",
"desc": "Converts any Markdown file to PDF"
},
"getPdfInfo": {
"title": "Get ALL Info on PDF",
"desc": "Grabs any and all information possible on PDFs"
},
"extractPage": {
"title": "Extract page(s)",
"desc": "Extracts select pages from PDF"
},
"PdfToSinglePage": {
"title": "PDF to Single Large Page",
"desc": "Merges all PDF pages into one large single page"
},
"showJS": {
"title": "Show Javascript",
"desc": "Searches and displays any JS injected into a PDF"
},
"autoRedact": {
"title": "Auto Redact",
"desc": "Auto Redacts(Blacks out) text in a PDF based on input text"
}
},
"viewPdf": {
"tags": "view,read,annotate,text,image",
"title": "View PDF",
"header": "View PDF"
},
"multiTool": {
"tags": "Multi Tool,Multi operation,UI,click drag,front end,client side",
"title": "أداة متعددة PDF",
"header": "أداة متعددة PDF"
},
"merge": {
"tags": "merge,Page operations,Back end,server side",
"title": "دمج",
"header": "دمج ملفات PDF متعددة (2+)",
"sortByName": "Sort by name",
"sortByDate": "Sort by date",
"submit": "دمج"
},
"split": {
"tags": "Page operations,divide,Multi Page,cut,server side",
"title": "انقسام PDF",
"header": "تقسيم PDF",
"desc": {
"1": "الأرقام التي تحددها هي رقم الصفحة التي تريد تقسيمها",
"2": "على هذا النحو ، سيؤدي تحديد 1،3،7-8 إلى تقسيم مستند من 10 صفحات إلى 6 PDFS منفصلة مع:",
"3": "المستند رقم 1: الصفحة 1",
"4": "المستند رقم 2: الصفحتان 2 و 3",
"5": "المستند رقم 3: الصفحة 4 و 5 و 6",
"6": "المستند رقم 4: الصفحة 7",
"7": "المستند رقم 5: الصفحة 8",
"8": "المستند رقم 6: الصفحتان 9 و 10"
},
"splitPages": "أدخل الصفحات المراد تقسيمها:",
"submit": "Split"
},
"rotate": {
"tags": "server side",
"title": "تدوير PDF",
"header": "تدوير PDF",
"selectAngle": "حدد زاوية الدوران (بمضاعفات 90 درجة):",
"submit": "استدارة"
},
"imageToPdf": {
"tags": "conversion,img,jpg,picture,photo"
},
"pdfToImage": {
"tags": "conversion,img,jpg,picture,photo",
"title": "تحويل PDF إلى صورة",
"header": "تحويل PDF إلى صورة",
"selectText": "تنسيق الصورة",
"singleOrMultiple": "\u0646\u0648\u0639 \u0646\u062A\u064A\u062C\u0629 \u0627\u0644\u0635\u0648\u0631\u0629",
"single": "\u0635\u0648\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0643\u0628\u064A\u0631\u0629",
"multi": "\u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629",
"colorType": "\u0646\u0648\u0639 \u0627\u0644\u0644\u0648\u0646",
"color": "\u0627\u0644\u0644\u0648\u0646",
"grey": "\u062A\u062F\u0631\u062C \u0627\u0644\u0631\u0645\u0627\u062F\u064A",
"blackwhite": "\u0623\u0628\u064A\u0636 \u0648\u0623\u0633\u0648\u062F (\u0642\u062F \u064A\u0641\u0642\u062F \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A!)",
"submit": "تحول"
},
"pdfOrganiser": {
"tags": "duplex,even,odd,sort,move",
"title": "منظم الصفحة",
"header": "منظم صفحات PDF",
"submit": "إعادة ترتيب الصفحات"
},
"addImage": {
"tags": "img,jpg,picture,photo",
"title": "إضافة صورة",
"header": "إضافة صورة إلى PDF",
"everyPage": "كل صفحة؟",
"upload": "إضافة صورة",
"submit": "إضافة صورة"
},
"watermark": {
"tags": "Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo",
"title": "إضافة علامة مائية",
"header": "إضافة علامة مائية",
"selectText": {
"1": "حدد PDF لإضافة العلامة المائية إلى:",
"2": "نص العلامة المائية:",
"3": "حجم الخط:",
"4": "دوران (0-360):",
"5": "widthSpacer (مسافة بين كل علامة مائية أفقيًا):",
"6": "heightSpacer (مسافة بين كل علامة مائية عموديًا):",
"7": "\u0627\u0644\u062A\u0639\u062A\u064A\u0645 (0\u066A - 100\u066A):",
"8": "Watermark Type:",
"9": "Watermark Image:"
},
"submit": "إضافة علامة مائية"
},
"permissions": {
"tags": "read,write,edit,print",
"title": "تغيير الأذونات",
"header": "تغيير الأذونات",
"warning": "تحذير من أن تكون هذه الأذونات غير قابلة للتغيير ، يوصى بتعيينها بكلمة مرور عبر صفحة إضافة كلمة المرور",
"selectText": {
"1": "حدد ملف PDF لتغيير الأذونات",
"2": "أذونات لتعيينها",
"3": "منع تجميع المستند",
"4": "منع استخراج المحتوى",
"5": "منع الاستخراج للوصول",
"6": "منع ملء النموذج",
"7": "منع التعديل",
"8": "منع تعديل التعليق التوضيحي",
"9": "منع الطباعة",
"10": "منع طباعة التنسيقات المختلفة"
},
"submit": "تغيير"
},
"removePages": {
"tags": "Remove pages,delete pages"
},
"addPassword": {
"tags": "secure,security",
"title": "إضافة كلمة مرور",
"header": "إضافة كلمة مرور (تشفير)",
"selectText": {
"1": "حدد ملف PDF للتشفير",
"2": "كلمة المرور",
"3": "طول مفتاح التشفير",
"4": "القيم الأعلى تكون أقوى ، لكن القيم الأقل لها توافق أفضل.",
"5": "أذونات للتعيين",
"6": "منع تجميع المستند",
"7": "منع استخراج المحتوى",
"8": "منع الاستخراج للوصول",
"9": "منع ملء النموذج",
"10": "منع التعديل",
"11": "منع تعديل التعليقات التوضيحية",
"12": "منع الطباعة",
"13": "منع طباعة تنسيقات مختلفة",
"14": "Owner Password",
"15": "Restricts what can be done with the document once it is opened (Not supported by all readers)",
"16": "Restricts the opening of the document itself"
},
"submit": "تشفير"
},
"removePassword": {
"tags": "secure,Decrypt,security,unpassword,delete password",
"title": "إزالة كلمة المرور",
"header": "إزالة كلمة المرور (فك التشفير)",
"selectText": {
"1": "حدد PDF لفك التشفير",
"2": "كلمة المرور"
},
"submit": "إزالة"
},
"compressPdfs": {
"tags": "squish,small,tiny"
},
"fileToPDF": {
"tags": "transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint",
"title": "\u0645\u0644\u0641 \u0625\u0644\u0649 PDF",
"header": "\u062A\u062D\u0648\u064A\u0644 \u0623\u064A \u0645\u0644\u0641 \u0625\u0644\u0649 PDF",
"credit": "\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 \u0644\u064A\u0628\u0631 \u0623\u0648\u0641\u064A\u0633 \u0648\u0623\u0648\u0646\u0648\u0643\u0648\u0646\u0641 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062A.",
"supportedFileTypes": "\u064A\u062C\u0628 \u0623\u0646 \u062A\u062A\u0636\u0645\u0646 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u0645\u0627 \u064A\u0644\u064A \u0648\u0644\u0643\u0646 \u0644\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0645\u062D\u062F\u062B\u0629 \u0643\u0627\u0645\u0644\u0629 \u0628\u0627\u0644\u062A\u0646\u0633\u064A\u0642\u0627\u062A \u0627\u0644\u0645\u062F\u0639\u0648\u0645\u0629 \u060C \u064A\u0631\u062C\u0649 \u0627\u0644\u0631\u062C\u0648\u0639 \u0625\u0644\u0649 \u0648\u062B\u0627\u0626\u0642 LibreOffice",
"submit": "\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 PDF"
},
"ocr": {
"tags": "recognition,text,image,scan,read,identify,detection,editable",
"title": "\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 / \u062A\u0646\u0638\u064A\u0641 \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A",
"header": "\u0645\u0633\u062D \u0627\u0644\u0645\u0633\u062D \u0627\u0644\u0636\u0648\u0626\u064A / \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 (\u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641)",
"selectText": {
"1": "\u062D\u062F\u062F \u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u062A\u064A \u0633\u064A\u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062F\u0627\u062E\u0644 \u0645\u0644\u0641 PDF (\u0627\u0644\u0644\u063A\u0627\u062A \u0627\u0644\u0645\u062F\u0631\u062C\u0629 \u0647\u064A \u062A\u0644\u0643 \u0627\u0644\u062A\u064A \u062A\u0645 \u0627\u0643\u062A\u0634\u0627\u0641\u0647\u0627 \u062D\u0627\u0644\u064A\u064B\u0627):",
"2": "\u0625\u0646\u062A\u0627\u062C \u0645\u0644\u0641 \u0646\u0635\u064A \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 OCR \u0628\u062C\u0627\u0646\u0628 \u0645\u0644\u0641 PDF \u0627\u0644\u0630\u064A \u062A\u0645 \u0625\u0639\u062F\u0627\u062F\u0647 \u0628\u0648\u0627\u0633\u0637\u0629 OCR",
"3": "\u062A\u0645 \u0645\u0633\u062D \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u0635\u062D\u064A\u062D\u0629 \u0636\u0648\u0626\u064A\u064B\u0627 \u0628\u0632\u0627\u0648\u064A\u0629 \u0645\u0646\u062D\u0631\u0641\u0629 \u0639\u0646 \u0637\u0631\u064A\u0642 \u062A\u062F\u0648\u064A\u0631\u0647\u0627 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0641\u064A \u0645\u0643\u0627\u0646\u0647\u0627",
"4": "\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629. (\u0644\u0627 \u064A\u0648\u062C\u062F \u062A\u063A\u064A\u064A\u0631 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C)",
"5": "\u0635\u0641\u062D\u0629 \u0646\u0638\u064A\u0641\u0629 \u060C \u0644\u0630\u0644\u0643 \u0645\u0646 \u063A\u064A\u0631 \u0627\u0644\u0645\u062D\u062A\u0645\u0644 \u0623\u0646 \u064A\u062C\u062F OCR \u0646\u0635\u064B\u0627 \u0641\u064A \u0636\u0648\u0636\u0627\u0621 \u0627\u0644\u062E\u0644\u0641\u064A\u0629 \u060C \u0648\u064A\u062D\u0627\u0641\u0638 \u0639\u0644\u0649 \u0627\u0644\u062A\u0646\u0638\u064A\u0641 \u0641\u064A \u0627\u0644\u0625\u062E\u0631\u0627\u062C.",
"6": "\u064A\u062A\u062C\u0627\u0647\u0644 \u0627\u0644\u0635\u0641\u062D\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635 \u062A\u0641\u0627\u0639\u0644\u064A \u060C \u0641\u0642\u0637 \u0635\u0641\u062D\u0627\u062A OCRs \u0627\u0644\u062A\u064A \u0647\u064A \u0635\u0648\u0631",
"7": "\u0641\u0631\u0636 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u060C \u0633\u064A\u0624\u062F\u064A \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641 \u0639\u0644\u0649 \u0643\u0644 \u0635\u0641\u062D\u0629 \u0625\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u062C\u0645\u064A\u0639 \u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u0646\u0635 \u0627\u0644\u0623\u0635\u0644\u064A",
"8": "\u0639\u0627\u062F\u064A (\u062E\u0637\u0623 \u0625\u0630\u0627 \u0643\u0627\u0646 PDF \u064A\u062D\u062A\u0648\u064A \u0639\u0644\u0649 \u0646\u0635)",
"9": "\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0636\u0627\u0641\u064A\u0629",
"10": "\u0648\u0636\u0639 \u0627\u0644\u062A\u0639\u0631\u0641 \u0627\u0644\u0636\u0648\u0626\u064A \u0639\u0644\u0649 \u0627\u0644\u062D\u0631\u0648\u0641",
"11": "إزالة الصور بعد التعرف الضوئي على الحروف (يزيل كل الصور ، يكون مفيدًا فقط إذا كان جزءًا من خطوة التحويل)",
"12": "نوع العرض (متقدم)"
},
"help": "\u064A\u0631\u062C\u0649 \u0642\u0631\u0627\u0621\u0629 \u0647\u0630\u0647 \u0627\u0644\u0648\u062B\u0627\u0626\u0642 \u062D\u0648\u0644 \u0643\u064A\u0641\u064A\u0629 \u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0647\u0630\u0627 \u0644\u0644\u063A\u0627\u062A \u0623\u062E\u0631\u0649 \u0648 / \u0623\u0648 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0644\u064A\u0633 \u0641\u064A \u0639\u0627\u0645\u0644 \u0627\u0644\u0625\u0631\u0633\u0627\u0621",
"credit": "\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0648 Tesseract \u0644 OCR.",
"submit": "\u0645\u0639\u0627\u0644\u062C\u0629 PDF \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 OCR"
},
"extractImages": {
"tags": "picture,photo,save,archive,zip,capture,grab",
"title": "\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631",
"header": "\u0627\u0633\u062A\u062E\u0631\u0627\u062C \u0627\u0644\u0635\u0648\u0631",
"selectText": "\u062D\u062F\u062F \u062A\u0646\u0633\u064A\u0642 \u0627\u0644\u0635\u0648\u0631\u0629 \u0644\u062A\u062D\u0648\u064A\u0644 \u0627\u0644\u0635\u0648\u0631 \u0627\u0644\u0645\u0633\u062A\u062E\u0631\u062C\u0629 \u0625\u0644\u0649",
"submit": "\u0627\u0633\u062A\u062E\u0631\u0627\u062C"
},
"pdfToPDFA": {
"tags": "archive,long-term,standard,conversion,storage,preservation",
"title": "PDF \u0625\u0644\u0649 PDF / A",
"header": "PDF \u0625\u0644\u0649 PDF / A",
"credit": "\u062A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0647 \u0627\u0644\u062E\u062F\u0645\u0629 OCRmyPDF \u0644\u062A\u062D\u0648\u064A\u0644 PDF / A.",
"submit": "\u062A\u062D\u0648\u064A\u0644"
},
"PDFToWord": {
"tags": "doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile",
"title": "تحويل PDF إلى Word",
"header": "تحويل PDF إلى Word",
"selectText": {
"1": "تنسيق ملف الإخراج"
},
"credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملفات.",
"submit": "تحويل"
},
"PDFToPresentation": {
"tags": "slides,show,office,microsoft",
"title": "PDF للعرض التقديمي",
"header": "PDF للعرض التقديمي",
"selectText": {
"1": "تنسيق ملف الإخراج"
},
"credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملف.",
"submit": "تحويل"
},
"PDFToText": {
"tags": "richformat,richtextformat,rich text format",
"title": "تحويل PDF إلى نص / RTF",
"header": "تحويل PDF إلى نص / RTF",
"selectText": {
"1": "تنسيق ملف الإخراج"
},
"credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملفات.",
"submit": "تحويل"
},
"PDFToHTML": {
"tags": "web content,browser friendly",
"title": "PDF إلى HTML",
"header": "PDF إلى HTML",
"credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملفات.",
"submit": "تحويل"
},
"PDFToXML": {
"tags": "data-extraction,structured-content,interop,transformation,convert",
"title": "تحويل PDF إلى XML",
"header": "تحويل PDF إلى XML",
"credit": "تستخدم هذه الخدمة LibreOffice لتحويل الملفات.",
"submit": "تحويل"
},
"ScannerImageSplit": {
"tags": "separate,auto-detect,scans,multi-photo,organize",
"selectText": {
"1": "عتبة الزاوية:",
"2": "تعيين الحد الأدنى للزاوية المطلقة المطلوبة لتدوير الصورة (افتراضي: 10).",
"3": "التسامح:",
"4": "يحدد نطاق تباين اللون حول لون الخلفية المقدر (الافتراضي: 30).",
"5": "أدنى مساحة:",
"6": "تعيين الحد الأدنى لمنطقة الصورة (الافتراضي: 10000).",
"7": "الحد الأدنى لمنطقة المحيط:",
"8": "تعيين الحد الأدنى لمنطقة المحيط للصورة",
"9": "حجم الحدود:",
"10": "يضبط حجم الحدود المضافة والمزالة لمنع الحدود البيضاء في الإخراج (الافتراضي: 1)."
}
},
"sign": {
"tags": "authorize,initials,drawn-signature,text-sign,image-signature",
"title": "تسجيل الدخول",
"header": "توقيع ملفات PDF",
"upload": "تحميل الصورة",
"draw": "رسم التوقيع",
"text": "Text Input",
"clear": "واضح",
"add": "إضافة"
},
"flatten": {
"tags": "static,deactivate,non-interactive,streamline",
"title": "تسطيح",
"header": "تسوية ملفات PDF",
"submit": "تسطيح"
},
"repair": {
"tags": "fix,restore,correction,recover",
"title": "إصلاح",
"header": "إصلاح ملفات PDF",
"submit": "الإصلاح"
},
"removeBlanks": {
"tags": "cleanup,streamline,non-content,organize",
"title": "إزالة الفراغات",
"header": "إزالة الصفحات الفارغة",
"threshold": "العتبة:",
"thresholdDesc": "الحد الفاصل لتحديد مدى بياض البكسل الأبيض",
"whitePercent": "نسبة الأبيض (٪):",
"whitePercentDesc": "النسبة المئوية للصفحة التي يجب أن تكون بيضاء لتتم إزالتها",
"submit": "إزالة الفراغات"
},
"compare": {
"tags": "differentiate,contrast,changes,analysis",
"title": "يقارن",
"header": "قارن ملفات PDF",
"document": {
"1": "المستند 1",
"2": "المستند 2"
},
"submit": "يقارن"
},
"certSign": {
"tags": "authenticate,PEM,P12,official,encrypt",
"title": "توقيع الشهادة",
"header": "قم بتوقيع ملف PDF بشهادتك (العمل قيد التقدم)",
"selectPDF": "حدد ملف PDF للتوقيع:",
"selectKey": "حدد ملف المفتاح الخاص (تنسيق PKCS ",
"selectCert": "حدد ملف الشهادة الخاص بك (تنسيق X.509 ، يمكن أن يكون .pem أو .der):",
"selectP12": "حدد ملف تخزين المفاتيح PKCS ",
"certType": "نوع الشهادة",
"password": "أدخل ملف تخزين المفاتيح أو كلمة المرور الخاصة (إن وجدت):",
"showSig": "إظهار التوقيع",
"reason": "السبب",
"location": "الموقع",
"name": "الاسم",
"submit": "تسجيل PDF"
},
"pageLayout": {
"tags": "merge,composite,single-view,organize",
"title": "Multi Page Layout",
"header": "Multi Page Layout",
"pagesPerSheet": "Pages per sheet:",
"addBorder": "Add Borders",
"submit": "Submit"
},
"scalePages": {
"tags": "resize,modify,dimension,adapt",
"title": "Adjust page-scale",
"header": "Adjust page-scale",
"pageSize": "Size of a page of the document.",
"scaleFactor": "Zoom level (crop) of a page.",
"submit": "Submit"
},
"pipeline": {
"tags": "automate,sequence,scripted,batch-process",
"title": "Pipeline"
},
"add-page-numbers": {
"tags": "paginate,label,organize,index"
},
"auto-rename": {
"tags": "auto-detect,header-based,organize,relabel",
"title": "Auto Rename",
"header": "Auto Rename PDF",
"submit": "Auto Rename"
},
"adjust-contrast": {
"tags": "color-correction,tune,modify,enhance"
},
"crop": {
"tags": "trim,shrink,edit,shape",
"title": "Crop",
"header": "Crop Image",
"submit": "Submit"
},
"autoSplitPDF": {
"tags": "QR-based,separate,scan-segment,organize",
"title": "Auto Split PDF",
"header": "Auto Split PDF",
"description": "Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed.",
"selectText": {
"1": "Print out some divider sheets from below (Black and white is fine).",
"2": "Scan all your documents at once by inserting the divider sheet between them.",
"3": "Upload the single large scanned PDF file and let Stirling PDF handle the rest.",
"4": "Divider pages are automatically detected and removed, guaranteeing a neat final document."
},
"formPrompt": "Submit PDF containing Stirling-PDF Page dividers:",
"duplexMode": "Duplex Mode (Front and back scanning)",
"dividerDownload1": "Download 'Auto Splitter Divider (minimal).pdf'",
"dividerDownload2": "Download 'Auto Splitter Divider (with instructions).pdf'",
"submit": "Submit"
},
"sanitizePdf": {
"tags": "clean,secure,safe,remove-threats"
},
"URLToPDF": {
"tags": "web-capture,save-page,web-to-doc,archive",
"title": "URL To PDF",
"header": "URL To PDF",
"submit": "Convert",
"credit": "Uses WeasyPrint"
},
"HTMLToPDF": {
"tags": "markup,web-content,transformation,convert",
"title": "HTML To PDF",
"header": "HTML To PDF",
"help": "Accepts HTML files and ZIPs containing html/css/images etc required",
"submit": "Convert",
"credit": "Uses WeasyPrint"
},
"MarkdownToPDF": {
"tags": "markup,web-content,transformation,convert",
"title": "Markdown To PDF",
"header": "Markdown To PDF",
"submit": "Convert",
"help": "Work in progress",
"credit": "Uses WeasyPrint"
},
"getPdfInfo": {
"tags": "infomation,data,stats,statistics",
"title": "Get Info on PDF",
"header": "Get Info on PDF",
"submit": "Get Info",
"downloadJson": "Download JSON"
},
"extractPage": {
"tags": "extract"
},
"PdfToSinglePage": {
"tags": "single page"
},
"showJS": {
"tags": "JS",
"title": "Show Javascript",
"header": "Show Javascript",
"downloadJS": "Download Javascript",
"submit": "Show"
},
"login": {
"title": "Sign in",
"signin": "Sign in",
"rememberme": "Remember me",
"invalid": "Invalid username or password.",
"locked": "Your account has been locked.",
"signinTitle": "Please sign in"
},
"autoRedact": {
"title": "Auto Redact",
"header": "Auto Redact",
"colorLabel": "Colour",
"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"
},
"pdfToSinglePage": {
"title": "PDF To Single Page",
"header": "PDF To Single Page",
"submit": "Convert To Single Page"
},
"pageExtracter": {
"title": "Extract Pages",
"header": "Extract Pages",
"submit": "Extract"
},
"sanitizePDF": {
"title": "Sanitize PDF",
"header": "Sanitize a PDF file",
"selectText": {
"1": "Remove JavaScript actions",
"2": "Remove embedded files",
"3": "Remove metadata",
"4": "Remove links",
"5": "Remove fonts"
},
"submit": "Sanitize PDF"
},
"addPageNumbers": {
"title": "Add Page Numbers",
"header": "Add Page Numbers",
"selectText": {
"1": "Select PDF file:",
"2": "Margin Size",
"3": "Position",
"4": "Starting Number",
"5": "Pages to Number",
"6": "Custom Text"
},
"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"
},
"adjustContrast": {
"title": "Adjust Contrast",
"header": "Adjust Contrast",
"contrast": "Contrast:",
"brightness": "Brightness:",
"saturation": "Saturation:",
"download": "Download"
},
"compress": {
"title": "ضغط",
"header": "ضغط ملف PDF",
"credit": "تستخدم هذه الخدمة OCRmyPDF لضغط / تحسين PDF.",
"selectText": {
"1": "الوضع اليدوي - من 1 إلى 4",
"2": "مستوى التحسين:",
"3": "4 (رهيب للصور النصية)",
"4": "الوضع التلقائي - يضبط الجودة تلقائيًا للحصول على ملف PDF بالحجم المحدد",
"5": "حجم PDF المتوقع (على سبيل المثال 25 ميجا بايت ، 10.8 ميجا بايت ، 25 كيلو بايت)"
},
"submit": "ضغطضغط"
},
"pageRemover": {
"title": "مزيل الصفحة",
"header": "مزيل صفحة PDF",
"pagesToDelete": "الصفحات المراد حذفها (أدخل قائمة بأرقام الصفحات مفصولة بفواصل):",
"submit": "حذف الصفحات"
},
"imageToPDF": {
"title": "صورة إلى PDF",
"header": "صورة إلى PDF",
"submit": "تحول",
"selectLabel": "Image Fit Options",
"fillPage": "Fill Page",
"fitDocumentToImage": "Fit Page to Image",
"maintainAspectRatio": "Maintain Aspect Ratios",
"selectText": {
"2": "\u062F\u0648\u0631\u0627\u0646 PDF \u062A\u0644\u0642\u0627\u0626\u064A\u064B\u0627",
"3": "\u0627\u0644\u0645\u0646\u0637\u0642 \u0627\u0644\u0645\u062A\u0639\u062F\u062F \u0644\u0644\u0645\u0644\u0641\u0627\u062A (\u0645\u0641\u0639\u0651\u0644 \u0641\u0642\u0637 \u0625\u0630\u0627 \u0643\u0646\u062A \u062A\u0639\u0645\u0644 \u0645\u0639 \u0635\u0648\u0631 \u0645\u062A\u0639\u062F\u062F\u0629)",
"4": "\u062F\u0645\u062C \u0641\u064A \u0645\u0644\u0641 PDF \u0648\u0627\u062D\u062F",
"5": "\u062A\u062D\u0648\u064A\u0644 \u0625\u0644\u0649 \u0645\u0644\u0641\u0627\u062A PDF \u0645\u0646\u0641\u0635\u0644\u0629"
}
},
"changeMetadata": {
"title": "\u0627\u0644\u0639\u0646\u0648\u0627\u0646:",
"header": "\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0648\u0635\u0641\u064A\u0629",
"selectText": {
"1": "\u064A\u0631\u062C\u0649 \u062A\u0639\u062F\u064A\u0644 \u0627\u0644\u0645\u062A\u063A\u064A\u0631\u0627\u062A \u0627\u0644\u062A\u064A \u062A\u0631\u063A\u0628 \u0641\u064A \u062A\u063A\u064A\u064A\u0631\u0647\u0627",
"2": "\u062D\u0630\u0641 \u0643\u0644 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629",
"3": "\u0625\u0638\u0647\u0627\u0631 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0623\u0648\u0644\u064A\u0629 \u0627\u0644\u0645\u062E\u0635\u0635\u0629:",
"4": "\u0628\u064A\u0627\u0646\u0627\u062A \u0648\u0635\u0641\u064A\u0629 \u0623\u062E\u0631\u0649:",
"5": "\u0625\u0636\u0627\u0641\u0629 \u0625\u062F\u062E\u0627\u0644 \u0628\u064A\u0627\u0646\u0627\u062A \u0623\u0648\u0644\u064A\u0629 \u0645\u062E\u0635\u0635"
},
"author": "\u0627\u0644\u0645\u0624\u0644\u0641:",
"creationDate": "\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u0625\u0646\u0634\u0627\u0621 (yyyy / MM / dd HH: mm: ss):",
"creator": "\u0627\u0644\u0645\u0646\u0634\u0626:",
"keywords": "\u0627\u0644\u0643\u0644\u0645\u0627\u062A \u0627\u0644\u0631\u0626\u064A\u0633\u064A\u0629:",
"modDate": "\u062A\u0627\u0631\u064A\u062E \u0627\u0644\u062A\u0639\u062F\u064A\u0644 (yyyy / MM / dd HH: mm: ss):",
"producer": "\u0627\u0644\u0645\u0646\u062A\u062C:",
"subject": "\u0627\u0644\u0645\u0648\u0636\u0648\u0639:",
"trapped": "\u0645\u062D\u0627\u0635\u0631:",
"submit": "\u062A\u063A\u064A\u064A\u0631"
}
}
}

View File

@ -0,0 +1,854 @@
{
"translation": {
"language": {
"name":"English (UK)",
"flag": "🇬🇧",
"direction": "ltr"
},
"pdfPrompt": "Select PDF(s)",
"multiPdfPrompt": "Select PDFs (2+)",
"multiPdfDropPrompt": "Select (or drag & drop) all PDFs you require",
"imgPrompt": "Select Image(s)",
"genericSubmit": "Submit",
"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) :",
"goToPage": "Go",
"true": "True",
"false": "False",
"unknown": "Unknown",
"save": "Save",
"close": "Close",
"filesSelected": "files selected",
"noFavourites": "No favourites added",
"bored": "Bored Waiting?",
"alphabet": "Alphabet",
"downloadPdf": "Download PDF",
"text": "Text",
"font": "Font",
"selectFillter": "-- Select --",
"pageNum": "Page Number ",
"sizes": {
"small": "Small",
"medium": "Medium",
"large": "Large",
"x-large": "X-Large"
},
"error": {
"pdfPassword": "The PDF Document is passworded and either the password was not provided or was incorrect"
},
"delete": "Delete",
"username": "Username",
"password": "Password",
"welcome": "Welcome",
"property": "Property",
"black": "Black",
"white": "White",
"red": "Red",
"green": "Green",
"blue": "Blue",
"custom": "Custom...",
"changedCredsMessage": "Credentials changed!",
"notAuthenticatedMessage": "User not authenticated.",
"userNotFoundMessage": "User not found.",
"incorrectPasswordMessage": "Current password is incorrect.",
"usernameExistsMessage": "New Username already exists.",
"navbar": {
"convert": "Convert",
"security": "Security",
"other": "Miscellaneous",
"darkmode": "Dark Mode",
"pageOps": "Page Operations",
"settings": "Settings"
},
"settings": {
"title": "Settings",
"update": "Update available",
"appVersion": "App Version:",
"downloadOption": {
"1": "Open in same window",
"2": "Open in new window",
"3": "Download file",
"title": "Choose download option (For single file non zip downloads):"
},
"zipThreshold": "Zip files when the number of downloaded files exceeds",
"signOut": "Sign Out",
"accountSettings": "Account Settings"
},
"changeCreds": {
"title": "Change Credentials",
"header": "Update Your Account Details",
"changeUserAndPassword": "You are using default login credentials. Please enter a new password (and username if wanted)",
"newUsername": "New Username",
"oldPassword": "Current Password",
"newPassword": "New Password",
"confirmNewPassword": "Confirm New Password",
"submit": "Submit Changes"
},
"account": {
"title": "Account Settings",
"accountSettings": "Account Settings",
"adminSettings": "Admin Settings - View and Add Users",
"userControlSettings": "User Control Settings",
"changeUsername": "Change Username",
"password": "Confirmation Password",
"oldPassword": "Old password",
"newPassword": "New Password",
"changePassword": "Change Password",
"confirmNewPassword": "Confirm New Password",
"signOut": "Sign Out",
"yourApiKey": "Your API Key",
"syncTitle": "Sync browser settings with Account",
"settingsCompare": "Settings Comparison:",
"property": "Property",
"webBrowserSettings": "Web Browser Setting",
"syncToBrowser": "Sync Account -> Browser",
"syncToAccount": "Sync Account <- Browser"
},
"adminUserSettings": {
"title": "User Control Settings",
"header": "Admin User Control Settings",
"admin": "Admin",
"user": "User",
"addUser": "Add New User",
"roles": "Roles",
"role": "Role",
"actions": "Actions",
"apiUser": "Limited API User",
"webOnlyUser": "Web Only User",
"forceChange": "Force user to change username/password on login",
"submit": "Save User"
},
"home": {
"desc": "Your locally hosted one-stop-shop for all your PDF needs.",
"searchBar": "Search for features...",
"viewPdf": {
"title": "View PDF",
"desc": "View, annotate, add text or images"
},
"multiTool": {
"title": "PDF Multi Tool",
"desc": "Merge, Rotate, Rearrange, and Remove pages"
},
"merge": {
"title": "Merge",
"desc": "Easily merge multiple PDFs into one."
},
"split": {
"title": "Split",
"desc": "Split PDFs into multiple documents"
},
"rotate": {
"title": "Rotate",
"desc": "Easily rotate your PDFs."
},
"imageToPdf": {
"title": "Image to PDF",
"desc": "Convert a image (PNG, JPEG, GIF) to PDF."
},
"pdfToImage": {
"title": "PDF to Image",
"desc": "Convert a PDF to a image. (PNG, JPEG, GIF)"
},
"pdfOrganiser": {
"title": "Organise",
"desc": "Remove/Rearrange pages in any order"
},
"addImage": {
"title": "Add image",
"desc": "Adds a image onto a set location on the PDF"
},
"watermark": {
"title": "Add Watermark",
"desc": "Add a custom watermark to your PDF document."
},
"permissions": {
"title": "Change Permissions",
"desc": "Change the permissions of your PDF document"
},
"removePages": {
"title": "Remove",
"desc": "Delete unwanted pages from your PDF document."
},
"addPassword": {
"title": "Add Password",
"desc": "Encrypt your PDF document with a password."
},
"removePassword": {
"title": "Remove Password",
"desc": "Remove password protection from your PDF document."
},
"compressPdfs": {
"title": "Compress",
"desc": "Compress PDFs to reduce their file size."
},
"changeMetadata": {
"title": "Change Metadata",
"desc": "Change/Remove/Add metadata from a PDF document"
},
"fileToPDF": {
"title": "Convert file to PDF",
"desc": "Convert nearly any file to PDF (DOCX, PNG, XLS, PPT, TXT and more)"
},
"ocr": {
"title": "OCR / Cleanup scans",
"desc": "Cleanup scans and detects text from images within a PDF and re-adds it as text."
},
"extractImages": {
"title": "Extract Images",
"desc": "Extracts all images from a PDF and saves them to zip"
},
"pdfToPDFA": {
"title": "PDF to PDF/A",
"desc": "Convert PDF to PDF/A for long-term storage"
},
"PDFToWord": {
"title": "PDF to Word",
"desc": "Convert PDF to Word formats (DOC, DOCX and ODT)"
},
"PDFToPresentation": {
"title": "PDF to Presentation",
"desc": "Convert PDF to Presentation formats (PPT, PPTX and ODP)"
},
"PDFToText": {
"title": "PDF to RTF (Text)",
"desc": "Convert PDF to Text or RTF format"
},
"PDFToHTML": {
"title": "PDF to HTML",
"desc": "Convert PDF to HTML format"
},
"PDFToXML": {
"title": "PDF to XML",
"desc": "Convert PDF to XML format"
},
"ScannerImageSplit": {
"title": "Detect/Split Scanned photos",
"desc": "Splits multiple photos from within a photo/PDF"
},
"sign": {
"title": "Sign",
"desc": "Adds signature to PDF by drawing, text or image"
},
"flatten": {
"title": "Flatten",
"desc": "Remove all interactive elements and forms from a PDF"
},
"repair": {
"title": "Repair",
"desc": "Tries to repair a corrupt/broken PDF"
},
"removeBlanks": {
"title": "Remove Blank pages",
"desc": "Detects and removes blank pages from a document"
},
"compare": {
"title": "Compare",
"desc": "Compares and shows the differences between 2 PDF Documents"
},
"certSign": {
"title": "Sign with Certificate",
"desc": "Signs a PDF with a Certificate/Key (PEM/P12)"
},
"pageLayout": {
"title": "Multi-Page Layout",
"desc": "Merge multiple pages of a PDF document into a single page"
},
"scalePages": {
"title": "Adjust page size/scale",
"desc": "Change the size/scale of a page and/or its contents."
},
"pipeline": {
"title": "Pipeline (Advanced)",
"desc": "Run multiple actions on PDFs by defining pipeline scripts"
},
"add-page-numbers": {
"title": "Add Page Numbers",
"desc": "Add Page numbers throughout a document in a set location"
},
"auto-rename": {
"title": "Auto Rename PDF File",
"desc": "Auto renames a PDF file based on its detected header "
},
"adjust-contrast": {
"title": "Adjust Colors/Contrast",
"desc": "Adjust Contrast, Saturation and Brightness of a PDF"
},
"crop": {
"title": "Crop PDF",
"desc": "Crop a PDF to reduce its size (maintains text!)"
},
"autoSplitPDF": {
"title": "Auto Split Pages",
"desc": "Auto Split Scanned PDF with physical scanned page splitter QR Code"
},
"sanitizePdf": {
"title": "Sanitize",
"desc": "Remove scripts and other elements from PDF files"
},
"URLToPDF": {
"title": "URL/Website To PDF",
"desc": "Converts any http(s)URL to PDF"
},
"HTMLToPDF": {
"title": "HTML to PDF",
"desc": "Converts any HTML file or zip to PDF"
},
"MarkdownToPDF": {
"title": "Markdown to PDF",
"desc": "Converts any Markdown file to PDF"
},
"getPdfInfo": {
"title": "Get ALL Info on PDF",
"desc": "Grabs any and all information possible on PDFs"
},
"extractPage": {
"title": "Extract page(s)",
"desc": "Extracts select pages from PDF"
},
"PdfToSinglePage": {
"title": "PDF to Single Large Page",
"desc": "Merges all PDF pages into one large single page"
},
"showJS": {
"title": "Show Javascript",
"desc": "Searches and displays any JS injected into a PDF"
},
"autoRedact": {
"title": "Auto Redact",
"desc": "Auto Redacts(Blacks out) text in a PDF based on input text"
}
},
"viewPdf": {
"tags": "view,read,annotate,text,image",
"title": "View PDF",
"header": "View PDF"
},
"multiTool": {
"tags": "Multi Tool,Multi operation,UI,click drag,front end,client side,interactive,intractable,move",
"title": "PDF Multi Tool",
"header": "PDF Multi Tool"
},
"merge": {
"tags": "merge,Page operations,Back end,server side",
"title": "Merge",
"header": "Merge multiple PDFs (2+)",
"sortByName": "Sort by name",
"sortByDate": "Sort by date",
"submit": "Merge"
},
"split": {
"tags": "Page operations,divide,Multi Page,cut,server side ",
"title": "Split PDF",
"header": "Split PDF",
"desc": {
"1": "The numbers you select are the page number you wish to do a split on",
"2": "As such selecting 1,3,7-8 would split a 10 page document into 6 separate PDFS with:",
"3": "Document ",
"4": "Document ",
"5": "Document ",
"6": "Document ",
"7": "Document ",
"8": "Document "
},
"splitPages": "Enter pages to split on:",
"submit": "Split"
},
"rotate": {
"tags": "server side",
"title": "Rotate PDF",
"header": "Rotate PDF",
"selectAngle": "Select rotation angle (in multiples of 90 degrees):",
"submit": "Rotate"
},
"imageToPdf": {
"tags": "conversion,img,jpg,picture,photo"
},
"pdfToImage": {
"tags": "conversion,img,jpg,picture,photo",
"title": "PDF to Image",
"header": "PDF to Image",
"selectText": "Image Format",
"singleOrMultiple": "Page to Image result type",
"single": "Single Big Image Combing all pages",
"multi": "Multiple Images, one image per page",
"colorType": "Colour type",
"color": "Colour",
"grey": "Greyscale",
"blackwhite": "Black and White (May lose data!)",
"submit": "Convert"
},
"pdfOrganiser": {
"tags": "duplex,even,odd,sort,move",
"title": "Page Organiser",
"header": "PDF Page Organiser",
"submit": "Rearrange Pages"
},
"addImage": {
"tags": "img,jpg,picture,photo",
"title": "Add Image",
"header": "Add image to PDF",
"everyPage": "Every Page?",
"upload": "Add image",
"submit": "Add image"
},
"watermark": {
"tags": "Text,repeating,label,own,copyright,trademark,img,jpg,picture,photo",
"title": "Add Watermark",
"header": "Add Watermark",
"selectText": {
"1": "Select PDF to add watermark to:",
"2": "Watermark Text:",
"3": "Font Size:",
"4": "Rotation (0-360):",
"5": "widthSpacer (Space between each watermark horizontally):",
"6": "heightSpacer (Space between each watermark vertically):",
"7": "Opacity (0% - 100%):",
"8": "Watermark Type:",
"9": "Watermark Image:"
},
"submit": "Add Watermark"
},
"permissions": {
"tags": "read,write,edit,print",
"title": "Change Permissions",
"header": "Change Permissions",
"warning": "Warning to have these permissions be unchangeable it is recommended to set them with a password via the add-password page",
"selectText": {
"1": "Select PDF to change permissions",
"2": "Permissions to set",
"3": "Prevent assembly of document",
"4": "Prevent content extraction",
"5": "Prevent extraction for accessibility",
"6": "Prevent filling in form",
"7": "Prevent modification",
"8": "Prevent annotation modification",
"9": "Prevent printing",
"10": "Prevent printing different formats"
},
"submit": "Change"
},
"removePages": {
"tags": "Remove pages,delete pages"
},
"addPassword": {
"tags": "secure,security",
"title": "Add Password",
"header": "Add password (Encrypt)",
"selectText": {
"1": "Select PDF to encrypt",
"2": "User Password",
"3": "Encryption Key Length",
"4": "Higher values are stronger, but lower values have better compatibility.",
"5": "Permissions to set (Recommended to be used along with Owner password)",
"6": "Prevent assembly of document",
"7": "Prevent content extraction",
"8": "Prevent extraction for accessibility",
"9": "Prevent filling in form",
"10": "Prevent modification",
"11": "Prevent annotation modification",
"12": "Prevent printing",
"13": "Prevent printing different formats",
"14": "Owner Password",
"15": "Restricts what can be done with the document once it is opened (Not supported by all readers)",
"16": "Restricts the opening of the document itself"
},
"submit": "Encrypt"
},
"removePassword": {
"tags": "secure,Decrypt,security,unpassword,delete password",
"title": "Remove password",
"header": "Remove password (Decrypt)",
"selectText": {
"1": "Select PDF to Decrypt",
"2": "Password"
},
"submit": "Remove"
},
"compressPdfs": {
"tags": "squish,small,tiny"
},
"fileToPDF": {
"tags": "transformation,format,document,picture,slide,text,conversion,office,docs,word,excel,powerpoint",
"title": "File to PDF",
"header": "Convert any file to PDF",
"credit": "This service uses LibreOffice and Unoconv for file conversion.",
"supportedFileTypes": "Supported file types should include the below however for a full updated list of supported formats, please refer to the LibreOffice documentation",
"submit": "Convert to PDF"
},
"ocr": {
"tags": "recognition,text,image,scan,read,identify,detection,editable",
"title": "OCR / Scan Cleanup",
"header": "Cleanup Scans / OCR (Optical Character Recognition)",
"selectText": {
"1": "Select languages that are to be detected within the PDF (Ones listed are the ones currently detected):",
"2": "Produce text file containing OCR text alongside the OCR'ed PDF",
"3": "Correct pages were scanned at a skewed angle by rotating them back into place",
"4": "Clean page so its less likely that OCR will find text in background noise. (No output change)",
"5": "Clean page so its less likely that OCR will find text in background noise, maintains cleanup in output.",
"6": "Ignores pages that have interactive text on them, only OCRs pages that are images",
"7": "Force OCR, will OCR Every page removing all original text elements",
"8": "Normal (Will error if PDF contains text)",
"9": "Additional Settings",
"10": "OCR Mode",
"11": "Remove images after OCR (Removes ALL images, only useful if part of conversion step)",
"12": "Render Type (Advanced)"
},
"help": "Please read this documentation on how to use this for other languages and/or use not in docker",
"credit": "This service uses OCRmyPDF and Tesseract for OCR.",
"submit": "Process PDF with OCR"
},
"extractImages": {
"tags": "picture,photo,save,archive,zip,capture,grab",
"title": "Extract Images",
"header": "Extract Images",
"selectText": "Select image format to convert extracted images to",
"submit": "Extract"
},
"pdfToPDFA": {
"tags": "archive,long-term,standard,conversion,storage,preservation",
"title": "PDF To PDF/A",
"header": "PDF To PDF/A",
"credit": "This service uses OCRmyPDF for PDF/A conversion",
"submit": "Convert"
},
"PDFToWord": {
"tags": "doc,docx,odt,word,transformation,format,conversion,office,microsoft,docfile",
"title": "PDF to Word",
"header": "PDF to Word",
"selectText": {
"1": "Output file format"
},
"credit": "This service uses LibreOffice for file conversion.",
"submit": "Convert"
},
"PDFToPresentation": {
"tags": "slides,show,office,microsoft",
"title": "PDF to Presentation",
"header": "PDF to Presentation",
"selectText": {
"1": "Output file format"
},
"credit": "This service uses LibreOffice for file conversion.",
"submit": "Convert"
},
"PDFToText": {
"tags": "richformat,richtextformat,rich text format",
"title": "PDF to RTF (Text)",
"header": "PDF to RTF (Text)",
"selectText": {
"1": "Output file format"
},
"credit": "This service uses LibreOffice for file conversion.",
"submit": "Convert"
},
"PDFToHTML": {
"tags": "web content,browser friendly",
"title": "PDF to HTML",
"header": "PDF to HTML",
"credit": "This service uses LibreOffice for file conversion.",
"submit": "Convert"
},
"PDFToXML": {
"tags": "data-extraction,structured-content,interop,transformation,convert",
"title": "PDF to XML",
"header": "PDF to XML",
"credit": "This service uses LibreOffice for file conversion.",
"submit": "Convert"
},
"ScannerImageSplit": {
"tags": "separate,auto-detect,scans,multi-photo,organize",
"selectText": {
"1": "Angle Threshold:",
"2": "Sets the minimum absolute angle required for the image to be rotated (default: 10).",
"3": "Tolerance:",
"4": "Determines the range of color variation around the estimated background color (default: 30).",
"5": "Minimum Area:",
"6": "Sets the minimum area threshold for a photo (default: 10000).",
"7": "Minimum Contour Area:",
"8": "Sets the minimum contour area threshold for a photo",
"9": "Border Size:",
"10": "Sets the size of the border added and removed to prevent white borders in the output (default: 1)."
}
},
"sign": {
"tags": "authorize,initials,drawn-signature,text-sign,image-signature",
"title": "Sign",
"header": "Sign PDFs",
"upload": "Upload Image",
"draw": "Draw Signature",
"text": "Text Input",
"clear": "Clear",
"add": "Add"
},
"flatten": {
"tags": "static,deactivate,non-interactive,streamline",
"title": "Flatten",
"header": "Flatten PDFs",
"submit": "Flatten"
},
"repair": {
"tags": "fix,restore,correction,recover",
"title": "Repair",
"header": "Repair PDFs",
"submit": "Repair"
},
"removeBlanks": {
"tags": "cleanup,streamline,non-content,organize",
"title": "Remove Blanks",
"header": "Remove Blank Pages",
"threshold": "Pixel Whiteness Threshold:",
"thresholdDesc": "Threshold for determining how white a white pixel must be to be classed as 'White'. 0 ",
"whitePercent": "White Percent (%):",
"whitePercentDesc": "Percent of page that must be 'white' pixels to be removed",
"submit": "Remove Blanks"
},
"compare": {
"tags": "differentiate,contrast,changes,analysis",
"title": "Compare",
"header": "Compare PDFs",
"document": {
"1": "Document 1",
"2": "Document 2"
},
"submit": "Compare"
},
"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: ",
"selectKey": "Select Your Private Key File (PKCS",
"selectCert": "Select Your Certificate File (X.509 format, could be .pem or .der): ",
"selectP12": "Select Your PKCS",
"certType": "Certificate Type",
"password": "Enter Your Keystore or Private Key Password (If Any): ",
"showSig": "Show Signature",
"reason": "Reason",
"location": "Location",
"name": "Name ",
"submit": "Sign PDF"
},
"pageLayout": {
"tags": "merge,composite,single-view,organize",
"title": "Multi Page Layout",
"header": "Multi Page Layout",
"pagesPerSheet": "Pages per sheet:",
"addBorder": "Add Borders",
"submit": "Submit"
},
"scalePages": {
"tags": "resize,modify,dimension,adapt",
"title": "Adjust page-scale",
"header": "Adjust page-scale",
"pageSize": "Size of a page of the document.",
"scaleFactor": "Zoom level (crop) of a page.",
"submit": "Submit"
},
"pipeline": {
"tags": "automate,sequence,scripted,batch-process",
"title": "Pipeline"
},
"add-page-numbers": {
"tags": "paginate,label,organize,index"
},
"auto-rename": {
"tags": "auto-detect,header-based,organize,relabel",
"title": "Auto Rename",
"header": "Auto Rename PDF",
"submit": "Auto Rename"
},
"adjust-contrast": {
"tags": "color-correction,tune,modify,enhance"
},
"crop": {
"tags": "trim,shrink,edit,shape",
"title": "Crop",
"header": "Crop Image",
"submit": "Submit"
},
"autoSplitPDF": {
"tags": "QR-based,separate,scan-segment,organize",
"title": "Auto Split PDF",
"header": "Auto Split PDF",
"description": "Print, Insert, Scan, upload, and let us auto-separate your documents. No manual work sorting needed.",
"selectText": {
"1": "Print out some divider sheets from below (Black and white is fine).",
"2": "Scan all your documents at once by inserting the divider sheet between them.",
"3": "Upload the single large scanned PDF file and let Stirling PDF handle the rest.",
"4": "Divider pages are automatically detected and removed, guaranteeing a neat final document."
},
"formPrompt": "Submit PDF containing Stirling-PDF Page dividers:",
"duplexMode": "Duplex Mode (Front and back scanning)",
"dividerDownload1": "Download 'Auto Splitter Divider (minimal).pdf'",
"dividerDownload2": "Download 'Auto Splitter Divider (with instructions).pdf'",
"submit": "Submit"
},
"sanitizePdf": {
"tags": "clean,secure,safe,remove-threats"
},
"URLToPDF": {
"tags": "web-capture,save-page,web-to-doc,archive",
"title": "URL To PDF",
"header": "URL To PDF",
"submit": "Convert",
"credit": "Uses WeasyPrint"
},
"HTMLToPDF": {
"tags": "markup,web-content,transformation,convert",
"title": "HTML To PDF",
"header": "HTML To PDF",
"help": "Accepts HTML files and ZIPs containing html/css/images etc required",
"submit": "Convert",
"credit": "Uses WeasyPrint"
},
"MarkdownToPDF": {
"tags": "markup,web-content,transformation,convert",
"title": "Markdown To PDF",
"header": "Markdown To PDF",
"submit": "Convert",
"help": "Work in progress",
"credit": "Uses WeasyPrint"
},
"getPdfInfo": {
"tags": "infomation,data,stats,statistics",
"title": "Get Info on PDF",
"header": "Get Info on PDF",
"submit": "Get Info",
"downloadJson": "Download JSON"
},
"extractPage": {
"tags": "extract"
},
"PdfToSinglePage": {
"tags": "single page"
},
"showJS": {
"tags": "Redact,Hide,black out,black,marker,hidden",
"title": "Show Javascript",
"header": "Show Javascript",
"downloadJS": "Download Javascript",
"submit": "Show"
},
"login": {
"title": "Sign in",
"signin": "Sign in",
"rememberme": "Remember me",
"invalid": "Invalid username or password.",
"locked": "Your account has been locked.",
"signinTitle": "Please sign in"
},
"autoRedact": {
"title": "Auto Redact",
"header": "Auto Redact",
"colorLabel": "Colour",
"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"
},
"pdfToSinglePage": {
"title": "PDF To Single Page",
"header": "PDF To Single Page",
"submit": "Convert To Single Page"
},
"pageExtracter": {
"title": "Extract Pages",
"header": "Extract Pages",
"submit": "Extract"
},
"sanitizePDF": {
"title": "Sanitize PDF",
"header": "Sanitize a PDF file",
"selectText": {
"1": "Remove JavaScript actions",
"2": "Remove embedded files",
"3": "Remove metadata",
"4": "Remove links",
"5": "Remove fonts"
},
"submit": "Sanitize PDF"
},
"addPageNumbers": {
"title": "Add Page Numbers",
"header": "Add Page Numbers",
"selectText": {
"1": "Select PDF file:",
"2": "Margin Size",
"3": "Position",
"4": "Starting Number",
"5": "Pages to Number",
"6": "Custom Text"
},
"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"
},
"adjustContrast": {
"title": "Adjust Contrast",
"header": "Adjust Contrast",
"contrast": "Contrast:",
"brightness": "Brightness:",
"saturation": "Saturation:",
"download": "Download"
},
"compress": {
"title": "Compress",
"header": "Compress PDF",
"credit": "This service uses Ghostscript for PDF Compress/Optimisation.",
"selectText": {
"1": "Manual Mode - From 1 to 4",
"2": "Optimization level:",
"3": "4 (Terrible for text images)",
"4": "Auto mode - Auto adjusts quality to get PDF to exact size",
"5": "Expected PDF Size (e.g. 25MB, 10.8MB, 25KB) "
},
"submit": "Compress"
},
"pageRemover": {
"title": "Page Remover",
"header": "PDF Page remover",
"pagesToDelete": "Pages to delete (Enter a comma-separated list of page numbers) :",
"submit": "Delete Pages"
},
"imageToPDF": {
"title": "Image to PDF",
"header": "Image to PDF",
"submit": "Convert",
"selectLabel": "Image Fit Options",
"fillPage": "Fill Page",
"fitDocumentToImage": "Fit Page to Image",
"maintainAspectRatio": "Maintain Aspect Ratios",
"selectText": {
"2": "Auto rotate PDF",
"3": "Multi file logic (Only enabled if working with multiple images)",
"4": "Merge into single PDF",
"5": "Convert to separate PDFs"
}
},
"changeMetadata": {
"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"
},
"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"
}
}
}

70
package-lock.json generated
View File

@ -71,10 +71,13 @@
"@tauri-apps/api": "^1.5.1",
"archiver": "^6.0.1",
"bootstrap": "^5.3.2",
"i18next": "^23.6.0",
"i18next-browser-languagedetector": "^7.1.0",
"path-browserify": "^1.0.1",
"react": "^18.2.0",
"react-bootstrap": "^2.9.1",
"react-dom": "^18.2.0",
"react-i18next": "^13.3.1",
"react-icons": "^4.11.0",
"react-router-bootstrap": "^0.26.2",
"react-router-dom": "^6.18.0"
@ -7502,6 +7505,14 @@
"node": ">=12"
}
},
"node_modules/html-parse-stringify": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz",
"integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==",
"dependencies": {
"void-elements": "3.1.0"
}
},
"node_modules/http-errors": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@ -7613,6 +7624,36 @@
"node": ">=8.12.0"
}
},
"node_modules/i18next": {
"version": "23.6.0",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-23.6.0.tgz",
"integrity": "sha512-z0Cxr0MGkt+kli306WS4nNNM++9cgt2b2VCMprY92j+AIab/oclgPxdwtTZVLP1zn5t5uo8M6uLsZmYrcjr3HA==",
"funding": [
{
"type": "individual",
"url": "https://locize.com"
},
{
"type": "individual",
"url": "https://locize.com/i18next.html"
},
{
"type": "individual",
"url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project"
}
],
"dependencies": {
"@babel/runtime": "^7.22.5"
}
},
"node_modules/i18next-browser-languagedetector": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz",
"integrity": "sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==",
"dependencies": {
"@babel/runtime": "^7.19.4"
}
},
"node_modules/iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@ -10023,6 +10064,27 @@
"react": "^18.2.0"
}
},
"node_modules/react-i18next": {
"version": "13.3.1",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-13.3.1.tgz",
"integrity": "sha512-JAtYREK879JXaN9GdzfBI4yJeo/XyLeXWUsRABvYXiFUakhZJ40l+kaTo+i+A/3cKIED41kS/HAbZ5BzFtq/Og==",
"dependencies": {
"@babel/runtime": "^7.22.5",
"html-parse-stringify": "^3.0.1"
},
"peerDependencies": {
"i18next": ">= 23.2.3",
"react": ">= 16.8.0"
},
"peerDependenciesMeta": {
"react-dom": {
"optional": true
},
"react-native": {
"optional": true
}
}
},
"node_modules/react-icons": {
"version": "4.11.0",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz",
@ -11988,6 +12050,14 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/void-elements": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz",
"integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/w3c-xmlserializer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",