diff --git a/README.md b/README.md index d24cf108..4909ea29 100644 --- a/README.md +++ b/README.md @@ -302,6 +302,7 @@ BentoPDF is available in multiple languages: | Vietnamese | [![Vietnamese](https://img.shields.io/badge/Complete-green?style=flat-square)](public/locales/vi/common.json) | | Korean | [![Korean](https://img.shields.io/badge/Complete-green?style=flat-square)](public/locales/ko/common.json) | | Russian | [![Russian](https://img.shields.io/badge/Complete-green?style=flat-square)](public/locales/ru/common.json) | +| Persian (Farsi) | [![Persian](https://img.shields.io/badge/Complete-green?style=flat-square)](public/locales/fa/common.json) | Want to help translate BentoPDF into your language? Check out our [Translation Guide](TRANSLATION.md)! diff --git a/TRANSLATION.md b/TRANSLATION.md index 579a5ea2..5a8599c5 100644 --- a/TRANSLATION.md +++ b/TRANSLATION.md @@ -40,6 +40,7 @@ BentoPDF uses **i18next** for internationalization (i18n). Currently supported l - **Danish** (`da`) - **Swedish** (`sv`) - **Japanese** (`ja`) +- **Persian (Farsi)** (`fa`) The app automatically detects the language from the URL path: @@ -617,6 +618,7 @@ Current translation coverage: | Danish | `da` | ✅ Complete | Community | | Swedish | `sv` | ✅ Complete | Community | | Japanese | `ja` | ✅ Complete | Community | +| Persian (Farsi) | `fa` | ✅ Complete | Community | | Your Language | `??` | 🚧 In Progress | You? | --- diff --git a/public/locales/fa/tools.json b/public/locales/fa/tools.json index 6496e516..9bd4e85f 100644 --- a/public/locales/fa/tools.json +++ b/public/locales/fa/tools.json @@ -19,7 +19,8 @@ "name": "ادغام PDF", "subtitle": "چند PDF را در یک فایل ترکیب کنید. نشانک‌ها حفظ می‌شوند.", "retainPageLabels": "حفظ برچسب‌های اصلی صفحات هر فایل", - "retainPageLabelsHint": "خاموش (پیش‌فرض): PDF ادغام‌شده از شماره‌گذاری طبیعی ۱ تا N استفاده می‌کند. روشن: برچسب‌های اصلی صفحات هر فایل حفظ می‌شوند (ممکن است برچسب‌های تکراری پدید آید)." + "retainPageLabelsHint": "خاموش (پیش‌فرض): PDF ادغام‌شده از شماره‌گذاری طبیعی ۱ تا N استفاده می‌کند. روشن: برچسب‌های اصلی صفحات هر فایل حفظ می‌شوند (ممکن است برچسب‌های تکراری پدید آید).", + "removeDuplicateFonts": "حذف قلم‌های تکراری" }, "splitPdf": { "name": "تقسیم PDF", @@ -55,6 +56,122 @@ "name": "ویرایشگر PDF", "subtitle": "حاشیه‌نویسی، هایلایت، سانسور، درج نظر، افزودن شکل و تصویر، جستجو و مشاهدهٔ PDF." }, + "editPdfText": { + "name": "ویرایش متن PDF", + "subtitle": "روی هر پاراگراف کلیک کنید و آن را در جای خود، همراه با بازچینش زنده، قلم‌ها و قالب‌بندی، ویرایش کنید.", + "saved": "PDF با موفقیت ذخیره شد! ({{size}} کیلوبایت)", + "failedToLoad": "بارگذاری ویرایشگر متن PDF ناموفق بود.", + "howToUpload": "بارگذاری PDF", + "howToClick": "کلیک روی یک پاراگراف", + "howToRestyle": "تغییر قالب هر عنصر", + "relatedPdfEditor": "حاشیه‌نویسی و علامت‌گذاری PDF", + "relatedSignPdf": "امضا را بکشید، تایپ کنید یا بارگذاری کنید", + "relatedWatermark": "درج مهر متنی یا تصویری", + "relatedStamps": "قرار دادن مهر روی صفحات", + "relatedCompress": "کاهش حجم فایل", + "relatedOrganizeName": "سازماندهی PDF", + "relatedOrganize": "مرتب‌سازی و مدیریت صفحات", + "open": "باز کردن", + "export": "برون‌ریزی", + "filterAll": "همه", + "filterText": "متن", + "filterImages": "تصاویر", + "filterShapes": "شکل‌ها", + "addText": "افزودن متن", + "langAuto": "خودکار", + "change": "تغییر", + "ignore": "نادیده گرفتن", + "next": "بعدی", + "replace": "جایگزینی", + "replaceAll": "جایگزینی همه", + "emptyState": "یک PDF باز کنید تا متن، تصاویر و شکل‌های آن را ویرایش کنید.", + "choosePdf": "یک PDF انتخاب کنید…", + "font": "قلم", + "systemFonts": "قلم‌های سیستم", + "color": "رنگ", + "alignment": "ترازبندی", + "style": "سبک", + "lists": "فهرست‌ها", + "outline": "دورخط", + "spacing": "فاصله‌گذاری", + "direction": "جهت", + "dirAuto": "خودکار", + "pathStroke": "خط مسیر", + "tipBackToUpload": "بازگشت به بارگذاری", + "tipOpenAnotherPdf": "باز کردن PDF دیگر", + "tipExportS": "برون‌ریزی (⌘S)", + "tipUndoZ": "واگرد (⌘Z)", + "tipRedoZ": "ازنو (⇧⌘Z)", + "tipFileDetails": "جزئیات فایل", + "tipEditExistingContent": "ویرایش محتوای موجود", + "tipWhatTheEditToolTouchesNarrowTheScopeOnBus": "آنچه ابزار ویرایش تغییر می‌دهد — دامنه را در صفحات شلوغ محدود کنید", + "tipClickThePageToAddATextBox": "برای افزودن کادر متن روی صفحه کلیک کنید", + "tipSpellCheckLanguage": "زبان غلط‌یاب", + "tipFindAndReplace": "یافتن و جایگزینی", + "tipAddAnImage": "افزودن تصویر", + "tipCopyThisPageSTextInReadingOrder": "رونوشت متن این صفحه به ترتیب خواندن", + "tipCheckTheSpellingOfThisPage": "بررسی املای این صفحه", + "tipShowOrHideTheFormatPanel": "نمایش یا پنهان کردن پنل قالب‌بندی", + "phReplaceWith": "جایگزینی با", + "tipAddToYourDictionary": "افزودن به واژه‌نامهٔ شما", + "tipClose": "بستن", + "phFind": "یافتن", + "tipPreviousMatch": "مورد قبلی", + "tipNextMatch": "مورد بعدی", + "tipRotateLeft90": "چرخش ۹۰ درجه به چپ", + "tipRotateRight90": "چرخش ۹۰ درجه به راست", + "tipFlipHorizontal": "وارونه‌سازی افقی", + "tipFlipVertical": "وارونه‌سازی عمودی", + "tipReplaceThisImageKeepingItsPlacement": "جایگزینی این تصویر با حفظ جایگاه آن", + "tipAlternateTextForAccessibilityTaggedPdfs": "متن جایگزین برای دسترس‌پذیری (PDFهای برچسب‌دار)", + "tipBringToFront": "انتقال به جلو", + "tipSendToBack": "انتقال به عقب", + "tipDuplicate": "تکثیر", + "tipDelete": "حذف", + "tipAlignLeftEdges": "تراز لبه‌های چپ", + "tipAlignHorizontalCenters": "تراز مراکز افقی", + "tipAlignRightEdges": "تراز لبه‌های راست", + "tipAlignTops": "تراز بالاها", + "tipAlignVerticalCenters": "تراز مراکز عمودی", + "tipAlignBottoms": "تراز پایین‌ها", + "tipDistributeHorizontally": "توزیع افقی", + "tipDistributeVertically": "توزیع عمودی", + "tipFontSize": "اندازهٔ قلم", + "tipListFontsInstalledOnThisDeviceChromium": "فهرست قلم‌های نصب‌شده روی این دستگاه (Chromium)", + "tipCustomTextColor": "رنگ متن دلخواه", + "tipAlignLeft": "تراز چپ", + "tipAlignCenter": "تراز وسط", + "tipAlignRight": "تراز راست", + "tipJustify": "تراز از دو طرف", + "tipBold": "توپر", + "tipItalic": "مورب", + "tipUnderline": "زیرخط", + "tipStrikethrough": "خط‌خورده", + "tipSuperscript": "بالانویس", + "tipSubscript": "پایین‌نویس", + "tipToggleBulletedItem": "تغییر وضعیت فهرست نشانه‌دار", + "tipToggleNumberedItem": "تغییر وضعیت فهرست شماره‌دار", + "tipNumberedListMarkerStyle": "سبک نشانهٔ فهرست شماره‌دار", + "tipDecreaseListIndentTab": "کاهش تورفتگی فهرست (⇧Tab)", + "tipIncreaseListIndentTab": "افزایش تورفتگی فهرست (Tab)", + "tipTextOutlineColor": "رنگ دورخط متن", + "tipOutlineWidth0None": "ضخامت دورخط (۰ = بدون دورخط)", + "tipFromContent": "بر پایهٔ محتوا", + "tipLeftToRight": "چپ به راست", + "tipRightToLeft": "راست به چپ", + "tipStrokeColor": "رنگ خط", + "tipStrokeWidth": "ضخامت خط", + "tipZoomPresets": "بزرگ‌نمایی‌های از پیش تعیین‌شده", + "tipZoomOut": "کوچک‌نمایی", + "tipZoomIn": "بزرگ‌نمایی", + "tipFitPage": "جا دادن صفحه", + "tipPreviousPage": "صفحهٔ قبلی", + "tipTypeAPageNumberAndPressEnter": "شمارهٔ صفحه را وارد کنید و Enter را بزنید", + "tipNextPage": "صفحهٔ بعدی", + "tipDocumentProperties": "ویژگی‌های سند", + "tipHideBar": "پنهان کردن نوار", + "tipShowBar": "نمایش نوار" + }, "jpgToPdf": { "name": "JPG به PDF", "subtitle": "از تصاویر JPG، JPEG و JPEG2000 (JP2/JPX) یک PDF بسازید." @@ -399,7 +516,8 @@ "noFile": "بدون فایل", "noFileExplanation": "لطفاً نخست یک فایل PDF بارگذاری کنید.", "conversionSuccess": "PDF با موفقیت به TIFF تبدیل شد!", - "conversionError": "تبدیل PDF به TIFF ناموفق بود. ممکن است فایل آسیب‌دیده باشد." + "conversionError": "تبدیل PDF به TIFF ناموفق بود. ممکن است فایل آسیب‌دیده باشد.", + "conversionOutOfMemory": "حافظهٔ مرورگر هنگام تبدیل تمام شد. DPI کمتری را امتحان کنید، یا گزینهٔ TIFF چندصفحه‌ای را بردارید تا صفحات یکی‌یکی تبدیل شوند." } }, "pdfToCbz": { @@ -514,6 +632,51 @@ "retainPageLabels": "حفظ برچسب‌های اصلی صفحات هر فایل", "retainPageLabelsHint": "خاموش (پیش‌فرض): PDF ادغام‌شده از شماره‌گذاری طبیعی ۱ تا N استفاده می‌کند. روشن: برچسب‌های اصلی صفحات هر فایل حفظ می‌شوند (ممکن است برچسب‌های تکراری پدید آید)." }, + "duplexCollate": { + "name": "تلفیق دورو", + "subtitle": "PDF اسکن‌شده به‌صورت دو بلوک (ابتدا همهٔ روها، سپس همهٔ پشت‌ها) را به ترتیب درست رو/پشت مرتب کنید.", + "totalPagesLabel": "کل صفحات:", + "splitAfterPageLabel": "تقسیم پس از صفحهٔ", + "splitAfterPagePlaceholder": "مثلاً ۵۰", + "backBlockOrderLabel": "ترتیب بلوک پشت", + "backBlockReverseOption": "معکوس کردن بلوک پشت (رایج برای دسته‌های برگردانده‌شده)", + "backBlockKeepOption": "حفظ بلوک پشت به همان صورت", + "autoSplitButton": "تشخیص خودکار نقطهٔ تقسیم (نیمه)", + "exportGroupedLabel": "برون‌ریزی فایل‌های گروه‌بندی‌شده بر پایهٔ طول سند اصلی", + "pagesPerDocumentLabel": "تعداد صفحات هر سند اصلی", + "groupedHelp": "در صورت فعال بودن، خروجی یک فایل ZIP شامل یک PDF برای هر سند گروه‌بندی‌شده است.", + "collateButton": "تلفیق PDF", + "invalidFileTitle": "فایل نامعتبر", + "invalidFileMessage": "لطفاً یک فایل PDF انتخاب کنید.", + "loadingPdf": "در حال بارگذاری PDF…", + "loadErrorMessage": "بارگذاری فایل PDF ناموفق بود.", + "fileMeta": "{{size}} - {{count}} صفحه", + "oddPageWarning": "تعداد صفحات فرد است ({{count}}). یک اسکن دورو باید تعداد صفحات زوج داشته باشد؛ ممکن است صفحه‌ای جا افتاده یا اضافه باشد.", + "previewSummary": "بلوک رو: {{frontCount}} صفحه، بلوک پشت: {{backCount}} صفحه. خروجی: {{outputCount}} صفحه، به ترتیب رو/پشت.", + "previewMismatchWarning": "طول بلوک‌های رو و پشت متفاوت است ({{frontCount}} رو در برابر {{backCount}} پشت). {{extraCount}} صفحهٔ اضافی در سمت بلندتر بدون جفت به انتها افزوده می‌شود.", + "missingFileTitle": "فایل موجود نیست", + "missingFileMessage": "لطفاً پیش از پردازش، یک PDF با دست‌کم ۲ صفحه بارگذاری کنید.", + "invalidSplitTitle": "نقطهٔ تقسیم نامعتبر", + "invalidSplitMessage": "نقطهٔ تقسیم باید بین صفحهٔ ۱ و صفحهٔ {{maxSplit}} باشد.", + "unevenConfirmTitle": "بلوک‌های نابرابر", + "unevenConfirmMessage": "بلوک رو {{frontCount}} صفحه و بلوک پشت {{backCount}} صفحه دارد.\nاین معمولاً یعنی صفحه‌ای دو بار اسکن شده یا جا افتاده است.\n\n{{extraCount}} صفحهٔ بدون جفت به انتها افزوده می‌شود.\n\nبه هر حال ادامه می‌دهید؟", + "invalidGroupTitle": "اندازهٔ گروه نامعتبر", + "invalidGroupMessage": "لطفاً تعداد معتبری برای صفحات هر سند اصلی وارد کنید.", + "collatingLoader": "در حال تلفیق اسکن دورو…", + "successMessage": "PDF تلفیق‌شده با موفقیت ساخته شد.", + "successGroupedMessage": "تلفیق کامل شد. {{fileCount}} فایل گروه‌بندی‌شده ساخته شد.", + "processErrorMessage": "تلفیق PDF ناموفق بود.", + "howItWorksStep1Title": "اسکن را بارگذاری کنید", + "howItWorksStep1": "همان یک PDF را که ابتدا همهٔ روها و سپس همهٔ پشت‌ها را دارد رها کنید.", + "howItWorksStep2Title": "نقطهٔ تقسیم را تعیین کنید", + "howItWorksStep2": "مشخص کنید بلوک رو کجا پایان می‌یابد، سپس انتخاب کنید که آیا بلوک پشت باید معکوس شود.", + "howItWorksStep3Title": "تلفیق و دانلود", + "howItWorksStep3": "یک PDF درهم‌آمیخته دریافت کنید، یا یک ZIP با فایلی جداگانه برای هر سند اصلی.", + "faqOddPagesQuestion": "اگر اسکن من تعداد صفحات فرد داشته باشد چه؟", + "faqOddPagesAnswer": "یک اسکن دورو باید تعداد صفحات زوج داشته باشد. اگر چنین نیست، احتمالاً صفحه‌ای دو بار اسکن شده یا جا افتاده است. ابزار پیش از پردازش به شما هشدار می‌دهد و صفحات بدون جفت به انتها افزوده می‌شوند تا چیزی از دست نرود.", + "faqBackOrderQuestion": "چرا باید بلوک پشت را به همان صورت نگه دارم؟", + "faqBackOrderAnswer": "این به نحوهٔ قرار دادن دسته در گذر دوم بستگی دارد. برگرداندن کل دسته، پشت‌ها را به ترتیب معکوس تولید می‌کند که حالت پیش‌فرض است. اگر اسکنر شما آن‌ها را به همان ترتیب روها بازگرداند، گزینهٔ حفظ بلوک به همان صورت را انتخاب کنید." + }, "addAttachments": { "name": "افزودن پیوست", "subtitle": "یک یا چند فایل را در PDF خود تعبیه کنید."