Просмотр исходного кода

Complete the Persian translation (#8923)

Translate remaining TODO and DIRTY entries in the Persian locale.
Mohammad Lashkari 2 недель назад
Родитель
Сommit
53ca983ef2
11 измененных файлов с 251 добавлено и 251 удалено
  1. 1 1
      README.fr.md
  2. 1 1
      README.md
  3. 47 47
      app/i18n/fa/admin.php
  4. 11 11
      app/i18n/fa/api.php
  5. 42 42
      app/i18n/fa/conf.php
  6. 9 9
      app/i18n/fa/feedback.php
  7. 51 51
      app/i18n/fa/gen.php
  8. 31 31
      app/i18n/fa/index.php
  9. 19 19
      app/i18n/fa/install.php
  10. 35 35
      app/i18n/fa/sub.php
  11. 4 4
      app/i18n/fa/user.php

+ 1 - 1
README.fr.md

@@ -233,7 +233,7 @@ Voir le [dépôt dédié à ces extensions](https://github.com/FreshRSS/Extensio
 | English (en) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F) |
 | English (United States) (en-US) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-US+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Español (es) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
-| فارسی (fa) | ■■■■■■■■■・ 90% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
+| فارسی (fa) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Suomi (fi) | ■■■■■■■■■・ 92% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Français (fr) | ■■■■■■■■■■ 100% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |
 | עברית (he) | ■■■■・・・・・・ 42% | [contribuer](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |

+ 1 - 1
README.md

@@ -129,7 +129,7 @@ See the [repository dedicated to those extensions](https://github.com/FreshRSS/E
 | English (en) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen+%2F%28TODO%7CDIRTY%29%24%2F) |
 | English (United States) (en-US) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fen-US+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Español (es) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fes+%2F%28TODO%7CDIRTY%29%24%2F) |
-| فارسی (fa) | ■■■■■■■■■・ 90% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
+| فارسی (fa) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffa+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Suomi (fi) | ■■■■■■■■■・ 92% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffi+%2F%28TODO%7CDIRTY%29%24%2F) |
 | Français (fr) | ■■■■■■■■■■ 100% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Ffr+%2F%28TODO%7CDIRTY%29%24%2F) |
 | עברית (he) | ■■■■・・・・・・ 42% | [contribute](https://github.com/search?q=repo%3AFreshRSS%2FFreshRSS+path%3Aapp%2Fi18n%2Fhe+%2F%28TODO%7CDIRTY%29%24%2F) |

+ 47 - 47
app/i18n/fa/admin.php

@@ -14,81 +14,81 @@ return array(
 	'auth' => array(
 		'allow_anonymous' => ' اجازه خواندن ناشناس مقالات کاربر پیش‌فرض (%s)',
 		'allow_anonymous_refresh' => ' اجازه بازخوانی ناشناس مقالات را بدهید',
-		'api_enabled' => ' اجازه دسترسی به <abbr>API</abbr> <small>(الزامی برای برنامه های تلفن همراه and sharing user queries and sharing user queries)</small>',	// DIRTY
-		'form' => ' فرم وب (سنتی',
-		'http' => 'یک پروتکل ارتباطی است که برای انتقال داده‌ها ',
+		'api_enabled' => 'اجازه دسترسی به <abbr>API</abbr> <small>(برای برنامه‌های موبایل و اشتراک‌گذاری پرس‌وجوهای کاربر لازم است)</small>',
+		'form' => 'فرم وب (سنتی، نیازمند JavaScript)',
+		'http' => 'HTTP (پیشرفته: مدیریت‌شده توسط وب‌سرور، OIDC، SSO و...)',
 		'none' => ' هیچ (خطرناک)',
 		'title' => ' احراز هویت',
-		'token' => 'به نوعی دارایی دیجیتال اشاره دارد که از ویژگی حفظ ارزش و انتقال به دیگران برخوردار است. توکن ابزار دیجیتالی است که بر روی بلاک چین رمزگذاری می‌شود. می‌توان گفت که توکن همان ارزدیجیتال با ویژگی‌های منحصر به فرد است.',
-		'token_help' => 'اجازه دسترسی به تمام خروجی های ار اس اس کاربر و همچنین به روزرسانی فید ها را بدون احراز هویت می دهد',
+		'token' => 'توکن اصلی احراز هویت',
+		'token_help' => 'اجازه دسترسی به همه خروجی‌های RSS کاربر و به‌روزرسانی فیدها را بدون احراز هویت می‌دهد:',
 		'type' => ' روش احراز هویت',
 	),
 	'extensions' => array(
 		'author' => ' نویسنده',
-		'community' => ' پسوندهای جامعه موجود',
+		'community' => ' افزونه‌های جامعه کاربری موجود',
 		'description' => ' توضیحات',
-		'disabled' => ' معلول',
-		'empty_list' => ' هیچ برنامه افزودنی نصب شده ای وجود ندارد',
+		'disabled' => 'غیرفعال',
+		'empty_list' => 'هیچ افزونه‌ای نصب نشده است',
 		'empty_list_help' => 'لاگ‌ها را بررسی کنید تا دلیل خالی بودن لیست افزونه‌ها مشخص شود',
 		'enabled' => ' فعال است',
-		'is_compatible' => 'Is compatible',	// TODO
-		'latest' => ' نصب شده است',
+		'is_compatible' => 'سازگار است',
+		'latest' => 'نصب‌شده',
 		'name' => ' نام',
 		'no_configure_view' => ' این برنامه افزودنی قابل پیکربندی نیست.',
 		'system' => array(
-			'_' => ' پسوندهای سیستم',
-			'no_rights' => ' پسوند سیستم (شما مجوزهای لازم را ندارید)',
+			'_' => 'افزونه‌های سیستم',
+			'no_rights' => 'افزونه سیستم (شما مجوزهای لازم را ندارید)',
 		),
-		'title' => ' برنامه های افزودنی',
-		'update' => ' به روز رسانی موجود است',
-		'user' => ' پسوندهای کاربر',
+		'title' => 'افزونه‌ها',
+		'update' => 'به‌روزرسانی موجود است',
+		'user' => 'افزونه‌های کاربر',
 		'version' => ' نسخه',
 	),
 	'stats' => array(
 		'_' => 'آمار',
 		'all_feeds' => ' همه فیدها',
 		'category' => ' دسته',
-		'date_published' => 'Publication date',	// TODO
-		'date_received' => 'Received date',	// TODO
+		'date_published' => 'تاریخ انتشار',
+		'date_received' => 'تاریخ دریافت',
 		'entry_count' => ' تعداد ورودی',
 		'entry_per_category' => ' ورودی در هر دسته',
 		'entry_per_day' => ' ورودی در روز (30 روز گذشته)',
-		'entry_per_day_of_week' => ' در هر روز هفته (میانگین: %2f پیام)',
-		'entry_per_hour' => ' در ساعت (میانگین: %2f پیام)',
-		'entry_per_month' => ' در هر ماه (میانگین: %2f پیام)',
-		'entry_repartition' => ' پارتیشن مجدد ورودی ها',
+		'entry_per_day_of_week' => 'در هر روز هفته (میانگین: %.2f پیام)',
+		'entry_per_hour' => 'در هر ساعت (میانگین: %.2f پیام)',
+		'entry_per_month' => 'در هر ماه (میانگین: %.2f پیام)',
+		'entry_repartition' => 'توزیع مقاله‌ها',
 		'feed' => ' خوراک',
 		'feed_per_category' => ' فید در هر دسته',
-		'idle' => ' تغذیه بیکار',
+		'idle' => 'فیدهای غیرفعال',
 		'main' => ' آمار اصلی',
 		'main_stream' => ' جریان اصلی',
-		'nb_unreads' => 'Number of unread articles',	// TODO
-		'no_idle' => ' هیچ فید بیکار وجود ندارد!',
+		'nb_unreads' => 'تعداد مقاله‌های خوانده‌نشده',
+		'no_idle' => 'هیچ فید غیرفعالی وجود ندارد!',
 		'number_entries' => ' %d مقاله',
 		'overview' => 'بررسی اجمالی',
-		'percent_of_total' => ' درصد از کل',
-		'repartition' => 'تقسیم‌بندی مجدد',
+		'percent_of_total' => 'درصد از کل',
+		'repartition' => 'توزیع مقاله‌ها: %s',
 		'status_favorites' => ' موارد دلخواه',
-		'status_read' => ' بخوانید',
+		'status_read' => 'خوانده‌شده',
 		'status_total' => ' مجموع',
-		'status_unread' => ' خوانده نشده',
+		'status_unread' => 'خوانده‌نشده',
 		'title' => 'آمار',
 		'top_feed' => ' ده فید برتر',
-		'unread_dates' => 'Dates with most unread articles',	// TODO
+		'unread_dates' => 'تاریخ‌هایی با بیشترین مقاله خوانده‌نشده',
 	),
 	'system' => array(
 		'_' => ' پیکربندی سیستم',
-		'auto-update-url' => ' به روز رسانی خودکار URL سرور',
+		'auto-update-url' => 'نشانی سرور به‌روزرسانی خودکار',
 		'base-url' => array(
 			'_' => 'آدرس پایه',
 			'recommendation' => 'توصیه: <kbd>%s</kbd>',
 		),
-		'closed_registration_message' => 'Message if registrations are closed',	// TODO
+		'closed_registration_message' => 'پیام هنگام بسته بودن ثبت‌نام',
 		'cookie-duration' => array(
 			'help' => ' در ثانیه',
 			'number' => ' مدت زمان ورود به سیستم',
 		),
-		'default_closed_registration_message' => 'This server does not accept new registrations at the moment.',	// TODO
+		'default_closed_registration_message' => 'این سرور در حال حاضر ثبت‌نام جدید نمی‌پذیرد.',
 		'force_email_validation' => ' اعتبارسنجی آدرس ایمیل اجباری',
 		'instance-name' => ' نام نمونه',
 		'max-categories' => ' حداکثر تعداد دسته ها برای هر کاربر',
@@ -98,9 +98,9 @@ return array(
 			'select' => array(
 				'label' => ' فرم ثبت نام',
 				'option' => array(
-					'noform' => ' معلولین: بدون فرم ثبت نام',
-					'nolimit' => ' فعال: بدون محدودیت حساب',
-					'setaccountsnumber' => ' حداکثر تنظیم کنید. تعداد حساب ها',
+					'noform' => 'غیرفعال: بدون فرم ثبت‌نام',
+					'nolimit' => 'فعال: بدون محدودیت تعداد حساب‌ها',
+					'setaccountsnumber' => 'فعال: با حداکثر تعداد حساب‌ها',
 				),
 			),
 			'status' => array(
@@ -109,33 +109,33 @@ return array(
 			),
 			'title' => 'فرم ثبت نام کاربر',
 		),
-		'sensitive-parameter' => 'پارامتر حساس. Edit manually in <kbd>./data/config.php</kbd>',
+		'sensitive-parameter' => 'پارامتر حساس. به صورت دستی در <kbd>./data/config.php</kbd> ویرایش کنید',
 		'tos' => array(
 			'disabled' => ' داده نشده است',
 			'enabled' => ' <a href="./?a=tos">فعال است</a>',
 			'help' => ' نحوه <a href="https://freshrss.github.io/FreshRSS/en/admins/12_User_management.html#enable-terms-of-service-tos" target="_blank">فعال کردن شرایط خدمات </a>',
 		),
 		'websub' => array(
-			'help' => ' در مورد <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">وب سایت</a>',
+			'help' => 'درباره <a href="https://freshrss.github.io/FreshRSS/en/users/WebSub.html" target="_blank">WebSub</a>',
 		),
 	),
 	'update' => array(
-		'_' => ' FreshRSS را به روز کنید',
-		'apply' => ' شروع به روز رسانی',
+		'_' => 'به‌روزرسانی FreshRSS',
+		'apply' => 'شروع به‌روزرسانی',
 		'changelog' => ' تغییرات',
-		'check' => ' به روز رسانی های جدید را بررسی کنید',
+		'check' => 'بررسی به‌روزرسانی‌های جدید',
 		'copiedFromURL' => 'update.php از %s به ./data کپی شد',
 		'current_version' => ' نسخه نصب شده فعلی',
 		'last' => ' آخرین بررسی',
-		'loading' => ' به روز رسانی…',
-		'none' => ' به روز رسانی در دسترس نیست',
+		'loading' => 'در حال به‌روزرسانی…',
+		'none' => 'به‌روزرسانی در دسترس نیست',
 		'releaseChannel' => array(
 			'_' => ' کانال انتشار',
-			'edge' => ' انتشار نورد ("لبه")',
-			'latest' => ' انتشار پایدار ("آخرین")',
+			'edge' => 'انتشار پیوسته («edge»)',
+			'latest' => 'انتشار پایدار («latest»)',
 		),
-		'title' => ' FreshRSS را به روز کنید',
-		'viaGit' => ' به روز رسانی از طریق git و GitHub.com شروع شد',
+		'title' => 'به‌روزرسانی FreshRSS',
+		'viaGit' => 'به‌روزرسانی از طریق git و GitHub.com شروع شد',
 	),
 	'user' => array(
 		'admin' => ' مدیر',
@@ -152,7 +152,7 @@ return array(
 		'list' => ' لیست کاربران',
 		'number' => ' %d حساب ایجاد شده است',
 		'numbers' => ' %d حساب ایجاد شده است',
-		'password_form' => ' رمز عبور<br /><small>(برایروش ورود به فرم وب)</small>',
+		'password_form' => 'رمز عبور<br /><small>(برای روش ورود با فرم وب)</small>',
 		'password_format' => ' حداقل 7 کاراکتر',
 		'title' => ' مدیریت کاربران',
 		'username' => ' نام کاربری',

+ 11 - 11
app/i18n/fa/api.php

@@ -12,22 +12,22 @@
 
 return array(
 	'information' => array(
-		'address' => 'Your API address:',	// TODO
+		'address' => 'نشانی API شما:',
 		'output' => array(
-			'encoding-support' => '⚠️ WARN: no <code>%2F</code> support, some clients might not work!',	// TODO
-			'invalid-configuration' => '⚠️ WARN: Probable invalid base URL in ./data/config.php',	// TODO
-			'pass' => '✔️ PASS',	// TODO
-			'unknown-error' => '❌ ',	// TODO
+			'encoding-support' => '⚠️ هشدار: پشتیبانی از <code>%2F</code> وجود ندارد؛ ممکن است برخی کلاینت‌ها کار نکنند!',
+			'invalid-configuration' => '⚠️ هشدار: احتمالاً نشانی پایه در ./data/config.php نامعتبر است',
+			'pass' => '✔️ قبول',
+			'unknown-error' => '❌ خطای ناشناخته',
 		),
 		'test' => array(
-			'fever' => 'Fever API configuration test:',	// TODO
-			'greader' => 'Google Reader API configuration test:',	// TODO
+			'fever' => 'آزمون پیکربندی API سازگار با Fever:',
+			'greader' => 'آزمون پیکربندی API سازگار با Google Reader:',
 		),
 		'title' => array(
-			'_' => 'FreshRSS API endpoints',	// TODO
-			'extension' => 'API for extensions',	// TODO
-			'fever' => 'Fever compatible API',	// TODO
-			'greader' => 'Google Reader compatible API',	// TODO
+			'_' => 'نقاط پایانی API در FreshRSS',
+			'extension' => 'API برای افزونه‌ها',
+			'fever' => 'API سازگار با Fever',
+			'greader' => 'API سازگار با Google Reader',
 		),
 	),
 );

+ 42 - 42
app/i18n/fa/conf.php

@@ -36,7 +36,7 @@ return array(
 			'_' => ' حالت تاریک خودکار',
 			'auto' => ' خودکار',
 			'help' => 'کمک',
-			'no' => ' شماره',
+			'no' => 'خیر',
 		),
 		'icon' => array(
 			'bottom_line' => ' خط پایین',
@@ -56,21 +56,21 @@ return array(
 		'show_nav_buttons' => ' دکمه های ناوبری را نشان دهید',
 		'show_title_unread' => 'نمایش تعداد مقالات خوانده نشده در عنوان',
 		'show_unread_count' => array(
-			'_' => 'Show unread counts in sidebar',	// TODO
-			'all' => 'For all categories and feeds',	// TODO
-			'important' => 'For important feeds only',	// TODO
-			'important_locked' => 'Important feeds always show their unread count.',	// TODO
-			'none' => 'Never',	// TODO
+			'_' => 'نمایش تعداد خوانده‌نشده‌ها در نوار کناری',
+			'all' => 'برای همه دسته‌ها و فیدها',
+			'important' => 'فقط برای فیدهای مهم',
+			'important_locked' => 'فیدهای مهم همیشه تعداد خوانده‌نشده‌های خود را نشان می‌دهند.',
+			'none' => 'هرگز',
 		),
-		'sidebar_hidden_by_default' => 'Hide sidebar by default',	// TODO
+		'sidebar_hidden_by_default' => 'پنهان کردن نوار کناری به صورت پیش‌فرض',
 		'theme' => array(
 			'_' => ' موضوع',
 			'deprecated' => array(
 				'_' => ' منسوخ شده است',
-				'description' => ' این طرح زمینه دیگر پشتیبانی نمی‌شود و در <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">آینده در دسترس نخواهد بود انتشار FreshRSS</a>',
+				'description' => 'این پوسته دیگر پشتیبانی نمی‌شود و در <a href="https://freshrss.github.io/FreshRSS/en/users/05_Configuration.html#theme" target="_blank">نسخه آینده FreshRSS</a> در دسترس نخواهد بود',
 			),
 		),
-		'theme_not_available' => ' طرح زمینه "%s" دیگر در دسترس نیست. لطفا موضوع دیگری را انتخاب کنید.',
+		'theme_not_available' => 'پوسته «%s» دیگر در دسترس نیست. لطفاً پوسته دیگری انتخاب کنید.',
 		'thumbnail' => array(
 			'label' => ' تصویر بند انگشتی',
 			'landscape' => ' منظره',
@@ -83,7 +83,7 @@ return array(
 		'website' => array(
 			'full' => ' نماد و نام',
 			'icon' => ' فقط نماد',
-			'label' => ' وب سایت',
+			'label' => 'وب‌سایت',
 			'name' => ' فقط نام',
 			'none' => ' هیچکدام',
 		),
@@ -115,22 +115,22 @@ return array(
 		'small' => 'کوچک',
 	),
 	'notification' => array(
-		'html5_enable_notif' => 'Enable notification',	// TODO
+		'html5_enable_notif' => 'فعال کردن اعلان',
 	),
 	'notification_timeout' => array(
 		'bad' => array(
-			'label' => 'Show warning banner',	// TODO
-			'seconds' => 'seconds (at least 1)',	// TODO
+			'label' => 'نمایش نوار هشدار',
+			'seconds' => 'ثانیه (حداقل ۱)',
 		),
 		'good' => array(
-			'label' => 'Show acknowledgement banner',	// TODO
-			'seconds' => 'seconds (0 means not shown)',	// TODO
+			'label' => 'نمایش نوار تأیید',
+			'seconds' => 'ثانیه (۰ یعنی نمایش داده نشود)',
 		),
 	),
 	'privacy' => array(
 		'_' => 'حریم خصوصی',
 		'retrieve_extension_list' => 'بازیابی لیست افزونه‌ها',
-		'send_referrer_allowlist' => 'Sites allowed to see your server address (%s)',	// TODO
+		'send_referrer_allowlist' => 'سایت‌هایی که مجازند نشانی سرور شما را ببینند (%s)',
 	),
 	'profile' => array(
 		'_' => ' مدیریت پروفایل',
@@ -142,11 +142,11 @@ return array(
 			'disabled' => 'غیرفعال',
 			'documentation_link' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target="_blank">مستندات و فهرست برنامه‌های شناخته‌شده</a>',	// IGNORE
 			'help' => 'See <a href="http://freshrss.github.io/FreshRSS/en/users/06_Mobile_access.html#access-via-mobile-app" target=_blank>documentation</a>',	// IGNORE
-			'security_warning' => 'Use HTTPS. The API password is transmitted in clear text and may appear in server logs if sent via GET.',	// TODO
+			'security_warning' => 'از HTTPS استفاده کنید. رمز عبور API به صورت متن ساده ارسال می‌شود و اگر با GET فرستاده شود ممکن است در لاگ‌های سرور ثبت شود.',
 		),
 		'change_password' => 'تغییر رمز عبور',
 		'confirm_new_password' => 'تأیید رمز عبور جدید',
-		'current_password' => 'رمز عبور کنونی<br /><small>(for the Web-form login method)</small>',
+		'current_password' => 'رمز عبور کنونی<br /><small>(برای روش ورود با فرم وب)</small>',
 		'delete' => array(
 			'_' => ' حذف اکانت',
 			'warn' => ' حساب شما و تمام داده های مرتبط حذف خواهد شد.',
@@ -159,19 +159,19 @@ return array(
 	),
 	'query' => array(
 		'_' => ' پرس و جوهای کاربر',
-		'create' => 'Create new user query',	// TODO
+		'create' => 'ایجاد پرس‌وجوی کاربری جدید',
 		'deprecated' => ' این عبارت دیگر معتبر نیست. دسته یا فید ارجاع شده حذف شده است.',
 		'description' => 'توضیحات',
 		'filter' => array(
 			'_' => ' فیلتر اعمال شده:',
-			'categories' => ' نمایش بر اساس دسته بندی',
+			'categories' => 'نمایش بر اساس دسته‌بندی',
 			'feeds' => ' نمایش با فید',
 			'order' => ' مرتب سازی بر اساس تاریخ',
-			'publish_labels_instead_of_tags' => 'Replace <i>feed tags</i> by <i>user labels</i> in the shared RSS',	// TODO
+			'publish_labels_instead_of_tags' => 'در RSS اشتراکی، <i>برچسب‌های فید</i> را با <i>برچسب‌های کاربر</i> جایگزین کنید',
 			'search' => ' بیان',
 			'shareOpml' => 'فعال‌سازی اشتراک‌گذاری دسته‌ها و فیدهای مربوطه با OPML',
 			'shareRss' => 'اشتراک‌گذاری RSS',
-			'state' => ' ایالت',
+			'state' => 'وضعیت',
 			'tags' => ' نمایش بر اساس برچسب',
 			'type' => ' نوع',
 		),
@@ -184,15 +184,15 @@ return array(
 		'get_feed' => ' فید "%s" را نمایش دهید',
 		'get_important' => 'نمایش مقالات از فیدهای مهم',
 		'get_label' => 'نمایش مقالات با برچسب %s',
-		'help' => 'See the <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">مستندات مربوط به پرس‌وجوهای کاربران و بازنشر آن‌ها HTML / RSS / OPML</a>.',
+		'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">مستندات مربوط به پرس‌وجوهای کاربر و بازنشر آن‌ها با HTML / RSS / OPML</a> را ببینید.',
 		'image_url' => 'نشانی اینترنتی تصویر',
 		'name' => ' نام',
 		'no_filter' => ' بدون فیلتر',
 		'no_queries' => array(
 			'_' => 'هنوز هیچ پرس‌وجوی کاربری ذخیره نشده است',
-			'help' => 'See <a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">سند</a>',
+			'help' => '<a href="https://freshrss.github.io/FreshRSS/en/users/user_queries.html" target="_blank">مستندات</a> را ببینید',
 		),
-		'number' => ' پرس و جو n°%d',
+		'number' => 'پرس‌وجوی شماره %d',
 		'order_asc' => ' ابتدا قدیمی ترین مقالات را نمایش دهید',
 		'order_desc' => ' ابتدا جدیدترین مقالات را نمایش دهید',
 		'search' => ' «%s» را جستجو کنید',
@@ -216,10 +216,10 @@ return array(
 		'state_5' => ' نمایش مقالات مورد علاقه خوانده شده',
 		'state_6' => 'نمایش مقالات مورد علاقه خوانده نشده',
 		'state_7' => ' نمایش مقالات مورد علاقه',
-		'state_8' => ' نمایش مقالات مورد علاقه نیست',
+		'state_8' => 'نمایش مقاله‌های غیرموردعلاقه',
 		'state_9' => ' نمایش مقالات مورد علاقه خوانده نشده',
-		'state_10' => ' نمایش مقالات خوانده نشده و نه مورد علاقه',
-		'state_11' => ' نمایش مقالات مورد علاقه نیست',
+		'state_10' => 'نمایش مقاله‌های خوانده‌نشده و غیرموردعلاقه',
+		'state_11' => 'نمایش مقاله‌های غیرموردعلاقه',
 		'state_12' => ' نمایش همه مقالات',
 		'state_13' => ' نمایش مقالات خوانده شده',
 		'state_14' => ' نمایش مقالات خوانده نشده',
@@ -246,7 +246,7 @@ return array(
 			),
 			'feed_title' => ' عنوان خوراک',
 			'icons' => array(
-				'_' => 'موقعیت آیکون‌ها<br /><small>(Reading view only)</small>',
+				'_' => 'موقعیت آیکون‌ها<br /><small>(فقط در نمای خواندن)</small>',
 				'above_title' => 'بالاتر از عنوان',
 				'with_authors' => 'در سطر نویسنده و تاریخ',
 			),
@@ -267,7 +267,7 @@ return array(
 		'auto_remove_article' => ' مخفی کردن مقالات پس از خواندن',
 		'confirm_enabled' => ' یک دیالوگ تأیید را روی اقدامات "علامت گذاری همه به عنوان خوانده شده" نمایش دهید',
 		'display_articles_unfolded' => ' نمایش مقالاتی که به طور پیش فرض باز شده اند',
-		'display_categories_unfolded' => ' دسته بندی هایی که باید آشکار شوند',
+		'display_categories_unfolded' => 'دسته‌بندی‌هایی که باید باز باشند',
 		'headline' => array(
 			'articles' => ' مقالات: باز/بستن',
 			'articles_header_footer' => ' مقالات: سرصفحه / پاورقی',
@@ -278,11 +278,11 @@ return array(
 		),
 		'hide_read_feeds' => ' دسته‌ها و فیدها را بدون مقاله خوانده نشده پنهان کنید (با پیکربندی «نمایش همه مقاله‌ها» کار نمی‌کند)',
 		'img_with_lazyload' => ' از حالت <em>بار تنبل</em> برای بارگیری تصاویر استفاده کنید',
-		'jump_next' => ' پرش به خواهر و برادر خوانده نشده بعدی',
+		'jump_next' => 'پرش به مورد خوانده‌نشده بعدی در همان سطح',
 		'mark_updated_article_unread' => ' مقالات به روز شده را به عنوان خوانده نشده علامت گذاری کنید',
 		'number_divided_when_reader' => ' در نمای خواندن بر 2 تقسیم کنید.',
 		'read' => array(
-			'article_open_on_website' => ' هنگامی که مقاله در وب سایت اصلی خود باز می شود',
+			'article_open_on_website' => 'هنگامی که مقاله در وب‌سایت اصلی خود باز می‌شود',
 			'article_viewed' => ' هنگام مشاهده مقاله',
 			'focus' => 'فقط هنگام انتخاب فید (به‌جز فیدهای مهم)',
 			'keep_max_n_unread' => ' حداکثر تعداد مقالات خوانده نشده',
@@ -290,9 +290,9 @@ return array(
 			'upon_gone' => ' زمانی که دیگر در فید اخبار بالادستی نیست',
 			'upon_reception' => ' پس از دریافت مقاله',
 			'when' => ' علامت گذاری یک مقاله به عنوان خوانده شده…',
-			'when_same_guid_in_category' => 'if an identical GUID already exists in the top <i>n</i> newest articles of the category',	// TODO
-			'when_same_title_in_category' => 'اگر عنوان مشابهی در بخش بالا وجود دارد <i>n</i> تازه‌ترین مقالات این دسته',
-			'when_same_title_in_feed' => ' اگر عنوان یکسانی از قبل در <i>n</i> جدیدترین مقالات بالا وجود داشته باشد (از فید)',
+			'when_same_guid_in_category' => 'اگر GUID یکسانی از قبل در <i>n</i> مقاله جدیدتر دسته وجود داشته باشد',
+			'when_same_title_in_category' => 'اگر عنوان مشابهی از قبل در <i>n</i> مقاله جدیدتر این دسته وجود داشته باشد',
+			'when_same_title_in_feed' => 'اگر عنوان مشابهی از قبل در <i>n</i> مقاله جدیدتر این فید وجود داشته باشد',
 		),
 		'show' => array(
 			'_' => ' مقالات برای نمایش',
@@ -301,7 +301,7 @@ return array(
 			'all_articles' => ' نمایش همه مقالات',
 			'all_categories' => ' همه دسته ها',
 			'no_category' => ' بدون دسته',
-			'remember_categories' => ' دسته بندی های باز را به خاطر بسپارید',
+			'remember_categories' => 'دسته‌بندی‌های باز را به خاطر بسپارید',
 			'unread' => ' فقط خوانده نشده را نشان دهد',
 			'unread_or_favorite' => 'نمایش خوانده‌نشده‌ها و موردعلاقه‌ها',
 		),
@@ -323,7 +323,7 @@ return array(
 		'_' => ' اشتراک گذاری',
 		'add' => ' یک روش اشتراک گذاری اضافه کنید',
 		'bluesky' => 'Bluesky( یک شبکه اجتماعی غیرمتمرکز است که به کاربران اجازه می‌دهد پست‌های کوتاه، عکس و ویدیو به اشتراک بگذارند)',
-		'deprecated' => ' این سرویس منسوخ شده است و در <a href="https://freshrss.github.io/FreshRSS/en/users/08_sharing_services.html" title="باز کردن اسناد برای اطلاعات بیشتر" target= از FreshRSS حذف خواهد شد. "_blank">نسخه آینده</a>.',
+		'deprecated' => 'این سرویس منسوخ شده است و در <a href="https://freshrss.github.io/FreshRSS/en/users/08_sharing_services.html" title="باز کردن مستندات برای اطلاعات بیشتر" target="_blank">نسخه آینده</a> از FreshRSS حذف خواهد شد.',
 		'diaspora' => ' دیاسپورا*',
 		'email' => ' ایمیل',
 		'facebook' => ' فیس بوک',
@@ -340,11 +340,11 @@ return array(
 	),
 	'shortcut' => array(
 		'_' => ' میانبرها',
-		'article_action' => ' اقدامات ماده',
+		'article_action' => 'اقدام‌های مقاله',
 		'auto_share' => ' اشتراک گذاری',
 		'auto_share_help' => ' اگر فقط یک حالت اشتراک گذاری وجود داشته باشد',
 		'close_menus' => ' منوها را ببندید',
-		'collapse_article' => ' فروپاشی',
+		'collapse_article' => 'جمع کردن مقاله',
 		'first_article' => ' اولین مقاله را باز کنید',
 		'focus_search' => ' به کادر جستجو دسترسی پیدا کنید',
 		'global_view' => ' تغییر به نمای جهانی',
@@ -365,16 +365,16 @@ return array(
 		'previous_article' => ' مقاله قبلی را باز کنید',
 		'reading_view' => ' به نمای خواندن بروید',
 		'rss_view' => ' به عنوان فید RSS باز شود',
-		'see_on_website' => ' به وب سایت اصلی مراجعه کنید',
+		'see_on_website' => 'به وب‌سایت اصلی مراجعه کنید',
 		'shift_for_all_read' => '+ <kbd>Alt ⎇</kbd> برای علامت گذاری مقالات قبلی به عنوان خوانده شده<br />+ <kbd>⇧ Shift</kbd> برای علامت گذاری همه مقالات به عنوان خوانده شده',
 		'skip_next_article' => ' فوکوس بعدی بدون باز کردن',
 		'skip_previous_article' => ' فوکوس قبلی بدون باز کردن',
 		'title' => ' میانبرها',
-		'toggle_aside' => 'Toggle sidebar',	// TODO
+		'toggle_aside' => 'تغییر وضعیت نوار کناری',
 		'toggle_media' => ' پخش/مکث رسانه',
 		'user_filter' => ' به درخواست های کاربر دسترسی پیدا کنید',
 		'user_filter_help' => ' اگر فقط یک درخواست کاربر وجود داشته باشد',
-		'views' => ' بازدید',
+		'views' => 'نماها',
 	),
 	'user' => array(
 		'articles_and_size' => '%s مقاله (%s)',

+ 9 - 9
app/i18n/fa/feedback.php

@@ -50,7 +50,7 @@ return array(
 			'ko' => ' %s را نمی توان فعال کرد. برای جزئیات <a href="%s">گزارش‌های FreshRSS</a> را بررسی کنید.',
 			'ok' => ' %s اکنون فعال است',
 		),
-		'invalid_view_mode' => 'حالت نمایشی که انتخاب کردی درست نیست! برمی‌گردم به حالت',
+		'invalid_view_mode' => 'حالت نمایش «%s» نامعتبر است! بازگشت به «نمای عادی».',
 		'no_access' => ' شما به %s دسترسی ندارید',
 		'not_enabled' => '%s فعال نیست',
 		'not_found' => '%s وجود ندارد',
@@ -58,8 +58,8 @@ return array(
 	),
 	'import_export' => array(
 		'export_no_zip_extension' => ' پسوند ZIP در سرور شما وجود ندارد. لطفا سعی کنید فایل ها را یکی یکی صادر کنید.',
-		'feeds_imported' => ' فیدهای شما وارد شده اند و اکنون به روز خواهند شد / Your feeds have been imported. If you are done importing, you can now click the <i>Update feeds</i> button.',
-		'feeds_imported_with_errors' => ' فیدهای شما وارد شده است / Your feeds have been imported, but some errors occurred. If you are done importing, you can now click the <i>Update feeds</i> button.',
+		'feeds_imported' => 'فیدهای شما وارد شده‌اند. اگر کار وارد کردن تمام شده است، اکنون می‌توانید روی دکمه <i>به‌روزرسانی فیدها</i> کلیک کنید.',
+		'feeds_imported_with_errors' => 'فیدهای شما وارد شده‌اند، اما چند خطا رخ داده است. اگر کار وارد کردن تمام شده است، اکنون می‌توانید روی دکمه <i>به‌روزرسانی فیدها</i> کلیک کنید.',
 		'file_cannot_be_uploaded' => ' فایل قابل آپلود نیست!',
 		'no_zip_extension' => ' پسوند ZIP در سرور شما وجود ندارد.',
 		'zip_error' => ' در حین پردازش ZIP خطایی روی داد.',
@@ -83,9 +83,9 @@ return array(
 			'name_exists' => ' نام دسته از قبل وجود دارد.',
 			'no_id' => ' شما باید شناسه دسته را مشخص کنید.',
 			'no_name' => ' نام دسته نمی تواند خالی باشد.',
-			'not_delete_default' => ' شما نمی توانید دسته بندی پیش فرض را حذف کنید!',
-			'not_exist' => ' دسته بندی وجود ندارد!',
-			'over_max' => ' شما به حد مجاز دسته بندی خود رسیده اید (%d)',
+			'not_delete_default' => 'شما نمی‌توانید دسته‌بندی پیش‌فرض را حذف کنید!',
+			'not_exist' => 'دسته‌بندی وجود ندارد!',
+			'over_max' => 'شما به حد مجاز دسته‌بندی‌های خود رسیده‌اید (%d)',
 			'updated' => ' رده به روز شده است.',
 		),
 		'feed' => array(
@@ -100,7 +100,7 @@ return array(
 				'too_large' => 'نماد آپلود شده خیلی بزرگ است. حداکثر حجم فایل <em>%s</em>.',
 				'unsupported_format' => 'فرمت فایل تصویری پشتیبانی نمی‌شود!',
 			),
-			'internal_problem' => ' فید خبری اضافه نشد. برای جزئیات <a href="%s">گزارش‌های FreshRSS</a> را بررسی کنید. می‌توانید با اضافه کردن <code>#force_feed</code> به URL',
+			'internal_problem' => 'فید خبری اضافه نشد. برای جزئیات <a href="%s">گزارش‌های FreshRSS</a> را بررسی کنید. می‌توانید با افزودن <code>#force_feed</code> به انتهای URL، افزودن اجباری را امتحان کنید.',
 			'invalid_url' => ' URL <em>%s</em> نامعتبر است',
 			'n_actualized' => ' %d فید به روز شده است',
 			'n_entries_deleted' => ' %d مقاله حذف شده است',
@@ -110,7 +110,7 @@ return array(
 			'over_max' => ' شما به حد مجاز فید خود رسیده اید (%d)',
 			'reloaded' => '<em>%s</em> دوباره بارگیری شده است',
 			'selector_preview' => array(
-				'http_error' => ' محتوای وب سایت بارگیری نشد.',
+				'http_error' => 'محتوای وب‌سایت بارگیری نشد.',
 				'no_entries' => ' هیچ مقاله ای در این فید وجود ندارد. برای ایجاد پیش نمایش به حداقل یک مقاله نیاز دارید.',
 				'no_feed' => ' خطای داخلی (فید یافت نمی شود).',
 				'no_result' => ' انتخابگر با چیزی مطابقت نداشت. به عنوان یک بازگشت',
@@ -130,7 +130,7 @@ return array(
 	'update' => array(
 		'can_apply' => ' به‌روزرسانی FreshRSS موجود است: <strong>نسخه %s</strong>.',
 		'error' => ' فرآیند به روز رسانی با خطا مواجه شده است: %s',
-		'file_is_nok' => ' به‌روزرسانی FreshRSS موجود است (<strong>نسخه %s</strong>)',
+		'file_is_nok' => 'به‌روزرسانی FreshRSS موجود است (<strong>نسخه %s</strong>)، اما مجوزهای دایرکتوری <em>%s</em> را بررسی کنید. سرور HTTP باید مجوز نوشتن داشته باشد',
 		'finished' => ' به روز رسانی کامل شد!',
 		'none' => ' به روز رسانی در دسترس نیست',
 		'server_not_found' => ' سرور به روز رسانی یافت نمی شود. [%s]',

+ 51 - 51
app/i18n/fa/gen.php

@@ -46,7 +46,7 @@ return array(
 		'refresh_opml' => ' OPML را بازخوانی کنید',
 		'remove' => ' حذف کنید',
 		'rename' => ' تغییر نام',
-		'see_website' => ' به وب سایت مراجعه کنید',
+		'see_website' => 'به وب‌سایت مراجعه کنید',
 		'submit' => ' ارسال کنید',
 		'truncate' => ' تمام مقالات را حذف کنید',
 		'update' => ' به روز رسانی',
@@ -77,18 +77,18 @@ return array(
 		),
 	),
 	'date' => array(
-		'Apr' => 'آ/و/ر/ی/ل//',
-		'Aug' => 'آ/گ/و/س/ت//',
-		'Dec' => 'د/س/ا/م/ب/ر//',
-		'Feb' => 'ف/و/ر/ی/ه//',
-		'Jan' => 'ژ/ا/ن/و/ی/ه//',
-		'Jul' => 'ژ/و/ئ/ی/ه//',
-		'Jun' => 'ژ/و/ئ/ن//',
-		'Mar' => 'م/ا/ر/س//',
-		'May' => 'م/ی//',
-		'Nov' => 'ن/و/ا/م/ب/ر//',
-		'Oct' => 'ا/ک/ت/ب/ر//',
-		'Sep' => 'س/پ/ت/ا/م/ب/ر//',
+		'Apr' => 'آوریل',
+		'Aug' => 'اوت',
+		'Dec' => 'دسامبر',
+		'Feb' => 'فوریه',
+		'Jan' => 'ژانویه',
+		'Jul' => 'ژوئیه',
+		'Jun' => 'ژوئن',
+		'Mar' => 'مارس',
+		'May' => 'مه',
+		'Nov' => 'نوامبر',
+		'Oct' => 'اکتبر',
+		'Sep' => 'سپتامبر',
 		'apr' => ' آوریل',
 		'april' => ' آوریل',
 		'aug' => ' آگوست',
@@ -115,7 +115,7 @@ return array(
 		'last_month' => ' ماه گذشته',
 		'last_week' => ' هفته گذشته',
 		'last_year' => ' سال گذشته',
-		'mar' => ' مارس.',
+		'mar' => ' مارس',
 		'march' => ' مارس',
 		'may' => ' مه',
 		'may_' => ' مه',
@@ -126,7 +126,7 @@ return array(
 		'oct' => ' اکتبر',
 		'october' => ' اکتبر',
 		'sat' => ' شنبه',
-		'sep' => ' سپتامبر.',
+		'sep' => ' سپتامبر',
 		'september' => ' سپتامبر',
 		'sun' => ' یکشنبه',
 		'thu' => ' پنجشنبه',
@@ -171,7 +171,7 @@ return array(
 		'category_empty' => ' دسته خالی',
 		'confirm_action' => ' آیا مطمئن هستید که می خواهید این عمل را انجام دهید؟ نمی توان آن را لغو کرد!',
 		'confirm_action_feed_cat' => ' آیا مطمئن هستید که می خواهید این عمل را انجام دهید؟ موارد دلخواه و درخواست های کاربر مرتبط را از دست خواهید داد. نمی توان آن را لغو کرد!',
-		'confirm_exit_slider' => 'Are you sure you want to discard unsaved settings?',	// TODO
+		'confirm_exit_slider' => 'مطمئنید می‌خواهید تنظیمات ذخیره‌نشده را نادیده بگیرید؟',
 		'feedback' => array(
 			'body_new_articles' => ' %%d مقاله جدید برای خواندن در FreshRSS وجود دارد.',
 			'body_unread_articles' => ' (خوانده نشده: %%d)',
@@ -181,7 +181,7 @@ return array(
 		'labels_empty' => 'بدون برچسب',
 		'new_article' => 'مقالات جدیدی موجود است',
 		'should_be_activated' => ' جاوا اسکریپت باید فعال باشد',
-		'unsafe_csp_header' => 'The CSP header in use is unsafe and FreshRSS may be vulnerable to XSS attacks. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">See documentation</a>',	// TODO
+		'unsafe_csp_header' => 'سرآیند CSP فعلی امن نیست و FreshRSS ممکن است در برابر حملات XSS آسیب‌پذیر باشد. <a target="_blank" href="https://freshrss.github.io/FreshRSS/en/admins/10_ServerConfig.html#security">مستندات را ببینید</a>',
 	),
 	'lang' => array(
 		'cs' => 'Čeština',	// IGNORE
@@ -215,20 +215,20 @@ return array(
 	'menu' => array(
 		'about' => ' در مورد',
 		'account' => ' حساب',
-		'admin' => ' اداره',
-		'advanced_search' => 'Advanced Search',	// TODO
+		'admin' => 'مدیریت',
+		'advanced_search' => 'جستجوی پیشرفته',
 		'archiving' => ' آرشیو',
 		'authentication' => ' احراز هویت',
 		'check_install' => ' بررسی نصب',
 		'configuration' => ' پیکربندی',
 		'display' => 'نمایش',
-		'extensions' => ' برنامه های افزودنی',
-		'logs' => ' سیاهههای مربوط',
+		'extensions' => 'افزونه‌ها',
+		'logs' => 'گزارش‌ها',
 		'privacy' => 'حریم خصوصی',
 		'queries' => ' پرس و جوهای کاربر',
 		'reading' => ' خواندن',
 		'search' => ' کلمات یا #برچسب ها را جستجو کنید',
-		'search_help' => ' به مستندات <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">پارامترهای جستجوی پیشرفته</a مراجعه کنید >',
+		'search_help' => 'به مستندات <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">پارامترهای جستجوی پیشرفته</a> مراجعه کنید',
 		'sharing' => ' اشتراک گذاری',
 		'shortcuts' => ' میانبرها',
 		'stats' => 'آمار',
@@ -250,32 +250,32 @@ return array(
 		'translated' => 'Progress',	// IGNORE
 	),
 	'search' => array(
-		'advanced_search_help' => 'This form helps construct search queries, but manual queries are even more powerful.',	// TODO
-		'authors' => 'Authors',	// TODO
-		'categories' => 'Categories',	// TODO
-		'content' => 'Content',	// TODO
-		'date_from' => 'From',	// TODO
-		'date_modified' => 'Server Modification Date',	// TODO
-		'date_past' => 'In the past',	// TODO
-		'date_published' => 'Publication Date',	// TODO
-		'date_range' => 'Date Range',	// TODO
-		'date_received' => 'Received Date',	// TODO
-		'date_to' => 'To',	// TODO
-		'date_user' => 'User Modification Date',	// TODO
-		'feeds' => 'Feeds',	// TODO
-		'free_text' => 'Free Text',	// TODO
-		'free_text_help' => 'Search both in title and content',	// TODO
-		'full_documentation' => 'View <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">full search documentation</a>',	// TODO
-		'labels' => 'My Labels',	// TODO
-		'multiple_help' => 'Select one or more (hold <kbd>Ctrl</kbd> or <kbd>Cmd</kbd>)',	// TODO
-		'sources' => 'Sources',	// TODO
-		'tags' => 'Article Tags',	// TODO
-		'text' => 'Text Search',	// TODO
-		'text_help' => 'Multiple lines are combined by a logical <i>or</i>. Also supports <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">regular expressions</a>.',	// TODO
-		'text_placeholder' => 'Keyword',	// TODO
-		'title' => 'Title',	// TODO
-		'url' => 'URL',	// TODO
-		'user_queries' => 'User Queries',	// TODO
+		'advanced_search_help' => 'این فرم به ساخت پرس‌وجوهای جستجو کمک می‌کند، اما پرس‌وجوهای دستی حتی قدرتمندتر هستند.',
+		'authors' => 'نویسندگان',
+		'categories' => 'دسته‌ها',
+		'content' => 'محتوا',
+		'date_from' => 'از',
+		'date_modified' => 'تاریخ ویرایش در سرور',
+		'date_past' => 'در گذشته',
+		'date_published' => 'تاریخ انتشار',
+		'date_range' => 'بازه تاریخ',
+		'date_received' => 'تاریخ دریافت',
+		'date_to' => 'تا',
+		'date_user' => 'تاریخ ویرایش کاربر',
+		'feeds' => 'فیدها',
+		'free_text' => 'متن آزاد',
+		'free_text_help' => 'جستجو در عنوان و محتوا',
+		'full_documentation' => '<a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">مستندات کامل جستجو</a> را ببینید',
+		'labels' => 'برچسب‌های من',
+		'multiple_help' => 'یک یا چند مورد را انتخاب کنید (<kbd>Ctrl</kbd> یا <kbd>Cmd</kbd> را نگه دارید)',
+		'sources' => 'منابع',
+		'tags' => 'برچسب‌های مقاله',
+		'text' => 'جستجوی متن',
+		'text_help' => 'چند خط با <i>یا</i> منطقی ترکیب می‌شوند. همچنین از <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#regex" target="_blank">عبارت‌های منظم</a> پشتیبانی می‌کند.',
+		'text_placeholder' => 'کلیدواژه',
+		'title' => 'عنوان',
+		'url' => 'نشانی وب',
+		'user_queries' => 'پرس‌وجوهای کاربر',
 	),
 	'share' => array(
 		'Known' => ' سایت های مبتنی بر شناخته شده',
@@ -316,9 +316,9 @@ return array(
 		'blank_to_disable' => ' برای غیرفعال کردن',
 		'by_author' => ' توسط:',
 		'by_default' => ' به طور پیش فرض',
-		'damn' => ' انفجار!',
-		'default_category' => ' دسته بندی نشده',
-		'no' => ' شماره',
+		'damn' => 'خطا!',
+		'default_category' => 'دسته‌بندی‌نشده',
+		'no' => 'خیر',
 		'not_applicable' => ' در دسترس نیست',
 		'ok' => ' باشه!',
 		'or' => ' یا',

+ 31 - 31
app/i18n/fa/index.php

@@ -21,29 +21,29 @@ return array(
 				'database' => 'پایگاه داده',
 				'server_software' => 'نرم‌افزار سرور',
 				'version_curl' => 'نسخه cURL',
-				'version_frss' => 'سخه FreshRSS',
+				'version_frss' => 'نسخه FreshRSS',
 				'version_php' => 'نسخه PHP',
 			),
 		),
 		'bugs_reports' => ' گزارش اشکال',
 		'documentation' => ' اسناد و مدارک',
-		'freshrss_description' => ' FreshRSS یک جمع کننده و خواننده RSS خود میزبان است. این به شما امکان می دهد بدون نیاز به مرور از یک وب سایت به وب سایت دیگر',
+		'freshrss_description' => 'FreshRSS یک گردآورنده و خواننده RSS خودمیزبان است. با آن می‌توانید بدون رفتن از یک وب‌سایت به وب‌سایت دیگر، محتوای تازه را دنبال کنید.',
 		'github' => ' <a href="https://github.com/FreshRSS/FreshRSS/issues">در GitHub</a>',
 		'license' => ' مجوز',
-		'project_website' => ' وب سایت پروژه',
+		'project_website' => 'وب‌سایت پروژه',
 		'title' => ' در مورد',
 		'version' => ' نسخه',
 	),
 	'feed' => array(
 		'empty' => ' هیچ مقاله ای برای نمایش وجود ندارد.',
 		'published' => array(
-			'_' => 'Published',	// TODO
-			'future' => 'Published in the future',	// TODO
-			'today' => 'Published today',	// TODO
-			'yesterday' => 'Published yesterday',	// TODO
+			'_' => 'منتشر شده',
+			'future' => 'منتشر شده در آینده',
+			'today' => 'امروز منتشر شده',
+			'yesterday' => 'دیروز منتشر شده',
 		),
 		'received' => array(
-			'_' => 'Received',	// TODO
+			'_' => 'دریافت شده',
 			'today' => 'امروز دریافت شد',
 			'yesterday' => 'دیروز دریافت شد',
 		),
@@ -52,21 +52,21 @@ return array(
 		'title_fav' => ' موارد دلخواه',
 		'title_global' => ' نمای جهانی',
 		'userModified' => array(
-			'_' => 'Modified by user',	// TODO
-			'today' => 'Modified by user today',	// TODO
-			'yesterday' => 'Modified by user yesterday',	// TODO
+			'_' => 'ویرایش شده توسط کاربر',
+			'today' => 'امروز توسط کاربر ویرایش شده',
+			'yesterday' => 'دیروز توسط کاربر ویرایش شده',
 		),
 	),
 	'log' => array(
-		'_' => ' سیاهههای مربوط',
-		'clear' => ' سیاهههای مربوط را پاک کنید',
+		'_' => 'گزارش‌ها',
+		'clear' => 'گزارش‌ها را پاک کنید',
 		'empty' => ' فایل لاگ خالی است',
-		'title' => ' سیاهههای مربوط',
+		'title' => 'گزارش‌ها',
 	),
 	'menu' => array(
 		'about' => ' درباره FreshRSS',
-		'before_one_day' => ' بزرگتر از یک روز',
-		'before_one_week' => ' بزرگتر از یک هفته',
+		'before_one_day' => 'قدیمی‌تر از یک روز',
+		'before_one_week' => 'قدیمی‌تر از یک هفته',
 		'bookmark_query' => ' درخواست فعلی را نشانک‌گذاری کنید',
 		'favorites' => ' موارد دلخواه (%s)',
 		'global_view' => ' نمای جهانی',
@@ -85,37 +85,37 @@ return array(
 		'rss_view' => ' خوراک RSS',
 		'search_short' => ' جستجو',
 		'sort' => array(
-			'asc' => 'Ascending',	// TODO
+			'asc' => 'صعودی',
 			'c' => array(
-				'name_asc' => 'دسته بندی، عناوین فید A→Z',
-				'name_desc' => 'دسته بندی، عناوین فید Z→A',
+				'name_asc' => 'دسته‌بندی، عنوان‌های فید A→Z',
+				'name_desc' => 'دسته‌بندی، عنوان‌های فید Z→A',
 			),
 			'date_asc' => 'تاریخ انتشار ۱→۹',
 			'date_desc' => 'تاریخ انتشار ۹→۱',
-			'desc' => 'Descending',	// TODO
+			'desc' => 'نزولی',
 			'f' => array(
 				'name_asc' => 'عنوان فید A→Z',
 				'name_desc' => 'عنوان فید Z→A',
 			),
-			'id_asc' => 'آخرین مورد، به تازه گی دریافت شد',
-			'id_desc' => 'نخستین مورد دریافت‌شده به تازگی',
-			'length_asc' => 'Content length 1→9',	// TODO
-			'length_desc' => 'Content length 9→1',	// TODO
+			'id_asc' => 'قدیمی‌ترین دریافت‌شده',
+			'id_desc' => 'تازه‌ترین دریافت‌شده',
+			'length_asc' => 'طول محتوا ۱→۹',
+			'length_desc' => 'طول محتوا ۹→۱',
 			'link_asc' => 'لینک A→Z',
 			'link_desc' => 'لینک Z→A',
 			'primary' => array(
-				'_' => 'Sorting criterion',	// TODO
-				'help' => 'Sorting by <em>received</em> date is recommended in most cases, for consistency and performance',	// TODO
+				'_' => 'معیار مرتب‌سازی',
+				'help' => 'در بیشتر موارد، مرتب‌سازی بر اساس تاریخ <em>دریافت</em> برای سازگاری و کارایی بهتر پیشنهاد می‌شود',
 			),
 			'rand' => 'ترتیب تصادفی',
 			'secondary' => array(
-				'_' => 'Secondary sorting criterion',	// TODO
-				'help' => 'Only relevant when the primary sorting criterion is categories or feeds titles',	// TODO
+				'_' => 'معیار مرتب‌سازی دوم',
+				'help' => 'فقط زمانی کاربرد دارد که معیار اصلی مرتب‌سازی، عنوان دسته‌ها یا فیدها باشد',
 			),
-			'title_asc' => 'عنوانA→Z',
+			'title_asc' => 'عنوان A→Z',
 			'title_desc' => 'عنوان Z→A',
-			'user_modified_asc' => 'User modified 1→9',	// TODO
-			'user_modified_desc' => 'User modified 9→1',	// TODO
+			'user_modified_asc' => 'ویرایش کاربر ۱→۹',
+			'user_modified_desc' => 'ویرایش کاربر ۹→۱',
 		),
 		'starred' => ' نمایش موارد دلخواه',
 		'stats' => ' آمار',

+ 19 - 19
app/i18n/fa/install.php

@@ -22,7 +22,7 @@ return array(
 		'_' => 'پایگاه داده',
 		'conf' => array(
 			'_' => 'پیکربندی پایگاه داده',
-			'ko' => 'یکربندی پایگاه داده خود را تأیید کنید.',
+			'ko' => 'پیکربندی پایگاه داده خود را بررسی کنید.',
 			'ok' => 'تنظیمات پایگاه داده ذخیره شد.',
 		),
 		'host' => 'هاست',
@@ -33,9 +33,9 @@ return array(
 	),
 	'check' => array(
 		'_' => 'بررسی‌ها',
-		'already_installed' => 'ما تشخیص دادم FreshRSS قبلا نصب شده',
+		'already_installed' => 'تشخیص دادیم که FreshRSS قبلاً نصب شده است.',
 		'cache' => array(
-			'nok' => 'بررسی مجوزها در <em>%1$s</em> دایرکتوری برای <em>%2$s</em> کاربر.سرور وب نیاز به دسترسی نوشتن دارد',
+			'nok' => 'مجوزهای دایرکتوری <em>%1$s</em> را برای کاربر <em>%2$s</em> بررسی کنید. سرور وب به دسترسی نوشتن نیاز دارد.',
 			'ok' => 'مجوزهای موجود در فهرست حافظه پنهان خوب است.',
 		),
 		'ctype' => array(
@@ -43,7 +43,7 @@ return array(
 			'ok' => 'شما کتابخانه مورد نیاز برای بررسی نوع کاراکتر (ctype) را دارید.',
 		),
 		'curl' => array(
-			'nok' => 'کتابخانه cURL (بسته php-curl)را نمی‌تواند پیدا کند.',
+			'nok' => 'کتابخانه cURL (بسته php-curl) پیدا نشد.',
 			'ok' => 'شما کتابخانه cURL را دارید.',
 		),
 		'data' => array(
@@ -51,18 +51,18 @@ return array(
 			'ok' => 'مجوزهای مربوط به دایرکتوری داده خوب است.',
 		),
 		'database-connection' => array(
-			'nok' => 'Database connection error.',	// TODO
-			'ok' => 'Database connection is good.',	// TODO
+			'nok' => 'خطا در اتصال به پایگاه داده.',
+			'ok' => 'اتصال به پایگاه داده درست است.',
 		),
 		'database-table' => array(
-			'nok' => 'Database table "%s" is incomplete.',	// TODO
-			'ok' => 'Database table "%s" is good.',	// TODO
+			'nok' => 'جدول پایگاه داده "%s" ناقص است.',
+			'ok' => 'جدول پایگاه داده "%s" درست است.',
 		),
 		'database-tables' => array(
-			'nok' => 'Some database tables are missing.',	// TODO
-			'ok' => 'All database tables exist.',	// TODO
+			'nok' => 'برخی جدول‌های پایگاه داده وجود ندارند.',
+			'ok' => 'همه جدول‌های پایگاه داده وجود دارند.',
 		),
-		'database-title' => 'Database',	// TODO
+		'database-title' => 'پایگاه داده',
 		'dom' => array(
 			'nok' => 'کتابخانه مورد نیاز برای مرور DOM را نمی‌توان پیدا کرد.',
 			'ok' => 'شما کتابخانه مورد نیاز برای مرور DOM را دارید.',
@@ -77,8 +77,8 @@ return array(
 		),
 		'files' => ' نصب فایل',
 		'intl' => array(
-			'nok' => 'Cannot find the recommended library php-intl for internationalisation.',	// TODO
-			'ok' => 'You have the recommended library php-intl for internationalisation.',	// TODO
+			'nok' => 'کتابخانه پیشنهادی php-intl برای بین‌المللی‌سازی پیدا نشد.',
+			'ok' => 'کتابخانه پیشنهادی php-intl برای بین‌المللی‌سازی روی سیستم شما نصب است.',
 		),
 		'json' => array(
 			'nok' => 'کتابخانه پیشنهادی برای تجزیه JSON پیدا نشد.',
@@ -93,21 +93,21 @@ return array(
 			'ok' => 'شما کتابخانه مورد نیاز برای عبارات منظم (PCRE) را دارید.',
 		),
 		'pdo-mysql' => array(
-			'nok' => 'Cannot find the required PDO driver for MySQL/MariaDB.',	// TODO
+			'nok' => 'درایور PDO مورد نیاز برای MySQL/MariaDB پیدا نشد.',
 		),
 		'pdo-pgsql' => array(
-			'nok' => 'Cannot find the required PDO driver for PostgreSQL.',	// TODO
+			'nok' => 'درایور PDO مورد نیاز برای PostgreSQL پیدا نشد.',
 		),
 		'pdo-sqlite' => array(
-			'nok' => 'Cannot find the PDO driver for SQLite.',	// TODO
-			'ok' => 'You have the PDO driver for SQLite.',	// TODO
+			'nok' => 'درایور PDO برای SQLite پیدا نشد.',
+			'ok' => 'درایور PDO برای SQLite روی سیستم شما نصب است.',
 		),
 		'pdo' => array(
 			'nok' => 'نمی‌توان PDO یا یکی از درایورهای پشتیبانی‌شده (pdo_mysql، pdo_sqlite، pdo_pgsql) را پیدا کرد.',
 			'ok' => 'شما PDO و حداقل یکی از درایورهای پشتیبانی شده (pdo_mysql، pdo_sqlite، pdo_pgsql) را دارید.',
 		),
 		'php' => array(
-			'_' => ' نصب پی اچ پی',
+			'_' => 'نصب PHP',
 			'nok' => ' نسخه PHP شما %s است اما FreshRSS حداقل به نسخه %s نیاز دارد.',
 			'ok' => ' نسخه PHP شما (%s) با FreshRSS سازگار است.',
 		),
@@ -144,7 +144,7 @@ return array(
 		'max_char' => 'حداکثر ۱۶ کاراکتر الفبایی-عددی',
 	),
 	'fix_errors_before' => 'لطفا قبل از رفتن به مرحله بعدی، خطاها را برطرف کنید.',
-	'javascript_is_better' => 'FreshRSS با فعال بودن جاوا اسکریپت، کار امد تر است.',
+	'javascript_is_better' => 'FreshRSS با فعال بودن جاوااسکریپت کارآمدتر است.',
 	'js' => array(
 		'confirm_reinstall' => 'با نصب مجدد FreshRSS، تنظیمات قبلی خود را از دست خواهید داد. آیا مطمئن هستید که می‌خواهید ادامه دهید؟',
 	),

+ 35 - 35
app/i18n/fa/sub.php

@@ -16,7 +16,7 @@ return array(
 		'title' => ' API',
 	),
 	'bookmarklet' => array(
-		'documentation' => ' این دکمه را به نوار ابزار نشانک‌های خود بکشید یا روی آن راست کلیک کرده و «Bookmark This Link» را انتخاب کنید. سپس روی دکمه "اشتراک" در هر صفحه ای که می خواهید مشترک شوید کلیک کنید.',
+		'documentation' => 'این دکمه را به نوار ابزار نشانک‌های خود بکشید یا روی آن راست‌کلیک کنید و «نشانک‌گذاری این پیوند» را انتخاب کنید. سپس در هر صفحه‌ای که می‌خواهید مشترک آن شوید، روی دکمه «اشتراک» کلیک کنید.',
 		'label' => ' مشترک شوید',
 		'title' => ' Bookmarklet',
 	),
@@ -29,13 +29,13 @@ return array(
 			'help' => ' URL را به <a href="http://opml.org/" target="_blank">فایل OPML</a> ارائه دهید تا به صورت پویا این دسته با فیدها پر شود.',
 		),
 		'empty' => ' دسته خالی',
-		'error' => 'This dynamic OPML category has encountered a problem. Check that the OPML URL is still reachable and that the maximum number of feeds per user has not been exceeded.',	// TODO
+		'error' => 'این دسته OPML پویا با مشکل روبه‌رو شده است. بررسی کنید که URL فایل OPML هنوز در دسترس باشد و حداکثر تعداد فید برای هر کاربر رد نشده باشد.',
 		'expand' => 'دسته‌بندی را گسترش دهید',
 		'information' => ' اطلاعات',
 		'open' => 'دسته‌بندی باز',
 		'opml_url' => ' URL OPML',
 		'position' => ' موقعیت نمایش',
-		'position_help' => ' برای کنترل ترتیب مرتب سازی دسته بندی',
+		'position_help' => 'برای کنترل ترتیب مرتب‌سازی دسته‌بندی',
 		'title' => ' عنوان',
 	),
 	'feed' => array(
@@ -63,14 +63,14 @@ return array(
 		'css_cookie' => ' هنگام واکشی محتوای مقاله از کوکی ها استفاده کنید',
 		'css_cookie_help' => ' مثال: <kbd>foo=bar; gdpr_consent=true; cookie=value</kbd>',
 		'css_help' => ' فیدهای RSS کوتاه شده را بازیابی می کند (احتیاط',
-		'css_path' => ' انتخاب کننده CSS مقاله در وب سایت اصلی',
+		'css_path' => 'انتخابگر CSS مقاله در وب‌سایت اصلی',
 		'css_path_filter' => array(
 			'_' => ' انتخابگر CSS از عناصر برای حذف',
 			'help' => ' یک انتخابگر CSS ممکن است لیستی باشد مانند: <kbd>.footer',
 		),
 		'description' => ' توضیحات',
 		'empty' => ' این فید خالی است. لطفاً بررسی کنید که هنوز نگهداری می شود.',
-		'error' => ' این فید با مشکل مواجه شده است. لطفاً بررسی کنید که همیشه در دسترس است و سپس آن را به روز کنید.',	// DIRTY
+		'error' => 'این فید با مشکل روبه‌رو شده است. بررسی کنید که هنوز در دسترس باشد و سپس آن را به‌روزرسانی کنید.',
 		'export-as-opml' => array(
 			'download' => 'دانلود',
 			'help' => 'فایل XML (زیرمجموعه داده‌ها. <a href="https://freshrss.github.io/FreshRSS/en/developers/OPML.html" target="_blank">مستندات را ببینید</a>)',
@@ -81,13 +81,13 @@ return array(
 		'filteractions' => array(
 			'_' => ' اعمال فیلتر',
 			'help' => ' در هر خط یک فیلتر جستجو بنویسید. اپراتورها <a href="https://freshrss.github.io/FreshRSS/en/users/10_filter.html#with-the-search-field" target="_blank">مستندات را ببینید</a>.',
-			'view_filter' => 'Preview filters on existing articles (new window)',	// TODO
+			'view_filter' => 'پیش‌نمایش فیلترها روی مقاله‌های موجود (پنجره جدید)',
 		),
 		'http_headers' => 'HTTP سربرگ‌ها',
 		'http_headers_help' => 'سر برگ ها با یک خط جدید از هم جدا می‌شوند و نام و مقدار سربرگ ها با یک دونقطه از هم جدا می‌شوند (مثلاً: <kbd><code>پذیرش: application/atom+xml<br />مجوز: Bearer some-token</code></kbd>).',
 		'icon' => 'آیکون',
 		'information' => ' اطلاعات',
-		'keep_adding_feed' => 'Then add more feeds',	// TODO
+		'keep_adding_feed' => 'سپس فیدهای بیشتری اضافه کنید',
 		'keep_min' => ' حداقل تعداد مقالات برای نگهداری',
 		'kind' => array(
 			'_' => ' نوع منبع خوراک',
@@ -104,7 +104,7 @@ return array(
 					'_' => ' عنوان خوراک',
 					'help' => ' مثال: <code>//title</code> یا یک رشته ثابت: <code>"فید سفارشی من"</code>',
 				),
-				'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> یک زبان جستجوی استاندارد برای پیشرفته است کاربران',
+				'help' => '<dfn><a href="https://www.w3.org/TR/xpath-10/" target="_blank">XPath 1.0</a></dfn> یک زبان جستجوی استاندارد برای کاربران پیشرفته است',
 				'item' => array(
 					'_' => ' یافتن اخبار <strong>اقلام</strong><br /><small>(مهمترین)</small>',
 					'help' => ' مثال: <code>//div[@class="news-item"]</code>',
@@ -124,7 +124,7 @@ return array(
 				),
 				'item_timeFormat' => array(
 					'_' => ' فرمت تاریخ/زمان سفارشی',
-					'help' => ' اختیاری. قالبی که توسط <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> پشتیبانی می‌شود',	// DIRTY
+					'help' => 'اختیاری. قالبی که توسط <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> پشتیبانی می‌شود، مانند <code>d-m-Y H:i:s</code>',
 				),
 				'item_timestamp' => array(
 					'_' => ' تاریخ مورد',
@@ -132,7 +132,7 @@ return array(
 				),
 				'item_title' => array(
 					'_' => ' عنوان مورد',
-					'help' => ' به طور خاص از <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">محور XPath</a> <code>descendant::</code استفاده کنید > مانند <code>descendant::h2</code>',
+					'help' => 'به طور مشخص از <a href="https://developer.mozilla.org/docs/Web/XPath/Axes" target="_blank">محور XPath</a> <code>descendant::</code> استفاده کنید؛ مانند <code>descendant::h2</code>',
 				),
 				'item_uid' => array(
 					'_' => ' شناسه منحصر به فرد مورد',
@@ -159,7 +159,7 @@ return array(
 				'item_author' => 'نویسنده ',
 				'item_categories' => 'برچسب‌های آیتم',
 				'item_content' => array(
-					'_' => 'محتوای در مورد',
+					'_' => 'محتوای آیتم',
 					'help' => 'کلیدی که محتوا در آن یافت می‌شود، مثلاً <code>content</code>',
 				),
 				'item_thumbnail' => array(
@@ -171,11 +171,11 @@ return array(
 					'help' => 'اختیاری. فرمتی که توسط <a href="https://php.net/datetime.createfromformat" target="_blank"><code>DateTime::createFromFormat()</code></a> پشتیبانی می‌شود، مانند <code>d-m-Y H:i:s</code>',
 				),
 				'item_timestamp' => array(
-					'_' => 'تاریخ کالا',
+					'_' => 'تاریخ آیتم',
 					'help' => 'نتیجه توسط <a href="https://php.net/strtotime" target="_blank"><code>strtotime()</code></a> تجزیه و تحلیل خواهد شد.',
 				),
 				'item_title' => 'عنوان مورد',
-				'item_uid' => 'شناسه منحصر به فرد کالا',
+				'item_uid' => 'شناسه یکتای آیتم',
 				'item_uri' => array(
 					'_' => 'لینک مورد (URL)',
 					'help' => 'مثال: <code>پیوند یکتا</code>',
@@ -187,10 +187,10 @@ return array(
 			'rss' => ' RSS / Atom (پیش‌فرض)',
 			'xml_xpath' => ' XML + XPath',
 		),
-		'last-entry-publication-date' => 'Last article published <time datetime="%1$s" title="%1$s">%2$s</time>.',	// TODO
-		'last-entry-received-date' => 'Last article received <time datetime="%1$s" title="%1$s">%2$s</time>.',	// TODO
-		'last-error-date' => 'Last erroneous update <time datetime="%1$s" title="%1$s">%2$s</time>.',	// TODO
-		'last-update' => 'Last successful update <time datetime="%1$s" title="%1$s">%2$s</time>.',	// TODO
+		'last-entry-publication-date' => 'آخرین مقاله در <time datetime="%1$s" title="%1$s">%2$s</time> منتشر شده است.',
+		'last-entry-received-date' => 'آخرین مقاله در <time datetime="%1$s" title="%1$s">%2$s</time> دریافت شده است.',
+		'last-error-date' => 'آخرین به‌روزرسانی ناموفق در <time datetime="%1$s" title="%1$s">%2$s</time> بوده است.',
+		'last-update' => 'آخرین به‌روزرسانی موفق در <time datetime="%1$s" title="%1$s">%2$s</time> بوده است.',
 		'maintenance' => array(
 			'clear_cache' => ' کش را پاک کنید',
 			'clear_cache_help' => ' کش این فید را پاک کنید.',
@@ -204,8 +204,8 @@ return array(
 			'_' => 'روش HTTP',
 		),
 		'method_help' => 'بار داده‌ی POST به طور خودکار از <code>application/x-www-form-urlencoded</code> و <code>application/json</code> پشتیبانی می‌کند.',
-		'method_postparams' => 'بار مفید برای پست',
-		'moved_category_deleted' => ' هنگامی که یک دسته را حذف می کنید',
+		'method_postparams' => 'بدنه درخواست POST',
+		'moved_category_deleted' => 'هنگام حذف دسته «%s»',
 		'mute' => array(
 			'_' => ' بی صدا',
 			'state_is_muted' => 'این فید بی‌صدا است',
@@ -216,8 +216,8 @@ return array(
 		'path_entries_conditions' => 'شرایط بازیابی محتوا',
 		'priority' => array(
 			'_' => ' دید',
-			'category' => ' نمایش در دسته بندی خود',
-			'feed' => 'Show in its feed',	// TODO
+			'category' => 'نمایش در دسته‌بندی خودش',
+			'feed' => 'در فید خودش نشان داده شود',
 			'hidden' => 'نشان ندهید.',
 			'important' => 'نمایش در فیدهای مهم',
 			'main_stream' => ' نمایش در جریان اصلی',
@@ -244,26 +244,26 @@ return array(
 		'title_add' => ' یک فید RSS اضافه کنید',
 		'ttl' => ' به‌طور خودکار بیشتر از آن رفرش نکنید',
 		'unicityCriteria' => array(
-			'_' => 'معیارهای وحدت مقاله',
-			'forced' => '<span title="مسدود کردن معیارهای تک‌شاخگی، حتی زمانی که فید دارای مقالات تکراری است">اجباری</span>',
-			'help' => 'مربوط به فیدهای نامعتبر.<br />⚠️ تغییر سیاست باعث ایجاد موارد تکراری می‌شود..',
+			'_' => 'معیارهای یکتایی مقاله',
+			'forced' => '<span title="تحمیل معیارهای یکتایی، حتی وقتی فید مقاله‌های تکراری دارد">اجباری</span>',
+			'help' => 'مربوط به فیدهای نامعتبر.<br />⚠️ تغییر این سیاست باعث ایجاد موارد تکراری می‌شود.',
 			'id' => 'شناسه استاندارد (پیش‌ فرض)',
 			'link' => 'لینک',
-			'sha1:content' => 'Content',	// TODO
-			'sha1:content_published' => 'Content + Date',	// TODO
+			'sha1:content' => 'محتوا',
+			'sha1:content_published' => 'محتوا + تاریخ',
 			'sha1:link_published' => 'لینک + تاریخ',
 			'sha1:link_published_title' => 'لینک + تاریخ + عنوان',
 			'sha1:link_published_title_content' => 'لینک + تاریخ + عنوان + محتوا',
-			'sha1:published' => 'Date',	// TODO
-			'sha1:title' => 'Title',	// TODO
-			'sha1:title_published' => 'Title + Date',	// TODO
-			'sha1:title_published_content' => 'Title + Date + Content',	// TODO
+			'sha1:published' => 'تاریخ',
+			'sha1:title' => 'عنوان',
+			'sha1:title_published' => 'عنوان + تاریخ',
+			'sha1:title_published_content' => 'عنوان + تاریخ + محتوا',
 		),
 		'url' => ' URL فید',
 		'useragent' => ' عامل کاربر را برای واکشی این فید تنظیم کنید',
 		'useragent_help' => ' مثال: <kbd>Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:86.0)</kbd>',
 		'validator' => ' اعتبار خوراک را بررسی کنید',
-		'website' => ' آدرس وب سایت',
+		'website' => 'نشانی وب‌سایت',
 		'websub' => ' اطلاع رسانی فوری با WebSub',
 	),
 	'import_export' => array(
@@ -286,10 +286,10 @@ return array(
 		'import_export' => ' واردات / صادرات',
 		'label_management' => ' مدیریت برچسب',
 		'stats' => array(
-			'idle' => ' تغذیه بیکار',
+			'idle' => 'فیدهای غیرفعال',
 			'main' => ' آمار اصلی',
-			'repartition' => ' تقسیم مجدد مقالات',
-			'unread_dates' => 'Unread dates',	// TODO
+			'repartition' => 'توزیع مقاله‌ها',
+			'unread_dates' => 'تاریخ‌های خوانده‌نشده',
 		),
 		'subscription_management' => ' مدیریت اشتراک',
 		'subscription_tools' => 'ابزارهای اشتراک',
@@ -309,7 +309,7 @@ return array(
 		'add_label' => ' یک برچسب اضافه کنید',
 		'add_opml_category' => 'نام دسته OPML',
 		'delete_label' => ' یک برچسب را حذف کنید',
-		'feed_management' => ' فیدهای RSS را مدیریت می کندment',
+		'feed_management' => 'مدیریت فیدهای RSS',
 		'subscription_tools' => 'ابزارهای اشتراک',
 	),
 );

+ 4 - 4
app/i18n/fa/user.php

@@ -27,16 +27,16 @@ return array(
 				'unnecessary' => ' این آدرس ایمیل قبلاً تأیید شده است.',
 				'wrong_token' => ' این آدرس ایمیل به دلیل یک توکن اشتباه تأیید نشد.',
 			),
-			'need_to' => ' قبل از اینکه بتوانید از %s استفاده کنید',
+			'need_to' => 'پیش از اینکه بتوانید از %s استفاده کنید، باید آدرس ایمیل خود را تأیید کنید.',
 			'resend_email' => ' ایمیل را دوباره ارسال کنید',
 			'title' => ' اعتبار سنجی آدرس ایمیل',
 		),
 	),
 	'mailer' => array(
 		'email_need_validation' => array(
-			'body' => ' شما به تازگی در %s ثبت نام کرده اید',
+			'body' => 'شما به‌تازگی در %s ثبت‌نام کرده‌اید، اما هنوز باید آدرس ایمیل خود را تأیید کنید. برای این کار، کافی است این پیوند را دنبال کنید:',
 			'title' => ' باید حساب خود را تأیید کنید',
-			'welcome' => ' خوش آمدید %s',
+			'welcome' => 'خوش آمدید %s،',
 		),
 	),
 	'password' => array(
@@ -49,6 +49,6 @@ return array(
 	),
 	'username' => array(
 		'invalid' => ' این نام کاربری نامعتبر است.',
-		'taken' => ' این نام کاربری',
+		'taken' => 'این نام کاربری، %s، قبلاً گرفته شده است.',
 	),
 );