diff --git a/README.md b/README.md index 5272e7a..a1ba4d2 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ English: [EN](README.md) | Russian: [RU](readme-translations/README.ru.md) | Turkish: [TR](readme-translations/README.tr.md) | Chinese: [ZH](readme-translations/README.zh.md) +| Persian: [FA](readme-translations/README.fa.md)

Installation • @@ -361,6 +362,7 @@ YTSage supports **14 languages** for global accessibility. Select your preferred | 🇯🇵 Japanese | `ja` | 🇵🇱 Polish | `pl` | | 🇧🇷 Portuguese | `pt` | 🇷🇺 Russian | `ru` | | 🇹🇷 Turkish | `tr` | 🇨🇳 Chinese | `zh` | +| 🇮🇷 Persian | `fa` | ### README Translations @@ -373,6 +375,7 @@ YTSage supports **14 languages** for global accessibility. Select your preferred | 🇯🇵 Japanese | [readme-translations/README.ja.md](readme-translations/README.ja.md) | 🇵🇱 Polish | [readme-translations/README.pl.md](readme-translations/README.pl.md) | | 🇧🇷 Portuguese | [readme-translations/README.pt.md](readme-translations/README.pt.md) | 🇷🇺 Russian | [readme-translations/README.ru.md](readme-translations/README.ru.md) | | 🇹🇷 Turkish | [readme-translations/README.tr.md](readme-translations/README.tr.md) | 🇨🇳 Chinese | [readme-translations/README.zh.md](readme-translations/README.zh.md) | +| 🇮🇷 Persian | [readme-translations/README.fa.md](readme-translations/README.fa.md) | > 💡 **Want to contribute a translation?** Check out the [Contributing](#contributing) section to help us add more languages! diff --git a/readme-translations/README.fa.md b/readme-translations/README.fa.md new file mode 100644 index 0000000..2971f34 --- /dev/null +++ b/readme-translations/README.fa.md @@ -0,0 +1,628 @@ +

