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", "@tauri-apps/api": "^1.5.1",
"archiver": "^6.0.1", "archiver": "^6.0.1",
"bootstrap": "^5.3.2", "bootstrap": "^5.3.2",
"i18next": "^23.6.0",
"i18next-browser-languagedetector": "^7.1.0",
"path-browserify": "^1.0.1", "path-browserify": "^1.0.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-bootstrap": "^2.9.1", "react-bootstrap": "^2.9.1",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-i18next": "^13.3.1",
"react-icons": "^4.11.0", "react-icons": "^4.11.0",
"react-router-bootstrap": "^0.26.2", "react-router-bootstrap": "^0.26.2",
"react-router-dom": "^6.18.0" "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 { Routes, Route, Outlet } from "react-router-dom";
import Home from "./pages/Home"; import Home from "./pages/Home";
import About from "./pages/About"; import About from "./pages/About";
@ -6,11 +8,28 @@ import NoMatch from "./pages/NoMatch";
import NavBar from "./components/NavBar"; import NavBar from "./components/NavBar";
import 'bootstrap/dist/css/bootstrap.min.css'; 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() { export default function App() {
return ( return (
<div> <Suspense fallback="loading">
{/* Routes nest inside one another. Nested route paths build upon {/* Routes nest inside one another. Nested route paths build upon
parent route paths, and nested route elements render inside parent route paths, and nested route elements render inside
parent route elements. See the note about <Outlet> below. */} parent route elements. See the note about <Outlet> below. */}
@ -26,13 +45,14 @@ export default function App() {
<Route path="*" element={<NoMatch />} /> <Route path="*" element={<NoMatch />} />
</Route> </Route>
</Routes> </Routes>
</div> </Suspense>
); );
} }
function Layout() { function Layout() {
const { t } = useTranslation();
return ( return (
<div> <div lang-direction={t('language.direction')}>
<NavBar/> <NavBar/>
{/* An <Outlet> renders whatever child route is currently active, {/* 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; height: 16px;
vertical-align: middle; vertical-align: middle;
transform: translateY(-2px); transform: translateY(-2px);
margin-left: 4px;
margin-right: 4px;
} }
/* /*
.icon+.icon { .icon+.icon {
@ -110,7 +112,8 @@
} }
*/ */
.nav-icon span { .nav-icon span {
margin-left: 9px; margin-left: 4px;
margin-right: 4px;
} }
.nav-item-separator { .nav-item-separator {

View File

@ -1,12 +1,19 @@
import { AiOutlineMergeCells, AiOutlineSplitCells } from "react-icons/ai";
import { BiCrop } from "react-icons/bi";
import { import {
BsTools, BsSortNumericDown, BsArrowClockwise, BsFileEarmarkX, BsLayoutSplit, BsPalette, BsArrowUpSquare, Bs1Square, BsFileEarmarkPdf, BsTools, BsSortNumericDown, BsArrowClockwise, BsFileEarmarkX, BsLayoutSplit, BsPalette, BsArrowUpSquare, Bs1Square, BsFileEarmarkPdf,
BsArrowLeftRight, BsFileEarmarkImage, BsFileEarmark, BsFiletypeHtml, BsLink, BsFiletypeMd, BsFileEarmarkWord, BsFiletypePpt, BsFiletypeTxt, 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"; } from "react-icons/bs";
import { AiOutlineMergeCells, AiOutlineSplitCells } from "react-icons/ai"; import { GiScales } from "react-icons/gi";
import { LuLayoutGrid } from "react-icons/lu"; 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 { 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 { IconType } from "react-icons";
import Container from 'react-bootstrap/Container'; import Container from 'react-bootstrap/Container';
@ -14,7 +21,9 @@ import Nav from 'react-bootstrap/Nav';
import Navbar from 'react-bootstrap/Navbar'; import Navbar from 'react-bootstrap/Navbar';
import NavDropdown from 'react-bootstrap/NavDropdown'; import NavDropdown from 'react-bootstrap/NavDropdown';
import { LinkContainer } from 'react-router-bootstrap'; import { LinkContainer } from 'react-router-bootstrap';
import { useTranslation } from 'react-i18next';
import LanguagePicker from "./LanguagePicker";
import Logo from '../../public/stirling-pdf-logo.svg' import Logo from '../../public/stirling-pdf-logo.svg'
import './NavBar.css'; import './NavBar.css';
@ -36,53 +45,107 @@ function convertToNavLink(item: NavInfoItem, index: number) {
function convertToNavDropdownItem(item: NavInfoItem | null) { function convertToNavDropdownItem(item: NavInfoItem | null) {
if (item == null) if (item == null)
return <NavDropdown.Divider />; 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) { function convertToNavDropdown(sublist: NavInfoSublist) {
var myTitle = <>
<span className="nav-icon">
<sublist.icon/>
<span>{sublist.displayText}</span>
</span>
</>;
return ( 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)} {sublist.sublist.map(convertToNavDropdownItem)}
</NavDropdown> </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 = [ const navInfo = [
{displayText: "PDF Multi Tool", icon: BsTools, dest: "/home", tooltip: "Merge, Rotate, Rearrange, and Remove pages"}, {displayText: t('multiTool.title'), icon: BsTools, dest: "/home", tooltip: t('home.multiTool.desc')},
{displayText: "Page Operations", icon: BsFileEarmarkPdf, sublist: [ {displayText: t('navbar.pageOps'), icon: BsFileEarmarkPdf, sublist: [
{ displayText: "Merge", icon: AiOutlineMergeCells, dest: "/dashboard", tooltip: "Easily merge multiple PDFs into one." }, { displayText: t('home.merge.title'), icon: AiOutlineMergeCells, dest: "/dashboard", tooltip: t('home.merge.desc') },
{ displayText: "Split", icon: AiOutlineSplitCells, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.split.title'), icon: AiOutlineSplitCells, dest: "/nothing-here", tooltip: t('home.split.desc') },
{ displayText: "Organise", icon: BsSortNumericDown, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.pdfOrganiser.title'), icon: BsSortNumericDown, dest: "/nothing-here", tooltip: t('home.pdfOrganiser.desc') },
{ displayText: "Rotate", icon: BsArrowClockwise, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.rotate.title'), icon: BsArrowClockwise, dest: "/nothing-here", tooltip: t('home.rotate.desc') },
{ displayText: "Remove", icon: BsFileEarmarkX, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.removePages.title'), icon: BsFileEarmarkX, dest: "/nothing-here", tooltip: t('home.removePages.desc') },
{ displayText: "Multi-Page Layout", icon: LuLayoutGrid, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.pageLayout.title'), icon: LuLayoutGrid, dest: "/nothing-here", tooltip: t('home.pageLayout.desc') },
{ displayText: "Adjust page size/scale", icon: SlSizeFullscreen, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.scalePages.title'), icon: SlSizeFullscreen, dest: "/nothing-here", tooltip: t('home.scalePages.desc') },
{ displayText: "Auto Split Pages", icon: BsLayoutSplit, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.autoSplitPDF.title'), icon: BsLayoutSplit, dest: "/nothing-here", tooltip: t('home.autoSplitPDF.desc') },
{ displayText: "Adjust Colors/Contrast", icon: BsPalette, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.adjust-contrast.title'), icon: BsPalette, dest: "/nothing-here", tooltip: t('home.adjust-contrast.desc') },
{ displayText: "Crop PDF", icon: BiCrop, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.crop.title'), icon: BiCrop, dest: "/nothing-here", tooltip: t('home.crop.desc') },
{ displayText: "Extract page(s)", icon: BsArrowUpSquare, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.extractPage.title'), icon: BsArrowUpSquare, dest: "/nothing-here", tooltip: t('home.extractPage.desc') },
{ displayText: "PDF to Single Large Page", icon: Bs1Square, dest: "/nothing-here", tooltip: "fghjgfhj" }, { displayText: t('home.PdfToSinglePage.title'), icon: Bs1Square, dest: "/nothing-here", tooltip: t('home.PdfToSinglePage.desc') },
]}, ]},
{displayText: "Convert", icon: BsArrowLeftRight, sublist: [ {displayText: t('navbar.convert'), icon: BsArrowLeftRight, sublist: [
{ displayText: "Image to PDF", icon: BsFileEarmarkImage, dest: "/dashboard" }, { displayText: t('home.imageToPdf.title'), icon: BsFileEarmarkImage, dest: "/dashboard", tooltip: t('home.imageToPdf.desc') },
{ displayText: "File to PDF", icon: BsFileEarmark, dest: "/nothing-here" }, { displayText: t('home.fileToPDF.title'), icon: BsFileEarmark, dest: "/nothing-here", tooltip: t('home.fileToPDF.desc') },
{ displayText: "HTML to PDF", icon: BsFiletypeHtml, dest: "/nothing-here" }, { displayText: t('home.HTMLToPDF.title'), icon: BsFiletypeHtml, dest: "/nothing-here", tooltip: t('home.HTMLToPDF.desc') },
{ displayText: "URL/Website To PDF", icon: BsLink, dest: "/nothing-here" }, { displayText: t('home.URLToPDF.title'), icon: BsLink, dest: "/nothing-here", tooltip: t('home.URLToPDF.desc') },
{ displayText: "Markdown to PDF", icon: BsFiletypeMd, dest: "/nothing-here" }, { displayText: t('home.MarkdownToPDF.title'), icon: BsFiletypeMd, dest: "/nothing-here", tooltip: t('home.MarkdownToPDF.desc') },
null, null,
{ displayText: "PDF to Image", icon: BsFileEarmarkImage, dest: "/nothing-here" }, { displayText: t('home.pdfToImage.title'), icon: BsFileEarmarkImage, dest: "/nothing-here", tooltip: t('home.pdfToImage.desc') },
{ displayText: "PDF to Word", icon: BsFileEarmarkWord, dest: "/nothing-here" }, { displayText: t('home.PDFToWord.title'), icon: BsFileEarmarkWord, dest: "/nothing-here", tooltip: t('home.PDFToWord.desc') },
{ displayText: "PDF to Presentation", icon: BsFiletypePpt, dest: "/nothing-here" }, { displayText: t('home.PDFToPresentation.title'), icon: BsFiletypePpt, dest: "/nothing-here", tooltip: t('home.PDFToPresentation.desc') },
{ displayText: "PDF to RTF (Text)", icon: BsFiletypeTxt, dest: "/nothing-here" }, { displayText: t('home.PDFToText.title'), icon: BsFiletypeTxt, dest: "/nothing-here", tooltip: t('home.PDFToText.desc') },
{ displayText: "PDF to HTML", icon: BsFiletypeHtml, dest: "/nothing-here" }, { displayText: t('home.PDFToHTML.title'), icon: BsFiletypeHtml, dest: "/nothing-here", tooltip: t('home.PDFToHTML.desc') },
{ displayText: "PDF to XML", icon: BsFiletypeXml, dest: "/nothing-here" }, { displayText: t('home.PDFToXML.title'), icon: BsFiletypeXml, dest: "/nothing-here", tooltip: t('home.PDFToXML.desc') },
{ displayText: "PDF to PDF/A", icon: BsFileEarmarkPdf, dest: "/nothing-here" }, { 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>; ] as Array<NavInfoItem | NavInfoSublist>;
return ( return (
<Navbar expand="lg" className="bg-light"> <Navbar expand="lg" className="bg-light">
<Container> <Container>
@ -94,7 +157,7 @@ function Layout() {
</LinkContainer> </LinkContainer>
<Navbar.Toggle aria-controls="basic-navbar-nav"/> <Navbar.Toggle aria-controls="basic-navbar-nav"/>
<Navbar.Collapse id="basic-navbar-nav"> <Navbar.Collapse id="basic-navbar-nav">
<Nav className="me-auto"> <Nav>
{navInfo.map((ni, idx) => { {navInfo.map((ni, idx) => {
var element; var element;
if ('dest' in ni) { if ('dest' in ni) {
@ -112,10 +175,14 @@ function Layout() {
} }
})} })}
</Nav> </Nav>
<div className="flex-fill-remaining-space"></div>
<Nav>
<LanguagePicker />
</Nav>
</Navbar.Collapse> </Navbar.Collapse>
</Container> </Container>
</Navbar> </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", "@tauri-apps/api": "^1.5.1",
"archiver": "^6.0.1", "archiver": "^6.0.1",
"bootstrap": "^5.3.2", "bootstrap": "^5.3.2",
"i18next": "^23.6.0",
"i18next-browser-languagedetector": "^7.1.0",
"path-browserify": "^1.0.1", "path-browserify": "^1.0.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-bootstrap": "^2.9.1", "react-bootstrap": "^2.9.1",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-i18next": "^13.3.1",
"react-icons": "^4.11.0", "react-icons": "^4.11.0",
"react-router-bootstrap": "^0.26.2", "react-router-bootstrap": "^0.26.2",
"react-router-dom": "^6.18.0" "react-router-dom": "^6.18.0"
@ -7502,6 +7505,14 @@
"node": ">=12" "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": { "node_modules/http-errors": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
@ -7613,6 +7624,36 @@
"node": ">=8.12.0" "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": { "node_modules/iconv-lite": {
"version": "0.4.24", "version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@ -10023,6 +10064,27 @@
"react": "^18.2.0" "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": { "node_modules/react-icons": {
"version": "4.11.0", "version": "4.11.0",
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz",
@ -11988,6 +12050,14 @@
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true "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": { "node_modules/w3c-xmlserializer": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",