+ +ytsage-wordmark +YTSage Interface + +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-1f2937?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/downloads/) +[![PyPI Downloads](https://img.shields.io/pepy/dt/ytsage?color=1f2937&style=for-the-badge&label=downloads&logo=python&logoColor=white)](https://pepy.tech/project/ytsage) +[![GitHub Downloads](https://img.shields.io/github/downloads/oop7/YTSage/total?color=1f2937&style=for-the-badge&label=downloads&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases) +[![License: MIT](https://img.shields.io/badge/License-MIT-1f2937?style=for-the-badge&logo=opensource&logoColor=white)](https://opensource.org/licenses/MIT) +[![Supported Platforms](https://img.shields.io/badge/platform-cross--platform-1f2937?style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/releases) +[![GitHub Stars](https://img.shields.io/github/stars/oop7/YTSage?color=c90000&style=for-the-badge&logo=github&logoColor=white)](https://github.com/oop7/YTSage/stargazers) +[![PyPI version](https://img.shields.io/pypi/v/ytsage?color=c90000&style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ytsage/) +[![GitHub Sponsors](https://img.shields.io/github/sponsors/oop7?color=c90000&style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/oop7) + +**یک دانلودکننده مدرن یوتیوب با رابط کاربری تمیز PySide6.** +ویدیوها را با هر کیفیتی دانلود کنید، صدا را استخراج کنید، زیرنویس‌ها را دریافت کنید و موارد دیگر. + +### 🌍 زبان‌های README + +انگلیسی: [EN](../README.md) +| عربی: [AR](README.ar.md) +| آلمانی: [DE](README.de.md) +| اسپانیایی: [ES](README.es.md) +| فرانسوی: [FR](README.fr.md) +| هندی: [HI](README.hi.md) +| اندونزیایی: [ID](README.id.md) +| ایتالیایی: [IT](README.it.md) +| ژاپنی: [JA](README.ja.md) +| لهستانی: [PL](README.pl.md) +| پرتغالی: [PT](README.pt.md) +| روسی: [RU](README.ru.md) +| ترکی: [TR](README.tr.md) +| چینی: [ZH](README.zh.md) +| فارسی: [FA](README.fa.md) + + +

+ نصب • + امکانات • + استفاده • + تصاویر • + عیب‌یابی • + حمایت مالی • + مشارکت +

+ +
+ +--- + + +## ❓ چرا YTSage؟ + +YTSage برای کاربرانی طراحی شده که به دنبال یک **دانلودکننده یوتیوب ساده اما قدرتمند** هستند. برخلاف سایر ابزارها، این برنامه موارد زیر را ارائه می‌دهد: + +- رابط کاربری مدرن و تمیز PySide6 +- دانلود با یک کلیک برای ویدیو، صدا و زیرنویس +- امکانات پیشرفته مانند SponsorBlock، ادغام زیرنویس و انتخاب پلی‌لیست +- حالت عمومی (Generic Mode) اختیاری برای سایت‌های پشتیبانی‌شده توسط yt-dlp فراتر از یوتیوب +- پشتیبانی چندسکویی و نصب آسان + + +## ✨ امکانات + +
+ +| امکانات پایه | امکانات پیشرفته | امکانات تکمیلی | +|-----------------------------------|-----------------------------------------|------------------------------------| +| 🎥 جدول فرمت‌ها | 🚫 یکپارچه‌سازی SponsorBlock | 🎞️ نمایش FPS/HDR | +| 🎵 استخراج صدا | 📝 انتخاب و ادغام زیرنویس | 🔄 به‌روزرسانی خودکار yt-dlp | +| ✨ رابط کاربری ساده | 💾 ذخیره توضیحات و تصویر بندانگشتی | 🛠️ شناسایی FFmpeg/yt-dlp/Deno | +| 📋 پشتیبانی و انتخابگر پلی‌لیست | 🚀 محدودکننده سرعت | ⚙️ دستورات سفارشی | +| 📑 یکپارچه‌سازی فصل‌ها | ✂️ برش بخش‌های ویدیو | 🍪 ورود با کوکی | +| 📜 تاریخچه دانلود | 🔄 انتخاب کانال نسخه | 🌐 پشتیبانی پروکسی | +| 🎚️ تبدیل فرمت صدا | 🎬 تنظیمات فرمت ویدیو | 🆙 تب به‌روزرسانی یکپارچه | +| 🌍 حالت عمومی | 🔊 نرمال‌سازی صدا (EBU R128) | 🌍 محلی‌سازی به ۱۴ زبان | +| 💾 خروجی گرفتن پلی‌لیست | ⚙️ کیفیت و زیرنویس پیش‌فرض | | +
+ + +## 🚀 نصب + +### ⚡ نصب سریع (پیشنهادی) + +YTSage را از طریق PyPI نصب کنید: + +```bash +pip install ytsage +``` + +
+🔄 به‌روزرسانی یک نصب موجود + +```bash +pip install --upgrade ytsage +``` + +
+ +سپس برنامه را اجرا کنید: + +```bash +ytsage +``` + +### 📦 فایل‌های اجرایی از پیش ساخته‌شده + +> [👉 دانلود آخرین نسخه](https://github.com/oop7/YTSage/releases/latest) + +#### 🪟 ویندوز + +| فرمت | توضیحات | +|--------|-------------| +| ![Windows EXE](https://img.shields.io/badge/Windows-EXE-0078D6?style=for-the-badge&logo=windows&logoColor=white) | نصب‌کننده استاندارد | +| ![Windows FFmpeg](https://img.shields.io/badge/Windows-FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | همراه با FFmpeg | +| ![Windows Portable](https://img.shields.io/badge/Windows-Portable-0078D6?style=for-the-badge&logo=windows&logoColor=white) | نسخه پرتابل، بدون نیاز به نصب | +| ![Windows Portable FFmpeg](https://img.shields.io/badge/Windows-Portable%20FFmpeg-0078D6?style=for-the-badge&logo=windows&logoColor=white) | پرتابل همراه با FFmpeg، فشرده‌شده | + +
+🛠️ مراحل نصب + +1. **نصب‌کننده EXE (`.exe`)**: روی فایل دوبار کلیک کرده و مراحل نصب را دنبال کنید. +2. **نسخه پرتابل (`.zip`)**: آرشیو را در مکان دلخواه استخراج کرده و `ytsage.exe` را اجرا کنید. +3. **همراه با FFmpeg**: در صورتی که FFmpeg روی سیستم شما نصب نیست، نسخه‌های همراه با FFmpeg را انتخاب کنید. +
+ +#### 🐧 لینوکس + +| فرمت | توضیحات | +|--------|-------------| +| ![Linux DEB](https://img.shields.io/badge/Linux-DEB-FCC624?style=for-the-badge&logo=linux&logoColor=black) | بسته دبیان | +| ![Linux AppImage](https://img.shields.io/badge/Linux-AppImage-FCC624?style=for-the-badge&logo=linux&logoColor=black) | AppImage، پرتابل | +| ![Linux RPM](https://img.shields.io/badge/Linux-RPM-FCC624?style=for-the-badge&logo=linux&logoColor=black) | بسته RPM | +| ![Flathub](https://img.shields.io/badge/Linux-Flatpak-FCC624?style=for-the-badge&logo=flathub&logoColor=black) | بسته Flatpak | + +
+🛠️ مراحل نصب + +- **DEB (`.deb`)**: + ```bash + sudo dpkg -i ytsage_*.deb + sudo apt-get install -f # در صورت نیاز، وابستگی‌های ناقص را رفع می‌کند + ``` +- **RPM (`.rpm`)**: + ```bash + sudo rpm -i ytsage-*.rpm + ``` +- **AppImage (`.AppImage`)**: + ```bash + chmod +x YTSage-*.AppImage + ./YTSage-*.AppImage + ``` +- **Flatpak**: دستورالعمل‌های موجود در Flathub را دنبال کنید یا اجرا کنید: + ```bash + flatpak install flathub io.github.oop7.ytsage + ``` +
+ +#### 🍎 macOS + +| فرمت | توضیحات | +|--------|-------------| +| ![macOS ARM64 APP](https://img.shields.io/badge/macOS-ARM64%20APP-000000?style=for-the-badge&logo=apple&logoColor=white) | برنامه فشرده‌شده برای Apple Silicon | +| ![macOS ARM64 DMG](https://img.shields.io/badge/macOS-ARM64%20DMG-000000?style=for-the-badge&logo=apple&logoColor=white) | نصب‌کننده تصویر دیسک برای Apple Silicon | + +
+🛠️ مراحل نصب + +- **نصب‌کننده DMG (`.dmg`)**: برای مانت کردن دوبار کلیک کنید، سپس `YTSage.app` را به پوشه Applications بکشید. +- **آرشیو برنامه (`.zip`)**: فایل zip را استخراج کرده و `YTSage.app` را به پوشه Applications منتقل کنید. + +*توجه: اگر با خطای "برنامه آسیب دیده است" مواجه شدید، به بخش عیب‌یابی macOS در پایین مراجعه کنید.* +
+ +--- + +
+💻 نصب دستی از کد منبع + +### ۱. کلون کردن مخزن + +```bash +git clone https://github.com/oop7/YTSage.git +cd YTSage +``` + +### ۲. نصب وابستگی‌ها + +#### ⚡ با uv + +```bash +uv pip install . +``` + +#### 📦 یا با pip استاندارد + +```bash +pip install . +``` + +### ۳. اجرای برنامه + +```bash +python -m ytsage.main +``` + +
+ + +## 📸 تصاویر + +
+ + + + + + + + + + + + + + + + + +
تنظیمات دانلوددانلود پلی‌لیست
تنظیمات دانلوددانلود پلی‌لیست
انتخاب فرمت صداگزینه‌های سفارشی
فرمت صداگزینه‌های سفارشی
+
+ + +## 📖 استفاده + +
+🎯 استفاده پایه + +1. **YTSage را اجرا کنید** +2. **لینک یوتیوب را بچسبانید** (یا از دکمه "Paste URL" استفاده کنید) +3. **روی "Analyze" کلیک کنید** +4. **فرمت را انتخاب کنید:** + - `Video` برای دانلود ویدیو + - `Audio Only` برای استخراج صدا +5. **گزینه‌ها را انتخاب کنید:** + - فعال‌سازی زیرنویس و انتخاب زبان + - فعال‌سازی ادغام زیرنویس + - ذخیره تصویر بندانگشتی + - حذف بخش‌های اسپانسری + - ذخیره توضیحات + - یکپارچه‌سازی فصل‌ها +6. **پوشه خروجی را انتخاب کنید** +7. **روی "Download" کلیک کنید** + +> 💡 پوشه دانلود پیش‌فرض، پوشه "Downloads" کاربر است. + +
+ +
+📋 دانلود پلی‌لیست + +1. **لینک پلی‌لیست را بچسبانید** +2. **روی "Analyze" کلیک کنید** +3. **ویدیوها را از انتخابگر پلی‌لیست انتخاب کنید (اختیاری، به‌طور پیش‌فرض همه انتخاب می‌شوند)** +4. **فرمت/کیفیت مورد نظر را انتخاب کنید** +5. **روی "Download" کلیک کنید** + +> 💡 برنامه به‌طور خودکار صف دانلود را مدیریت می‌کند، و می‌توانید ورودی‌های پلی‌لیست را به فرمت `.txt`، `.csv`، `.m3u` یا `.json` خروجی بگیرید. + +
+ +
+🌍 حالت عمومی برای سایت‌های غیر یوتیوبی + +از حالت عمومی (Generic Mode) زمانی استفاده کنید که می‌خواهید YTSage لینک‌هایی از سایت‌های پشتیبانی‌شده توسط yt-dlp، مانند Dailymotion، CBC Gem، TikTok و سایرین را بپذیرد. + +نحوه استفاده: + +1. `Download Settings` را باز کنید. +2. `Generic Mode` را فعال کنید. +3. لینک ویدیو یا پلی‌لیست پشتیبانی‌شده‌ای که یوتیوب نیست را بچسبانید. +4. روی `Analyze` کلیک کنید. +5. یک فرمت انتخاب کرده و مانند همیشه دانلود کنید. + +نکات: + +- حالت عمومی فقط اعتبارسنجی لینک را در داخل YTSage تغییر می‌دهد. سایت مقصد همچنان باید توسط نسخه نصب‌شده yt-dlp شما پشتیبانی شود. +- برخی سایت‌ها بسته به استخراج‌کننده، نیاز به کوکی، نشست ورود، پروکسی یا آرگومان‌های اضافی yt-dlp دارند. +- اگر سایتی با شکست مواجه شد، ابتدا yt-dlp را از تب به‌روزرسانی یکپارچه به‌روز کنید و سپس مشکل را گزارش دهید. + +
+ +
+🧰 گزینه‌های رسانه و دانلود + +- **گزینه‌های زیرنویس:** فیلتر زبان‌ها و یکپارچه‌سازی زیرنویس در فایل ویدیو. +- **ادغام زیرنویس:** ادغام زیرنویس در فایل ویدیو برای زیرنویس‌های چسبیده (hardcoded). +- **ذخیره توضیحات:** ذخیره توضیحات ویدیو به‌صورت فایل متنی. +- **ذخیره تصویر بندانگشتی:** ذخیره تصویر بندانگشتی ویدیو به‌صورت فایل تصویری. +- **یکپارچه‌سازی فصل‌ها:** یکپارچه‌سازی نشانگرهای فصل به‌عنوان فراداده برای پخش‌کننده‌های ویدیوی سازگار. +- **حذف بخش‌های اسپانسری:** حذف بخش‌های اسپانسری از ویدیو با استفاده از SponsorBlock. +- **برش ویدیو:** فقط بخش‌های خاصی از یک ویدیو را با مشخص کردن بازه‌های زمانی به فرمت `HH:MM:SS` دانلود کنید. + +
+ +
+⚙️ تنظیمات خروجی و فایل + +- **محدودکننده سرعت:** محدود کردن سرعت دانلود، برای مثال `500K` برای ۵۰۰ کیلوبایت بر ثانیه. +- **ذخیره مسیر دانلود:** مسیر دانلود پیش‌فرض را برای دانلودهای آینده ذخیره می‌کند. در **Download Settings → Download Path** موجود است. +- **وضوح تصویر پیش‌فرض ویدیو:** وضوح تصویر ترجیحی خود را برای انتخاب خودکار به‌طور پیش‌فرض تنظیم کنید (مثلاً 1080p، 720p). در **Download Settings → Default Video Resolution** موجود است. +- **زبان‌های زیرنویس پیش‌فرض:** زبان‌های زیرنویس پیش‌فرض را برای انتخاب خودکار تنظیم کنید (با کاما جدا شوند، مثلاً `fr,en`). در **Download Settings → Default Subtitle Languages** موجود است. +- **فرمت نام فایل خروجی:** فرمت نام فایل خروجی را با استفاده از متغیرهایی مانند `%(title)s`، `%(uploader)s`، `%(playlist_index)s` و `%(resolution)s` سفارشی‌سازی کنید. در **Download Settings → Filename Format** موجود است. +- **اجبار فرمت خروجی:** دانلودهای ویدیو را به فرمت کانتینر خاصی مانند `mp4`، `webm` یا `mkv` اجبار کنید. در **Download Settings → Output Format Settings** موجود است. +- **تبدیل فرمت صدا:** دانلودهای فقط صوتی را به فرمت‌های ترجیحی مانند `AAC`، `MP3`، `FLAC`، `WAV`، `Opus`، `M4A`، `Vorbis` یا `Best` تبدیل کنید. در **Download Settings → Audio Format Settings** موجود است. +- **نرمال‌سازی صدا:** استانداردسازی حجم صدا برای دانلودهای فقط صوتی با استفاده از EBU R128. +- **اتصالات همزمان:** سرعت دانلود را با دانلود فایل‌ها در چندین قطعه به‌صورت همزمان به‌طور قابل توجهی افزایش دهید. در **Download Settings → General → Concurrent Connections** موجود است (پیش‌فرض ۱، حداکثر پیشنهادی ۸ تا ۱۰ برای جلوگیری از محدودیت IP). + +
+ +
+🌐 دسترسی و شبکه + +- **ورود با کوکی:** با استفاده از کوکی‌ها به یوتیوب وارد شوید تا به محتوای خصوصی دسترسی داشته باشید. + نحوه استفاده: + 1. **پیشنهادی:** از گزینه یکپارچه `Extract cookies from browser` در برنامه استفاده کرده، سپس مرورگر و در صورت لزوم یک پروفایل را انتخاب کنید. + 2. یا به‌طور جایگزین، کوکی‌ها را به‌صورت دستی استخراج کنید: + الف. کوکی‌های مرورگر خود را با استفاده از افزونه‌ای مانند [cookie-editor](https://github.com/moustachauve/cookie-editor?tab=readme-ov-file) خروجی بگیرید + ب. کوکی‌ها را به فرمت Netscape کپی کنید + ج. فایلی با نام `cookies.txt` ایجاد کرده و کوکی‌ها را در آن بچسبانید + د. فایل `cookies.txt` را در برنامه انتخاب کنید +- **پشتیبانی پروکسی:** از یک سرور پروکسی برای دانلودها استفاده کنید، برای مثال `http://:` +- **حالت عمومی:** به YTSage اجازه می‌دهد از سایت‌های غیر یوتیوبی پشتیبانی‌شده توسط yt-dlp تحلیل و دانلود کند. آن را از **Download Settings → Generic Mode** فعال کنید. + +
+ +
+🛠️ ابزارها و نگهداری + +- **دستورات سفارشی:** به امکانات پیشرفته yt-dlp از طریق آرگومان‌های خط فرمان دسترسی پیدا کنید. +- **تب به‌روزرسانی:** ابزارهای به‌روزرسانی یکپارچه را از یک مکان در تنظیمات سفارشی مدیریت کنید: + - **به‌روزرسانی‌های yt-dlp:** بررسی به‌روزرسانی‌ها و جابه‌جایی بین کانال‌های نسخه پایدار و شبانه. + - **بررسی‌کننده نسخه FFmpeg:** نسخه FFmpeg خود را بررسی کرده و راهنماهای نصب را باز کنید. + - **به‌روزرسانی‌های Deno:** بررسی و به‌روزرسانی موتور اجرای Deno. +- **شناسایی FFmpeg/yt-dlp/Deno:** مسیرها و نسخه‌های FFmpeg، yt-dlp و Deno را به‌طور خودکار از پنجره درباره شناسایی می‌کند. +- **تاریخچه دانلود:** دانلودهای گذشته را همراه با تصاویر بندانگشتی و وضعیت آن‌ها از دکمه **History** مشاهده کنید. + +
+ +
+🌍 محلی‌سازی + +YTSage از **۱۴ زبان** برای دسترسی‌پذیری جهانی پشتیبانی می‌کند. زبان ترجیحی خود را از **Custom Options → Language** انتخاب کنید. + +### زبان‌های پشتیبانی‌شده + +| زبان | کد | زبان | کد | +|----------|------|----------|------| +| 🇺🇸 انگلیسی | `en` | 🇪🇸 اسپانیایی | `es` | +| 🇸🇦 عربی | `ar` | 🇫🇷 فرانسوی | `fr` | +| 🇩🇪 آلمانی | `de` | 🇮🇳 هندی | `hi` | +| 🇮🇩 اندونزیایی | `id` | 🇮🇹 ایتالیایی | `it` | +| 🇯🇵 ژاپنی | `ja` | 🇵🇱 لهستانی | `pl` | +| 🇧🇷 پرتغالی | `pt` | 🇷🇺 روسی | `ru` | +| 🇹🇷 ترکی | `tr` | 🇨🇳 چینی | `zh` | +| 🇮🇷 فارسی | `fa` | + +### ترجمه‌های READMEترکی + +| زبان | فایل | زبان | فایل | +|----------|------|----------|------| +| 🇺🇸 انگلیسی | [README.md](../README.md) | 🇪🇸 اسپانیایی | [README.es.md](README.es.md) | +| 🇸🇦 عربی | [README.ar.md](README.ar.md) | 🇫🇷 فرانسوی | [README.fr.md](README.fr.md) | +| 🇩🇪 آلمانی | [README.de.md](README.de.md) | 🇮🇳 هندی | [README.hi.md](README.hi.md) | +| 🇮🇩 اندونزیایی | [README.id.md](README.id.md) | 🇮🇹 ایتالیایی | [README.it.md](README.it.md) | +| 🇯🇵 ژاپنی | [README.ja.md](README.ja.md) | 🇵🇱 لهستانی | [README.pl.md](README.pl.md) | +| 🇧🇷 پرتغالی | [README.pt.md](README.pt.md) | 🇷🇺 روسی | [README.ru.md](README.ru.md) | +| 🇹🇷 ترکی | [README.tr.md](README.tr.md) | 🇨🇳 چینی | [README.zh.md](README.zh.md) | +| 🇮🇷 فارسی | [README.fa.md](README.fa.md) | + +> 💡 **می‌خواهید در یک ترجمه مشارکت کنید؟** بخش [مشارکت](#contributing) را ببینید تا به ما در افزودن زبان‌های بیشتر کمک کنید! + +
+ + +## 🛠️ عیب‌یابی + +
+برای مشاهده مشکلات رایج و راه‌حل‌ها کلیک کنید + +- **جدول فرمت‌ها نمایش داده نمی‌شود:** yt-dlp را به آخرین نسخه به‌روزرسانی کرده و به کانال شبانه yt-dlp تغییر دهید. +- **دانلود ناموفق است:** اتصال اینترنت خود را بررسی کرده و مطمئن شوید ویدیو در دسترس است. +- **خطاهای خاص دانلود:** + - **ویدیوهای خصوصی:** برای دسترسی به محتوای خصوصی از احراز هویت با کوکی استفاده کنید. + - **محتوای دارای محدودیت سنی:** برای مشاهده ویدیوهای دارای محدودیت سنی به حساب یوتیوب خود وارد شوید. + - **ویدیوهای دارای محدودیت جغرافیایی:** برای دور زدن محدودیت‌های منطقه‌ای استفاده از VPN را در نظر بگیرید. + - **ویدیوهای حذف‌شده:** ویدیو دیگر در یوتیوب موجود نیست. + - **پخش‌های زنده (Live streams):** پخش‌های زنده قابل دانلود نیستند؛ منتظر پایان پخش بمانید. + - **خطاهای شبکه:** اتصال اینترنت خود را بررسی کرده و دوباره تلاش کنید. + - **لینک‌های نامعتبر:** مطمئن شوید لینک صحیح بوده و از یک پلتفرم پشتیبانی‌شده است. + - **محتوای پرمیوم:** نیازمند اشتراک یوتیوب پرمیوم است. + - **مسدودیت‌های کپی‌رایت:** محتوا به دلیل محدودیت‌های کپی‌رایت مسدود شده است. +- **فایل‌های ویدیو و صدای جداگانه پس از دانلود:** این اتفاق زمانی رخ می‌دهد که FFmpeg موجود نباشد یا شناسایی نشود. YTSage برای ادغام جریان‌های ویدیو و صدای با کیفیت بالا نیاز به FFmpeg دارد. + - **راه‌حل:** مطمئن شوید FFmpeg نصب شده و در PATH سیستم شما قابل دسترسی است. برای کاربران ویندوز، ساده‌ترین گزینه دانلود فایل `YTSage-v-ffmpeg.exe` است که همراه با FFmpeg ارائه می‌شود. + +--- + +#### 🛡️ هشدار Windows Defender / آنتی‌ویروس + +برخی نرم‌افزارهای آنتی‌ویروس ممکن است فایل‌های `.exe` را به‌عنوان مثبت کاذب علامت‌گذاری کنند. این یک **محدودیت شناخته‌شده** برنامه‌های بسته‌بندی‌شده است. + +**چرا این اتفاق می‌افتد:** +- الگوریتم‌های اکتشافی آنتی‌ویروس ممکن است به اشتباه فایل‌های اجرایی بسته‌بندی‌شده را مشکوک تشخیص دهند. + +**جایگزین‌های امن:** +- ✅ **استفاده از نصب pip:** `pip install ytsage` (پیشنهادی) +- ✅ **کامپایل از کد منبع**: با دنبال کردن این [راهنما](../.github/CI_CD_README.md) +- ✅ **افزودن برنامه به لیست سفید** در نرم‌افزار آنتی‌ویروس خود. + +#### 🍎 macOS: "برنامه آسیب دیده است و نمی‌توان آن را باز کرد" +اگر این خطا را در macOS Sonoma یا نسخه جدیدتر مشاهده کردید، باید ویژگی قرنطینه (quarantine) را حذف کنید. + +1. **ترمینال را باز کنید** (می‌توانید آن را با استفاده از Spotlight پیدا کنید). +2. **دستور زیر را تایپ کنید** اما هنوز **Enter را نزنید**. مطمئن شوید فاصله انتهایی را نیز وارد کرده‌اید: + ```bash + xattr -d com.apple.quarantine + ``` +3. **فایل `YTSage.app`** را از پنجره Finder بکشید و مستقیماً در پنجره ترمینال رها کنید. این کار مسیر صحیح فایل را به‌طور خودکار می‌چسباند. +4. **Enter را بزنید** تا دستور اجرا شود. +5. **دوباره سعی کنید YTSage.app را باز کنید.** اکنون باید به‌درستی اجرا شود. + +--- + +#### **مکان‌های پیکربندی (پیشرفته)** +- **ویندوز:** `%LOCALAPPDATA%\YTSage` +- **macOS:** `~/Library/Application Support/YTSage` +- **لینوکس:** `~/.local/share/YTSage` + +
+ + +## 💖 حمایت مالی + +اگر YTSage در وقت شما صرفه‌جویی می‌کند، حمایت مالی از این پروژه را در نظر بگیرید. حمایت مالی به پوشش زمان توسعه، آزمایش روی همه پلتفرم‌ها و بهبودهای آینده کمک می‌کند. + +- حامیان مالی گیت‌هاب: https://github.com/sponsors/oop7 +- لینک حمایت مالی همچنین مستقیماً از طریق پنجره درباره در داخل برنامه در دسترس است. + +[![Sponsor YTSage](https://img.shields.io/badge/Sponsor-YTSage-EA4AAA?style=for-the-badge&logo=github&logoColor=white)](https://github.com/sponsors/oop7) + + +## 👥 مشارکت + +ما با کمال میل از مشارکت‌ها استقبال می‌کنیم! در اینجا نحوه کمک شما آمده است: + +۱. 🍴 مخزن را فورک کنید +۲. 🌿 شاخه فیچر خود را ایجاد کنید: + ```bash + git checkout -b feature/AmazingFeature + ``` +۳. 💾 تغییرات خود را کامیت کنید: + ```bash + git commit -m 'Add some AmazingFeature' + ``` +۴. 📤 به شاخه پوش کنید: + ```bash + git push origin feature/AmazingFeature + ``` +۵. 🔄 یک Pull Request باز کنید + +### 🌍 مشارکت در ترجمه‌ها + +- فایل README محلی‌شده مربوطه را به‌روزرسانی کنید (مثلاً `readme-translations/README.fr.md`) +- با ویرایش `ytsage/languages/.json` رشته‌های برنامه را همگام نگه دارید +- اگر زبان شما موجود نیست، از `README.md` شروع کرده و `README..md` را ایجاد کنید + +
+📂 ساختار پروژه + +## YTSage - ساختار پروژه + +این سند ساختار سازمان‌یافته پوشه‌های YTSage را شرح می‌دهد. + +### 📁 ساختار پروژه + +``` +YTSage/ +├── 📁 .github/ # پیکربندی گیت‌هاب +│ ├── 📁 ISSUE_TEMPLATE/ # قالب‌های تیکت +│ │ └── 🐛-bug-report.md # قالب گزارش باگ +│ ├─── 📁 workflows/ # جریان‌های کاری GitHub Actions +│ │ ├── build-linux.yml # جریان کاری بیلد لینوکس +│ │ ├── build-macos.yml # جریان کاری بیلد macOS +│ │ │── build-windows.yml # جریان کاری بیلد ویندوز +| | └── release-all.yml # جریان کاری انتشار master +│ └── 📄 CI_CD_README.md # مستندات CI/CD +├── 📁 branding/ # منابع برند (تصاویر، SVGها) +│ ├── 📁 icons/ # آیکون‌های برنامه +│ ├── 📁 screenshots/ # تصاویر برای مستندات +│ └── 📁 svg/ # منابع SVG +├── 📄 LICENSE # فایل مجوز +├── 📄 pyproject.toml # فراداده و وابستگی‌های پروژه +├── 📄 README.md # مستندات پروژه +├── 📄 requirements.txt # وابستگی‌های پایتون (توسعه) +└── 📁 ytsage/ # بسته کد منبع + ├── 📁 assets/ # منابع زمان اجرا + │ ├── 📁 Icon/ # آیکون‌های برنامه + │ └── 📁 sound/ # فایل‌های صوتی + ├── 📁 languages/ # فایل‌های محلی‌سازی + │ ├── 📄 ar.json # ترجمه عربی + │ ├── 📄 de.json # ترجمه آلمانی + │ ├── 📄 en.json # ترجمه انگلیسی + │ └── ... # سایر زبان‌ها + ├── 📁 core/ # منطق اصلی کسب‌وکار + │ ├── 📄 __init__.py # مقداردهی اولیه بسته core + │ ├── 📄 ytsage_deno.py # یکپارچه‌سازی Deno + │ ├── 📄 ytsage_downloader.py # قابلیت دانلود + │ ├── 📄 ytsage_ffmpeg.py # یکپارچه‌سازی FFmpeg + │ ├── 📄 ytsage_utils.py # توابع کمکی + │ └── 📄 ytsage_yt_dlp.py # یکپارچه‌سازی yt-dlp + ├── 📁 gui/ # اجزای رابط کاربری + │ ├── 📄 __init__.py # مقداردهی اولیه بسته GUI + │ ├── 📄 ytsage_gui_main.py # پنجره اصلی برنامه + │ └── 📁 ytsage_gui_dialogs/ # کلاس‌های پنجره‌های دیالوگ + ├── 📁 utils/ # ماژول‌های کمکی + │ ├── 📄 __init__.py # مقداردهی اولیه بسته utils + │ ├── 📄 ytsage_config_manager.py # مدیریت پیکربندی + │ └── 📄 ytsage_logger.py # ابزارهای گزارش‌گیری + ├── 📄 __init__.py # نقطه ورود بسته + └── 📄 main.py # اسکریپت اجرای اصلی +``` + +
+ +## ⭐️ تاریخچه ستاره‌ها + +
+ +## Star History + + + + + + Star History Chart + + + +
+ +## 📜 مجوز + +این پروژه تحت مجوز MIT منتشر شده است - برای جزئیات بیشتر فایل [LICENSE](../LICENSE) را ببینید. + +## 🙏 قدردانی + +
+نمایش قدردانی + +
+ +

تشکر فراوان از همه کسانی که با باز کردن یک تیکت برای پیشنهاد بهبود یا گزارش باگ، در این پروژه مشارکت کرده‌اند.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
اجزای اصلی
yt-dlpموتور دانلود
FFmpegپردازش رسانه
Denoموتور اجرا برای یکپارچه‌سازی با yt-dlp
کتابخانه‌ها و فریم‌ورک‌ها
PySide6فریم‌ورک رابط کاربری
Pillowپردازش تصویر
requestsدرخواست‌های HTTP
packagingمدیریت نسخه‌ها و بسته‌ها
markdownرندر Markdown
loguruگزارش‌گیری
منابع و مشارکت‌کنندگان
New Notification 09 by Universfieldصدای اعلان
viru185مشارکت‌کننده کد
+ +
+ +
+ +## ⚠️ سلب مسئولیت + +این ابزار فقط برای استفاده شخصی در نظر گرفته شده است. لطفاً شرایط استفاده یوتیوب و حقوق سازندگان محتوا را رعایت کنید. + +--- + +
+ +ساخته شده با ❤️ توسط [oop7](https://github.com/oop7) + +
\ No newline at end of file diff --git a/ytsage/languages/fa.json b/ytsage/languages/fa.json new file mode 100644 index 0000000..1027051 --- /dev/null +++ b/ytsage/languages/fa.json @@ -0,0 +1,643 @@ +{ + "language": { + "display_name": "فارسی (Persian)", + "select_language": "زبان را انتخاب کنید:", + "current_language": "زبان فعلی: {language}", + "restart_required": "تغییرات زبان پس از راه‌اندازی مجدد برنامه اعمال خواهد شد.", + "english": "English (انگلیسی)", + "spanish": "Español (اسپانیایی)", + "portuguese": "Português (پرتغالی)", + "russian": "Русский (روسی)", + "chinese": "中文 (简体) (چینی ساده‌شده)", + "german": "Deutsch (آلمانی)", + "french": "Français (فرانسوی)", + "hindi": "हिन्दी (هندی)", + "indonesian": "Bahasa Indonesia (اندونزیایی)", + "turkish": "Türkçe (ترکی)", + "polish": "Polski (لهستانی)", + "italian": "Italiano (ایتالیایی)", + "arabic": "العربية (عربی)", + "japanese": "日本語 (ژاپنی)", + "help_text": "زبان مورد نظر خود را برای رابط کاربری انتخاب کنید.", + "restart_notice": "تغییر زبان پس از راه‌اندازی مجدد برنامه اعمال خواهد شد." + }, + "app": { + "title": "YTSage", + "version": "نسخه {version}", + "ready": "آماده" + }, + "formats": { + "show_formats": "نمایش فرمت‌ها:", + "video_format": "فرمت ویدیو:", + "audio_format": "فرمت صدا:", + "no_formats": "هیچ فرمتی در دسترس نیست", + "loading": "در حال بارگذاری فرمت‌ها...", + "select": "انتخاب", + "quality": "کیفیت", + "extension": "پسوند", + "resolution": "وضوح تصویر", + "file_size": "حجم فایل", + "codec": "کدک", + "audio": "صدا", + "fps": "فریم بر ثانیه", + "hdr": "HDR", + "will_merge_audio": "صدا ادغام خواهد شد", + "has_audio": "✓ دارای صدا", + "audio_only": "فقط صدا", + "best_4k": "بهترین (4K)", + "best_2k": "بهترین (2K)", + "high_1080p": "بالا (1080p)", + "high_720p": "بالا (720p)", + "medium_480p": "متوسط (480p)", + "low_quality": "کیفیت پایین", + "best_audio": "بهترین صدا", + "high_audio": "صدای بالا", + "medium_audio": "صدای متوسط", + "low_audio": "صدای پایین", + "audio_only_resolution": "فقط صدا" + }, + "buttons": { + "download": "دانلود", + "pause": "توقف موقت", + "resume": "ادامه", + "cancel": "لغو", + "browse": "مرور", + "clear": "پاک کردن", + "ok": "تأیید", + "apply": "اعمال", + "close": "بستن", + "run_command": "اجرای دستور", + "custom_command_help": "راهنما", + "about": "درباره", + "history": "تاریخچه", + "analyze": "تحلیل", + "paste_url": "چسباندن لینک", + "select_videos": "انتخاب ویدیوها...", + "video": "ویدیو", + "audio_only": "فقط صدا", + "custom_options": "تنظیمات سفارشی", + "trim_video": "برش ویدیو", + "download_settings": "تنظیمات دانلود", + "update": "به‌روزرسانی yt-dlp", + "select_defaults": "انتخاب پیش‌فرض‌ها", + "select_all": "انتخاب همه", + "deselect_all": "لغو انتخاب همه", + "open_folder": "باز کردن محل فایل", + "save_playlist": "ذخیره پلی‌لیست به عنوان", + "reset": "بازنشانی" + }, + "dialogs": { + "custom_options": "تنظیمات سفارشی", + "settings": "تنظیمات", + "select_folder": "انتخاب پوشه دانلود", + "sponsorblock_categories": "دسته‌بندی‌های SponsorBlock", + "sponsorblock_description": "نوع بخش‌های ویدیو را که می‌خواهید هنگام دانلود به‌طور خودکار حذف شوند انتخاب کنید.\nSponsorBlock از داده‌های ارسالی توسط کاربران برای شناسایی این بخش‌ها استفاده می‌کند.", + "select_subtitles": "انتخاب زیرنویس‌ها", + "filter_languages_placeholder": "فیلتر زبان‌ها (مثلاً en، es)...", + "filter_playlist_placeholder": "فیلتر ویدیوها...", + "no_subtitles_available": "هیچ زیرنویسی در دسترس نیست", + "matching": "مطابق", + "ytdlp_log_title": "گزارش yt-dlp" + }, + "tabs": { + "cookies": "ورود با کوکی", + "custom_command": "دستور سفارشی", + "proxy": "پروکسی", + "language": "زبان", + "updater": "به‌روزرسان" + }, + "cookies": { + "help_text": "نحوه ارائه کوکی برای ورود را انتخاب کنید.\nاین امکان دانلود ویدیوهای خصوصی و صدای با کیفیت پرمیوم را فراهم می‌کند.", + "cookie_source": "منبع کوکی", + "use_cookie_file": "استفاده از فایل کوکی", + "extract_from_browser": "استخراج از مرورگر", + "recommended": "پیشنهادی", + "cookie_file": "فایل کوکی", + "cookie_file_placeholder": "مسیر فایل cookies.txt...", + "browser_selection": "انتخاب مرورگر", + "browser_help": "مرورگری که کوکی از آن استخراج شود را انتخاب کنید:", + "browser_label": "مرورگر:", + "profile_label": "پروفایل:", + "profile_placeholder": "پیش‌فرض", + "browser_extract_message": "کوکی‌های مرورگر هنگام اعمال استخراج خواهند شد", + "file_selected_message": "فایل کوکی انتخاب شد - برای اعمال روی تأیید کلیک کنید", + "select_file_title": "انتخاب فایل کوکی", + "file_filter": "فایل‌های کوکی (*.txt *.lwp)", + "file_selected_title": "فایل کوکی اعمال شد", + "file_applied_message": "فایل کوکی اعمال شد: {path}", + "browser_selected_title": "کوکی‌های مرورگر اعمال شد", + "browser_applied_message": "کوکی‌های مرورگر از این مرورگر استخراج خواهند شد: {browser}", + "cleared_title": "کوکی‌ها پاک شدند", + "cleared_message": "تنظیمات کوکی پاک شد", + "active_browser": "✓ فعال: کوکی‌های مرورگر ({browser})", + "active_file": "✓ فعال: فایل کوکی ({file})", + "none_active": "○ هیچ کوکی فعالی وجود ندارد", + "remember_settings": "به خاطر سپردن تنظیمات کوکی برای اجرای بعدی" + }, + "custom_command": { + "help_text": "دستور سفارشی yt-dlp خود را در زیر وارد کنید. لینک فعلی به‌طور خودکار اضافه خواهد شد.

برای فهرست کامل گزینه‌ها و مثال‌های استفاده، اینجا کلیک کنید تا مستندات رسمی yt-dlp را مشاهده کنید.

توجه: مسیر دانلود و الگوی نام فایل به‌طور خودکار مدیریت خواهند شد.", + "input_label": "آرگومان‌های yt-dlp:", + "input_placeholder": "آرگومان‌های yt-dlp را اینجا وارد کنید...\n\nمثال: --extract-audio --audio-format mp3", + "output_label": "خروجی دستور:", + "output_placeholder": "خروجی دستور اینجا نمایش داده می‌شود...", + "command_placeholder": "دستور سفارشی yt-dlp را وارد کنید...", + "command_help": "جایگزین‌های موجود:\n{url} - لینک ویدیو\n{output} - پوشه خروجی\n\nمثال: --write-info-json --write-thumbnail", + "full_command": "🔧 دستور کامل: {command}", + "command_success": "✅ دستور سفارشی با موفقیت انجام شد!", + "command_failed": "❌ دستور با کد خروج {code} با شکست مواجه شد", + "command_error": "❌ خطا در اجرای دستور سفارشی: {error}", + "error_no_url": "❌ خطا: لینکی وارد نشده است. لطفاً لینک را در پنجره اصلی وارد کنید.", + "error_no_command": "❌ خطا: دستوری وارد نشده است. لطفاً آرگومان‌های yt-dlp را وارد کنید.", + "executing": "🚀 در حال اجرای دستور سفارشی yt-dlp", + "url_label": "📍 لینک: {url}", + "args_label": "⚙️ آرگومان‌ها: {command}", + "download_path_label": "📁 مسیر دانلود: {path}", + "separator": "==================================================" + }, + "proxy": { + "help_text": "تنظیمات پروکسی برای دانلود را پیکربندی کنید. برای استفاده از اتصال مستقیم خالی بگذارید.", + "main_proxy": "پروکسی اصلی", + "main_proxy_help": "سرور پروکسی اصلی برای همه دانلودها. از پروتکل‌های HTTP/HTTPS و SOCKS5 پشتیبانی می‌کند.", + "proxy_url_label": "آدرس پروکسی:", + "proxy_url_placeholder": "http://proxy:port یا socks5://proxy:port", + "proxy_examples": "مثال‌ها:\n• HTTP: http://proxy.example.com:8080\n• SOCKS5: socks5://proxy.example.com:1080", + "geo_proxy": "پروکسی دور زدن محدودیت جغرافیایی", + "geo_proxy_help": "پروکسی ثانویه مخصوص دور زدن محدودیت‌های جغرافیایی.", + "geo_proxy_url_label": "آدرس پروکسی دور زدن جغرافیایی:", + "geo_proxy_url_placeholder": "http://geo-proxy:port", + "clear_main_proxy": "پاک کردن پروکسی اصلی", + "clear_geo_proxy": "پاک کردن پروکسی جغرافیایی", + "proxy_url": "آدرس پروکسی", + "proxy_placeholder": "http://proxy:port یا socks5://proxy:port", + "geo_bypass": "پروکسی دور زدن محدودیت جغرافیایی (برای محدودیت‌های جغرافیایی)", + "geo_bypass_placeholder": "http://proxy:port برای دور زدن محدودیت‌های جغرافیایی", + "invalid_main_url": "قالب آدرس پروکسی اصلی نامعتبر است", + "invalid_geo_url": "قالب آدرس پروکسی جغرافیایی نامعتبر است", + "main_configured": "پروکسی اصلی پیکربندی شد", + "geo_configured": "پروکسی جغرافیایی پیکربندی شد", + "set_title": "پروکسی تنظیم شد", + "set_message": "پروکسی اصلی تنظیم و ذخیره شد: {proxy}", + "geo_set_title": "پروکسی جغرافیایی تنظیم شد", + "geo_set_message": "پروکسی تأیید جغرافیایی تنظیم و ذخیره شد: {proxy}", + "cleared_title": "تنظیمات پروکسی پاک شد", + "cleared_message": "تمام تنظیمات پروکسی پاک و ذخیره شد.", + "saved_main": "پروکسی اصلی ذخیره شد: {proxy}", + "saved_geo": "پروکسی جغرافیایی ذخیره شد: {proxy}" + }, + "download": { + "preparing": "در حال آماده‌سازی دانلود...", + "starting": "🚀 شروع دانلود...", + "fetching_info": "🔍 در حال دریافت اطلاعات ویدیو...", + "preparing_streams": "🎯 در حال آماده‌سازی جریان‌های ویدیو...", + "downloading_audio": "⏬ در حال دانلود صدا...", + "downloading_video": "⏬ در حال دانلود ویدیو...", + "downloading_subtitle": "⏬ در حال دانلود زیرنویس...", + "downloading": "⏬ در حال دانلود...", + "completed": "✅ دانلود کامل شد!", + "video_completed": "✅ دانلود ویدیو کامل شد!", + "audio_completed": "✅ دانلود صدا کامل شد!", + "subtitle_completed": "✅ دانلود زیرنویس کامل شد!", + "completed_cleaning": "✅ دانلود کامل شد! در حال پاک‌سازی...", + "cancelled": "دانلود لغو شد", + "processing_playlist": "📋 در حال پردازش اطلاعات پلی‌لیست...", + "paused": "دانلود متوقف شد", + "resumed": "دانلود ادامه یافت", + "merging_formats": "✨ پردازش پایانی: در حال ادغام فرمت‌ها...", + "removing_sponsor_segments": "✨ پردازش پایانی: در حال حذف بخش‌های اسپانسری...", + "speed": "سرعت", + "eta": "زمان باقی‌مانده", + "please_enter_url": "ابتدا یک لینک وارد کنید.", + "please_set_path": "ابتدا یک مسیر دانلود تنظیم کنید.", + "please_enter_url_and_path": "لطفاً یک لینک وارد کرده و مسیر دانلود را تنظیم کنید.", + "please_select_format": "ابتدا یک فرمت انتخاب کنید.", + "downloading_fallback": "⚡ در حال دانلود..." + }, + "update": { + "title": "به‌روزرسانی yt-dlp", + "checking": "در حال بررسی به‌روزرسانی...", + "update_available": "به‌روزرسانی موجود است!\nنسخه فعلی: {current}\nآخرین نسخه: {latest}", + "up_to_date": "yt-dlp به‌روز است (نسخه {version})", + "already_up_to_date": "✅ yt-dlp از قبل به‌روز است!", + "could_not_determine": "امکان تعیین نسخه‌ها وجود نداشت.", + "error_comparing": "خطا در مقایسه نسخه‌ها: {error}", + "update_available_failed": "به‌روزرسانی موجود است! (مقایسه ناموفق بود)\nفعلی: {current}\nآخرین: {latest}", + "updating": "در حال به‌روزرسانی...", + "initializing": "🚀 در حال آماده‌سازی فرآیند به‌روزرسانی...", + "checking_current": "🔍 در حال بررسی نصب فعلی...", + "found_at": "📍 yt-dlp پیدا شد در: {path}", + "error_getting_path": "❌ خطا در دریافت مسیر yt-dlp: {error}", + "updating_binary": "📦 در حال به‌روزرسانی فایل اجرایی yt-dlp مدیریت‌شده توسط برنامه...", + "update_failed": "❌ به‌روزرسانی yt-dlp ناموفق بود. لطفاً دوباره تلاش کنید یا اتصال اینترنت خود را بررسی کنید.", + "binary_updated": "✅ فایل اجرایی با موفقیت به‌روزرسانی شد!", + "update_failed_stderr": "❌ به‌روزرسانی yt-dlp ناموفق بود: {error}", + "update_timeout": "❌ زمان به‌روزرسانی yt-dlp به پایان رسید.", + "unexpected_error": "❌ خطای غیرمنتظره در حین به‌روزرسانی: {error}", + "update_success": "✅ yt-dlp با موفقیت به‌روزرسانی شد!", + "already_latest": "yt-dlp به‌روز است (نسخه {version})", + "network_error": "❌ خطای شبکه در حین به‌روزرسانی: {error}", + "general_error": "❌ به‌روزرسانی ناموفق بود: {error}", + "update_in_progress_title": "به‌روزرسانی در حال انجام", + "update_in_progress_message": "yt-dlp در حال حاضر در حال به‌روزرسانی است. لطفاً کمی صبر کنید." + }, + "about": { + "title": "درباره YTSage", + "version": "نسخه {version}", + "description": "دانلودکننده مدرن یوتیوب با رابط کاربری تمیز PySide6.", + "author": "توسعه‌دهنده: {author}", + "github": "گیت‌هاب: {repo}", + "system_info": "اطلاعات سیستم", + "loading": "🔄 در حال بارگذاری اطلاعات سیستم...", + "refresh": "🔄", + "open_logs": "📂 گزارش‌ها", + "logs_tooltip": "باز کردن پوشه گزارش‌های برنامه", + "refreshing": "🔄 در حال به‌روزرسانی...", + "refresh_failed": "به‌روزرسانی ناموفق بود", + "refresh_failed_message": "امکان به‌روزرسانی اطلاعات نسخه وجود نداشت.", + "detected": "✓ شناسایی شد", + "missing": "✗ موجود نیست", + "not_available": "در دسترس نیست" + }, + "time_range": { + "title": "برش ویدیو", + "time_range_group": "بازه زمانی", + "start_time": "زمان شروع (ساعت:دقیقه:ثانیه)", + "end_time": "زمان پایان (ساعت:دقیقه:ثانیه)", + "start_placeholder": "00:00:00", + "end_placeholder": "00:00:00", + "start_time_placeholder": "زمان شروع (ساعت:دقیقه:ثانیه)", + "end_time_placeholder": "زمان پایان (ساعت:دقیقه:ثانیه)", + "force_keyframes": "اجبار فریم‌های کلیدی در نقاط برش", + "help_text": "زمان شروع و پایان را برای برش ویدیو تنظیم کنید.\nبرای دانلود ویدیوی کامل خالی بگذارید.", + "invalid_format": "قالب زمان نامعتبر است. از قالب ساعت:دقیقه:ثانیه استفاده کنید.", + "start_after_end": "زمان شروع نمی‌تواند بعد از زمان پایان باشد." + }, + "settings": { + "title": "تنظیمات دانلود", + "download_path": "مسیر دانلود", + "browse": "مرور...", + "speed_limit": "محدودیت سرعت", + "speed_limit_placeholder": "بدون محدودیت", + "generic_mode": "حالت عمومی", + "enable_generic_mode": "فعال‌سازی حالت عمومی (پشتیبانی از سایت‌های غیر یوتیوبی)", + "generic_mode_help": "امکان دانلود از Dailymotion، CBC Gem و سایر سایت‌های پشتیبانی‌شده توسط yt-dlp را فراهم می‌کند.", + "auto_update_ytdlp": "به‌روزرسانی خودکار yt-dlp", + "enable_auto_updates": "فعال‌سازی به‌روزرسانی‌های خودکار yt-dlp", + "update_frequency": "دوره زمانی بررسی:", + "check_startup": "بررسی در هر راه‌اندازی (حداقل ۱ ساعت فاصله بین بررسی‌ها)", + "check_daily": "بررسی روزانه", + "check_weekly": "بررسی هفتگی", + "check_updates_now": "به‌روزرسانی yt-dlp", + "update_check_title": "بررسی به‌روزرسانی", + "could_not_determine_version": "امکان تعیین نسخه فعلی yt-dlp وجود نداشت.", + "update_available_dialog": "به‌روزرسانی موجود است!\n\nفعلی: {current}\nآخرین: {latest}\n\nبرای ادامه به‌روزرسانی روی تأیید کلیک کنید.", + "up_to_date_dialog": "yt-dlp به‌روز است!\n\nنسخه فعلی: {version}", + "error_checking_updates": "خطا در بررسی به‌روزرسانی‌ها: {error}", + "settings_saved_title": "تنظیمات ذخیره شد", + "settings_saved_message": "تنظیمات به‌روزرسانی خودکار با موفقیت ذخیره شد!", + "error_title": "خطا", + "failed_save_settings": "ذخیره تنظیمات به‌روزرسانی خودکار ناموفق بود.", + "error_saving_settings": "خطا در ذخیره تنظیمات به‌روزرسانی خودکار: {error}", + "ytdlp_channel": "کانال انتشار yt-dlp", + "ytdlp_channel_stable": "پایدار (نسخه‌های آزمایش‌شده)", + "ytdlp_channel_nightly": "شبانه (به‌روزرسانی روزانه، پیشنهاد شده توسط yt-dlp)", + "ytdlp_channel_description": "بین انتشارهای پایدار و شبانه انتخاب کنید. نسخه‌های شبانه هر روز با آخرین رفع اشکالات و ویژگی‌ها به‌روزرسانی می‌شوند. می‌توانید هر زمان کانال را تغییر دهید.", + "ytdlp_switching_channel": "در حال تغییر به کانال {channel}...", + "ytdlp_channel_switched": "✅ با موفقیت به کانال {channel} تغییر یافت!", + "ytdlp_channel_switch_failed": "❌ تغییر کانال ناموفق بود: {error}", + "ytdlp_current_channel": "کانال فعلی: {channel}", + "app_updates_title": "به‌روزرسانی‌های YTSage", + "check_app_updates": "بررسی به‌روزرسانی‌های YTSage هنگام راه‌اندازی", + "check_beta_updates": "دریافت به‌روزرسانی‌های بتا", + "auto_update_title": "تنظیمات به‌روزرسانی خودکار", + "auto_update_header": "🔄 تنظیمات به‌روزرسانی خودکار", + "auto_update_description": "به‌روزرسانی‌های خودکار yt-dlp را پیکربندی کنید تا همیشه به آخرین ویژگی‌ها و رفع اشکالات دسترسی داشته باشید.", + "current_status": "وضعیت فعلی", + "current_version_label": "نسخه فعلی yt-dlp: در حال بررسی...", + "last_check_label": "آخرین بررسی به‌روزرسانی: هرگز", + "next_check_label": "بررسی بعدی: بر اساس تنظیمات", + "manual_check_button": "🔍 بررسی به‌روزرسانی‌ها اکنون", + "update_frequency_group": "دوره زمانی به‌روزرسانی", + "save_settings": "ذخیره تنظیمات", + "settings_saved_successfully": "✅ تنظیمات با موفقیت ذخیره شد!", + "error_saving": "❌ خطا در ذخیره‌سازی: {error}", + "output_format_settings": "تنظیمات فرمت خروجی", + "force_output_format": "اجبار فرمت خروجی هنگام ادغام", + "preferred_format": "فرمت ترجیحی:", + "force_format_help": "در صورت فعال بودن، ویدیوهای ادغام‌شده به فرمت ترجیحی شما تبدیل خواهند شد. برای اینکه yt-dlp به‌طور خودکار تصمیم بگیرد آن را غیرفعال کنید.", + "format_mp4": "MP4 (سازگارترین)", + "format_webm": "WebM (مدرن، متن‌باز)", + "format_mkv": "MKV (پرامکانات)", + "audio_format_settings": "تنظیمات فرمت صدا", + "force_audio_format": "اجبار فرمت صدا برای دانلودهای فقط صوتی", + "audio_normalization": "نرمال‌سازی صدا (EBU R128)", + "audio_normalization_help": "در صورت فعال بودن، تراک‌های صوتی نرمال‌سازی خواهند شد. توجه: این کار نیازمند رمزگذاری مجدد است، بنابراین باید فرمت صوتی مشخصی (مانند MP3 یا M4A) اجبار شود.", + "filename_format": "قالب نام فایل خروجی", + "filename_format_help": "متغیرهای موجود: %(title)s، %(uploader)s، %(upload_date)s، %(resolution)s، %(id)s، %(ext)s، %(playlist_index)s. از سینتکس استاندارد الگوی خروجی yt-dlp پشتیبانی می‌شود.", + "defaults_settings": "تنظیمات انتخاب پیش‌فرض", + "default_video_quality": "وضوح تصویر پیش‌فرض (ارتفاع):", + "default_subtitle_language": "زبان(های) زیرنویس پیش‌فرض:", + "defaults_help": "ارتفاع ویدیو و زبان‌های زیرنویس ترجیحی خود را تنظیم کنید (با کاما جدا شوند). در صورت موجود بودن به‌طور خودکار انتخاب خواهند شد.", + "concurrent_fragments": "اتصالات همزمان", + "concurrent_fragments_help": "تعداد اتصالات برای هر دانلود. مقادیر بالاتر می‌توانند محدودیت سرعت را دور بزنند اما در صورت تنظیم بیش از حد ممکن است باعث مسدود شدن موقت شوند. پیش‌فرض: ۱.", + "preferred_audio_format": "فرمت صوتی ترجیحی:", + "force_audio_format_help": "در صورت فعال بودن، دانلودهای فقط صوتی به فرمت ترجیحی شما تبدیل خواهند شد. این فقط هنگام دانلود فرمت‌های صوتی اعمال می‌شود.", + "audio_format_best": "بهترین (بدون تبدیل)", + "audio_format_aac": "AAC (مناسب برای ویرایش)", + "audio_format_mp3": "MP3 (همگانی)", + "audio_format_flac": "FLAC (بدون افت کیفیت)", + "audio_format_wav": "WAV (فشرده‌نشده)", + "audio_format_opus": "Opus (بهینه)", + "audio_format_m4a": "M4A (اپل)", + "audio_format_vorbis": "Vorbis (متن‌باز)", + "tab_general": "عمومی", + "tab_format": "فرمت", + "tab_file": "فایل" + }, + "main_ui": { + "url_placeholder": "لینک ویدیو یا پلی‌لیست یوتیوب را وارد کنید", + "url_placeholder_generic": "لینک ویدیو یا پلی‌لیست از هر سایت پشتیبانی‌شده را وارد کنید", + "merge_subtitles": "ادغام زیرنویس‌ها", + "save_thumbnail": "ذخیره تصویر بندانگشتی", + "save_description": "ذخیره توضیحات", + "embed_chapters": "جاسازی فصل‌ها", + "subtitles_selected": "{count} انتخاب شد", + "all_selected": "همه انتخاب شدند", + "select_videos_all": "انتخاب ویدیوها... (همه انتخاب شدند)", + "please_enter_url": "ابتدا یک لینک وارد کنید", + "error_title": "خطا", + "cookie_file_selected_title": "فایل کوکی انتخاب شد", + "cookie_file_selected_message": "فایل کوکی انتخاب شد: {path}", + "browser_cookies_selected_title": "کوکی‌های مرورگر انتخاب شد", + "browser_cookies_selected_message": "کوکی‌های مرورگر از این مرورگر استخراج خواهند شد: {browser}", + "error_no_format_info": "خطا: هیچ اطلاعات فرمتی در دسترس نیست.", + "error_extract_info": "خطا: امکان استخراج اطلاعات پایه ویدیو وجود نداشت. لطفاً لینک خود را بررسی کنید.", + "analyzing_preparing": "در حال آماده‌سازی درخواست...", + "analyzing_extracting_basic": "در حال استخراج اطلاعات پایه...", + "analyzing_extracting_detailed": "در حال استخراج اطلاعات تفصیلی...", + "analyzing_processing_video": "در حال پردازش داده‌های ویدیو...", + "analyzing_processing_formats": "در حال پردازش فرمت‌ها...", + "analyzing_loading_thumbnail": "در حال بارگذاری تصویر بندانگشتی...", + "analyzing_processing_subtitles": "در حال پردازش زیرنویس‌ها...", + "analyzing_updating_table": "در حال به‌روزرسانی جدول فرمت‌ها...", + "analysis_complete": "تحلیل کامل شد!", + "analyzing_extracting_ytdlp": "در حال استخراج اطلاعات...", + "analyzing_fetching_first_video": "در حال دریافت فرمت‌های اولین ویدیو...", + "analyzing_processing_data": "در حال پردازش داده‌ها...", + "analyzing_processing_formats_ytdlp": "در حال پردازش فرمت‌ها...", + "analyzing_loading_thumbnail_ytdlp": "در حال بارگذاری تصویر بندانگشتی...", + "analyzing_processing_subtitles_ytdlp": "در حال پردازش زیرنویس‌ها...", + "select_subtitles": "انتخاب زیرنویس‌ها...", + "sponsorblock_categories": "دسته‌بندی‌های SponsorBlock...", + "invalid_url_or_enter": "لینک نامعتبر است یا لطفاً لینکی وارد کنید.", + "zero_selected": "0 انتخاب شد", + "analyze_first_tooltip": "لطفاً ابتدا ویدیو را تحلیل کنید", + "audio_mode_disabled": "در حالت فقط صدا در دسترس نیست", + "select_subtitles_first": "لطفاً ابتدا زیرنویس‌ها را انتخاب کنید", + "settings_tooltip": "مسیر فعلی: {path}\nمحدودیت سرعت: {speed_limit}", + "speed_limit_none": "بدون محدودیت", + "open_folder_error": "امکان باز کردن پوشه وجود نداشت: {error}", + "time_range_set": "بخش تنظیم شد: {section}" + }, + "sponsorblock": { + "sponsor": "اسپانسر", + "sponsor_desc": "تبلیغات پولی، معرفی‌های پولی و آگهی‌های مستقیم", + "selfpromo": "تبلیغ خود (رایگان)", + "selfpromo_desc": "تبلیغ رایگان محتوای خود سازنده", + "interaction": "یادآوری تعامل", + "interaction_desc": "درخواست از بینندگان برای لایک، اشتراک یا دنبال کردن شبکه‌های اجتماعی", + "intro": "مقدمه", + "intro_desc": "مقدمه ویدیو که می‌توان از آن رد شد", + "outro": "پایان‌بندی/تیتراژ", + "outro_desc": "تیتراژ یا زمان پایان ویدیو", + "preview": "پیش‌نمایش/خلاصه", + "preview_desc": "خلاصه سریع ویدیوهای قبلی یا پیش‌نمایش موارد آینده", + "music_offtopic": "بخش غیرموسیقایی", + "music_offtopic_desc": "فقط برای ویدیوهای موسیقی. بخش‌های غیرموسیقایی را مشخص می‌کند", + "filler": "بخش پرکننده", + "filler_desc": "صحنه‌های حاشیه‌ای که فقط برای پرکردن یا طنز اضافه شده‌اند" + }, + "video_info": { + "channel": "کانال", + "views": "👁 بازدیدها", + "likes": "👍 لایک‌ها", + "upload_date": "📅 تاریخ آپلود", + "duration": "⏱ مدت زمان", + "unknown_channel": "کانال نامشخص", + "unknown_date": "تاریخ نامشخص", + "unknown_title": "عنوان نامشخص" + }, + "command": { + "running": "در حال اجرا...", + "run_command": "اجرای دستور" + }, + "selection": { + "none_selected": "0 انتخاب شد", + "one_selected": "1 دسته انتخاب شد", + "count_selected": "{count} انتخاب شد" + }, + "status": { + "ready": "آماده", + "file_exists": "⚠️ فایل از قبل وجود دارد", + "video_file_exists": "⚠️ فایل ویدیو از قبل وجود دارد", + "audio_file_exists": "⚠️ فایل صوتی از قبل وجود دارد", + "subtitle_file_exists": "⚠️ فایل زیرنویس از قبل وجود دارد", + "cancelling": "در حال لغو دانلود...", + "thumbnail_saved": "✅ تصویر بندانگشتی ذخیره شد: {filename}", + "thumbnail_error": "❌ خطای تصویر بندانگشتی: {error}", + "thumbnail_no_image": "هیچ تصویر بندانگشتی برای ذخیره در دسترس نیست" + }, + "errors": { + "playlist_no_videos": "خطا: پلی‌لیست هیچ ویدیوی معتبری ندارد.", + "playlist_no_url": "خطا: امکان دریافت لینک اولین ویدیوی پلی‌لیست وجود نداشت.", + "ytdlp_not_found": "خطا: فایل اجرایی yt-dlp پیدا نشد. لطفاً ابتدا yt-dlp را نصب کنید.", + "ytdlp_not_found_path": "خطا: فایل اجرایی yt-dlp پیدا نشد. این می‌تواند به دلیل نصب نادرست یا مشکل PATH باشد.", + "no_data_returned": "خطا: هیچ داده‌ای از yt-dlp بازگردانده نشد", + "no_format_info": "خطا: هیچ اطلاعات فرمتی در دسترس نیست.", + "analysis_timeout": "خطا: زمان تحلیل به پایان رسید. لطفاً دوباره تلاش کنید.", + "invalid_speed_limit": "❌ خطا: مقدار محدودیت سرعت تنظیم‌شده در تنظیمات نامعتبر است.", + "ytdlp_failed": "خطا: yt-dlp با شکست مواجه شد: {error}", + "private_video": "این ویدیو ممکن است خصوصی باشد. لطفاً از کوکی‌ها در تنظیمات سفارشی استفاده کنید.", + "parse_failed": "خطا: تجزیه خروجی yt-dlp ناموفق بود: {error}", + "analysis_failed": "خطا: تحلیل ناموفق بود: {error}", + "generic_error": "خطا: {error}", + "download_failed_return_code_conflict": "دانلود با کد بازگشتی {return_code} ناموفق بود. این ممکن است به دلیل تداخل با چند نصب yt-dlp باشد. سعی کنید هر نصب سیستمی yt-dlp (مثلاً از طریق snap یا apt) را حذف کرده و برنامه را دوباره راه‌اندازی کنید.", + "download_failed_return_code": "دانلود با کد بازگشتی {return_code} ناموفق بود", + "direct_command_error": "خطا در دستور مستقیم: {error}" + }, + "update_dialog": { + "title": "به‌روزرسانی موجود است", + "new_version_available": "نسخه جدیدی از YTSage موجود است!", + "current_version_label": "نسخه فعلی:", + "latest_version_label": "آخرین نسخه:", + "changelog": "تغییرات", + "download_update": "دانلود به‌روزرسانی", + "remind_later": "بعداً یادآوری کن" + }, + "playlist": { + "unknown": "پلی‌لیست نامشخص", + "total_videos": "تعداد کل ویدیوها: {count}", + "display_format": "پلی‌لیست: {title} | {count} ویدیو", + "select_videos_title": "انتخاب ویدیوهای پلی‌لیست", + "save_as": "ذخیره پلی‌لیست به عنوان", + "save_success_title": "موفقیت", + "saved_successfully": "پلی‌لیست با موفقیت ذخیره شد.", + "save_error_title": "خطای ذخیره‌سازی", + "no_videos_to_save": "هیچ ورودی پلی‌لیستی جمع‌آوری نشده است!", + "save_error_msg": "ذخیره پلی‌لیست ناموفق بود." + }, + "subtitle_selection": { + "count_selected": "{count} انتخاب شد" + }, + "file_exists_dialog": { + "title": "فایل از قبل وجود دارد", + "message": "فایل از قبل وجود دارد:\n{filename}", + "info": "این ویدیو قبلاً دانلود شده است." + }, + "auto_update": { + "last_check_never": "آخرین بررسی به‌روزرسانی: هرگز", + "last_check": "آخرین بررسی به‌روزرسانی: {time}", + "next_check_disabled": "بررسی بعدی: غیرفعال", + "next_check_startup": "بررسی بعدی: در راه‌اندازی بعدی", + "next_check_overdue": "بررسی بعدی: اکنون (عقب‌افتاده)", + "next_check": "بررسی بعدی: {time}", + "next_check_error": "بررسی بعدی: خطا در محاسبه", + "checking": "🔄 در حال بررسی...", + "check_now": "🔍 بررسی به‌روزرسانی‌ها اکنون", + "current_version": "نسخه فعلی yt-dlp: {version}" + }, + "url_validation": { + "empty_url": "لینک نمی‌تواند خالی باشد", + "invalid_format": "قالب لینک نامعتبر است", + "invalid_scheme": "لینک باید با http:// یا https:// شروع شود", + "missing_domain": "لینک نامعتبر: نام دامنه موجود نیست", + "unsupported_platform": "YTSage فقط از لینک‌های یوتیوب و یوتیوب موزیک پشتیبانی می‌کند.\nدامنه '{domain}' پشتیبانی نمی‌شود.", + "invalid_youtu_be": "لینک youtu.be نامعتبر است: شناسه ویدیو موجود نیست" + }, + "ytdlp_errors": { + "private_video": "این یک ویدیوی خصوصی است. می‌توانید با ورود به حساب کاربری خود از طریق کوکی‌ها آن را دانلود کنید.\nبرای احراز هویت به 'تنظیمات سفارشی' ← 'ورود با کوکی' ← 'استخراج کوکی از مرورگر' بروید.", + "age_restricted": "این ویدیو دارای محدودیت سنی است. برای دسترسی به آن باید وارد حساب کاربری شده باشید.\nبرای احراز هویت با حساب خود از 'تنظیمات سفارشی' ← 'ورود با کوکی' استفاده کنید.", + "geo_blocked": "این ویدیو در منطقه شما در دسترس نیست (محدودیت جغرافیایی).\nممکن است نیاز به استفاده از VPN داشته باشید یا این ویدیو در کشور شما محدود شده باشد.", + "video_unavailable": "این ویدیو حذف شده یا دیگر در دسترس نیست.\nممکن است ویدیو توسط آپلودکننده حذف شده یا به دلیل نقض قوانین برداشته شده باشد.", + "live_stream": "این یک پخش زنده است که در حین فعال بودن قابل دانلود نیست.\nمنتظر پایان پخش زنده بمانید، سپس نسخه آرشیوشده را دانلود کنید.", + "playlist_error": "دسترسی به این پلی‌لیست ممکن نیست. ممکن است خصوصی، حذف‌شده یا خالی باشد.\nبررسی کنید که پلی‌لیست وجود داشته و به‌صورت عمومی در دسترس باشد.", + "network_error": "خطای اتصال شبکه. لطفاً اتصال اینترنت خود را بررسی کرده و دوباره تلاش کنید.\nاگر مشکل ادامه داشت، ممکن است سرور ویدیو به‌طور موقت در دسترس نباشد.", + "invalid_url": "لینک نامعتبر یا پشتیبانی‌نشده است. لطفاً لینک را بررسی کرده و دوباره تلاش کنید.\nمطمئن شوید از یک لینک معتبر یوتیوب، ویمیو یا سایر پلتفرم‌های پشتیبانی‌شده استفاده می‌کنید.", + "premium_content": "این محتوا نیازمند یوتیوب پرمیوم یا عضویت کانال است.\nباید با حسابی که به این محتوا دسترسی دارد وارد شده باشید.", + "copyright_blocked": "این ویدیو به دلیل ادعاهای کپی‌رایت مسدود شده است.\nصاحب محتوا دسترسی به این ویدیو را محدود کرده است.", + "extraction_failed": "استخراج اطلاعات ویدیو ناموفق بود. این ممکن است یک مشکل موقت باشد.\nلطفاً چند دقیقه دیگر دوباره تلاش کنید، یا صحت لینک ویدیو را بررسی کنید.", + "generic_error": "امکان استخراج اطلاعات ویدیو وجود نداشت. لطفاً لینک خود را بررسی کنید.\nجزئیات فنی: {error}" + }, + "history": { + "title": "تاریخچه دانلود", + "clear_all": "پاک کردن کل تاریخچه", + "clear_confirm_title": "پاک کردن تاریخچه؟", + "clear_confirm_message": "آیا مطمئن هستید که می‌خواهید کل تاریخچه دانلود را پاک کنید؟ این عمل قابل بازگشت نیست.", + "no_history": "هنوز تاریخچه دانلودی وجود ندارد", + "no_history_description": "ویدیوها و صداهای دانلودشده شما اینجا نمایش داده می‌شوند", + "loading": "در حال بارگذاری تاریخچه...", + "search_placeholder": "جستجو در تاریخچه...", + "open_location": "باز کردن محل فایل", + "redownload": "دانلود مجدد", + "remove": "حذف از تاریخچه", + "file_not_found": "فایل در محل اصلی پیدا نشد", + "file_not_found_message": "فایل جابه‌جا یا حذف شده است:\n{path}", + "downloaded_on": "دانلود شده در {date}", + "file_size": "حجم: {size}", + "audio_download": "صدا", + "video_download": "ویدیو", + "remove_confirm_title": "حذف از تاریخچه؟", + "remove_confirm_message": "این مورد از تاریخچه حذف شود؟\n\n{title}", + "item_removed": "مورد از تاریخچه حذف شد", + "history_cleared": "تاریخچه پاک شد", + "entries_count": "{count} دانلود", + "one_entry": "1 دانلود", + "redownload_confirm_title": "دانلود مجدد ویدیو؟", + "redownload_confirm_message": "این ویدیو با همان تنظیمات دوباره دانلود شود؟\n\n{title}", + "redownload_started": "دانلود مجدد شروع شد", + "no_url_error": "هیچ لینکی در مورد تاریخچه پیدا نشد", + "redownload_failed": "شروع دانلود مجدد ناموفق بود: {error}" + }, + "ffmpeg": { + "installation_title": "نصب FFmpeg", + "installation_message": "YTSage برای پردازش ویدیوها نیاز به FFmpeg دارد.\n\nیک گزینه نصب را از زیر انتخاب کنید:", + "install_button": "نصب FFmpeg", + "manual_guide": "راهنمای دستی", + "installation_failed": "در نصب FFmpeg مشکلی پیش آمد.", + "already_installed": "FFmpeg از قبل نصب شده است!", + "installation_complete": "نصب کامل شد. می‌توانید این پنجره را ببندید و از YTSage استفاده کنید.", + "installing": "در حال نصب FFmpeg... لطفاً صبر کنید", + "install_success": "FFmpeg با موفقیت نصب شد!", + "installation_complete_close": "نصب کامل شد. اکنون می‌توانید این پنجره را ببندید و از YTSage استفاده کنید.", + "try_manual": "لطفاً از راهنمای نصب دستی استفاده کنید." + }, + "ytdlp_setup": { + "required_title": "راه‌اندازی yt-dlp لازم است", + "description": "YTSage برای دانلود ویدیوها نیاز به yt-dlp دارد.

yt-dlp در پوشه محلی برنامه پیدا نشد. YTSage باید yt-dlp را برای سیستم {os_name} شما راه‌اندازی کند.

لطفاً یک گزینه را از زیر انتخاب کنید:", + "option_auto": "دانلود خودکار (پیشنهادی)", + "option_manual": "انتخاب دستی مسیر", + "setup_button": "راه‌اندازی yt-dlp", + "downloading": "در حال دانلود yt-dlp...", + "success": "yt-dlp با موفقیت نصب شد!", + "error": "خطا: {error}", + "download_failed_title": "دانلود ناموفق بود", + "download_failed_message": "دانلود yt-dlp ناموفق بود: {error}", + "select_executable_title": "انتخاب فایل اجرایی yt-dlp", + "copied_to": "yt-dlp با موفقیت به {path} کپی شد", + "setup_error_title": "خطای راه‌اندازی", + "copy_error": "خطا در کپی yt-dlp به پوشه برنامه: {error}", + "invalid_executable_title": "فایل اجرایی نامعتبر", + "invalid_executable_message": "فایل انتخاب‌شده یک فایل اجرایی معتبر yt-dlp به نظر نمی‌رسد.", + "verify_error": "خطا در تأیید فایل اجرایی yt-dlp: {error}", + "setup_failed_title": "راه‌اندازی ناموفق بود", + "setup_failed_message": "راه‌اندازی yt-dlp ناموفق بود. برخی ویژگی‌ها ممکن است به‌درستی کار نکنند.", + "success_dialog_title": "راه‌اندازی yt-dlp", + "success_dialog_message": "yt-dlp با موفقیت در مسیر زیر پیکربندی شد:\n{path}", + "file_filter_windows": "فایل‌های اجرایی (*.exe)", + "file_filter_all": "همه فایل‌ها (*)" + }, + "ffmpeg_updater": { + "title": "بررسی نسخه FFmpeg", + "current_version": "نسخه فعلی:", + "latest_version": "آخرین نسخه:", + "status_up_to_date": "✓ به‌روز است", + "status_update_available": "⚠ به‌روزرسانی موجود است", + "status_not_installed": "✗ نصب نشده است", + "status_idle": "برای شروع روی 'بررسی نسخه' کلیک کنید", + "status_checking": "🔄 در حال بررسی نسخه...", + "check_updates": "بررسی نسخه", + "check_failed": "بررسی نسخه ناموفق بود. لطفاً اتصال اینترنت خود را بررسی کنید.", + "description": "نسخه FFmpeg خود را بررسی کرده و با آخرین نسخه موجود مقایسه کنید.", + "guide_info": " برای نصب یا به‌روزرسانی FFmpeg، اینجا کلیک کنید تا راهنمای جامع نصب ما را مشاهده کنید." + }, + "deno": { + "setup_required": "راه‌اندازی Deno لازم است", + "setup_description": "YTSage برای اجرای برخی ویژگی‌ها نیاز به Deno دارد.

Deno در پوشه محلی برنامه پیدا نشد. YTSage باید Deno را برای سیستم {os_name} شما راه‌اندازی کند.

برای دانلود و نصب خودکار روی 'راه‌اندازی Deno' کلیک کنید.", + "setup_button": "راه‌اندازی Deno", + "downloading": "در حال دانلود Deno...", + "extracting": "در حال استخراج Deno...", + "verifying": "در حال تأیید Deno...", + "success": "Deno با موفقیت نصب شد!", + "download_failed": "دانلود ناموفق بود", + "download_error": "دانلود Deno ناموفق بود: {error}", + "verification_failed": "تأیید SHA256 ناموفق بود. ممکن است فایل دانلود‌شده خراب یا دستکاری شده باشد.", + "setup_failed": "راه‌اندازی Deno ناموفق بود. برخی ویژگی‌ها ممکن است به‌درستی کار نکنند.", + "setup_error": "خطای راه‌اندازی" + }, + "deno_updater": { + "title": "بررسی و به‌روزرسانی نسخه Deno", + "description": "نسخه Deno خود را بررسی کرده و به آخرین نسخه منتشرشده به‌روزرسانی کنید.", + "current_version": "نسخه فعلی:", + "latest_version": "آخرین نسخه:", + "status_idle": "برای شروع روی 'بررسی به‌روزرسانی‌ها' کلیک کنید", + "status_checking": "🔄 در حال بررسی به‌روزرسانی‌ها...", + "status_up_to_date": "✓ به‌روز است", + "status_update_available": "⚠ به‌روزرسانی موجود است", + "status_not_installed": "✗ نصب نشده است", + "check_updates": "بررسی به‌روزرسانی‌ها", + "update_now": "به‌روزرسانی Deno", + "updating": "🔄 در حال به‌روزرسانی Deno...", + "update_success": "✅ Deno با موفقیت به‌روزرسانی شد!", + "update_failed": "❌ به‌روزرسانی ناموفق بود: {error}", + "check_failed": "بررسی به‌روزرسانی‌ها ناموفق بود. لطفاً اتصال اینترنت خود را بررسی کنید." + } +} \ No newline at end of file