diff --git a/src/scripts/i18n/README.md b/src/scripts/i18n/README.md index 97813add..57ff677c 100644 --- a/src/scripts/i18n/README.md +++ b/src/scripts/i18n/README.md @@ -6,6 +6,7 @@ Currently, Fluent Reader supports the following languages. | --- | --- | --- | | en-US | English | [@yang991178](https://github.com/yang991178) | | es | Español | [@kant](https://github.com/kant) | +| fa | فارسی | [@jmilo97](https://github.com/jmilo97) | | fr-FR | Français | [@Toinane](https://github.com/Toinane) | | fi-FI | Suomi | [@SUPERHAMSTERI](https://github.com/SUPERHAMSTERI) | | zh-CN | 中文(简体) | [@yang991178](https://github.com/yang991178) | diff --git a/src/scripts/i18n/_locales.ts b/src/scripts/i18n/_locales.ts index 9aa9de00..b2131140 100644 --- a/src/scripts/i18n/_locales.ts +++ b/src/scripts/i18n/_locales.ts @@ -12,6 +12,7 @@ import it from "./it.json" import uk from "./uk.json" import pt_BR from "./pt-BR.json" import fi_FI from "./fi-FI.json" +import fa from "./fa.json" const locales = { "en-US": en_US, @@ -28,6 +29,7 @@ const locales = { "uk": uk, "pt-BR": pt_BR, "fi-FI": fi_FI, + "fa": fa } export default locales diff --git a/src/scripts/i18n/fa.jason b/src/scripts/i18n/fa.jason new file mode 100644 index 00000000..7a09ecb5 --- /dev/null +++ b/src/scripts/i18n/fa.jason @@ -0,0 +1,235 @@ +{ + "allArticles": "همهٔ نوشته‌ها", + "add": "افزودن", + "create": "ساختن", + "icon": "نماد", + "name": "نام", + "openExternal": "باز کردن خارجی", + "emptyName": "این فیلد نباید خالی باشد.", + "emptyField": "این فیلد نباید خالی باشد.", + "edit": "ویرایش", + "delete": "پاک کردن", + "followSystem": "طبق سیستم", + "more": "بیشتر", + "close": "بستن", + "search": "جستوجو", + "loadMore": "بارگذاری بقیه", + "dangerButton": "آیا {action} را تأیید می‌کنید؟", + "confirmMarkAll": "آیا واقعاً می‌خواهید تمام نوشته‌های انتخاب شده را به عنوان خوانده شده علامتگذاری کنید؟", + "confirm": "تأیید", + "cancel": "انصراف", + "time": { + "now": "اکنون", + "m": "دقیقه", + "h": "ساعت", + "d": "روز", + "minute": "{m, plural, =1 {# دقیقه} other {# دقیقه}}", + "hour": "{h, plural, =1 {# ساعت} other {# ساعت}}", + "day": "{d, plural, =1 {# روز} other {# روز}}" + }, + "log": { + "empty": "بدون اعلان", + "fetchFailure": "بارگیری \"{name}\" ناموفق بود.", + "fetchSuccess": "بارگیری {count, plural, =1 {# نوشته} other {# نوشته‌ها}} موفق بود.", + "networkError": "خطایی در اتصال رخ داد.", + "parseError": "خطایی در هنگام تجزیهٔ فید XML رخ داد.", + "syncFailure": "همگام‌سازی با سرویس ناموفق بود." + }, + "nav": { + "menu": "فهرست", + "refresh": "تازه‌سازی", + "markAllRead": "علامتگذاری همه به غنوان خوانده شده", + "notifications": "اعلان‌ها", + "view": "مشاهده", + "settings": "تنظیمات", + "minimize": "کوچک کردن", + "maximize": "بزرگ کردن" + }, + "menu": { + "close": "بستن منو", + "subscriptions": "اشتراک‌ها" + }, + "article": { + "error": "بارگیری نوشته ناموفق بود.", + "reload": "دوباره بارگیری شود؟", + "empty": "هیچ نوشته‌ای نیست.", + "untitled": "(بدون عنوان)", + "hide": "پنهان کردن نوشته", + "unhide": "نشان دادن نوشته", + "markRead": "علامت‌گذاری به‌عنوان خوانده شده", + "markUnread": "علامت‌گذاری به‌عنوان خوانده نشده", + "markAbove": "علامت‌گذاری بالایی‌ها به عنوان خوانده شده", + "markBelow": "علامت‌گذاری پایینی‌ها به عنوان خوانده شده", + "star": "ستاره", + "unstar": "حذف ستاره", + "fontSize": "اندازهٔ متن", + "loadWebpage": "بارگیری صفحهٔ وب", + "loadFull": "بارگیری تمام محتوا", + "notify": "اگر در پس‌زمینه بارگیری شد اطلاع بده", + "dontNotify": "اعلان نده" + }, + "context": { + "share": "هم‌رسانی", + "read": "خواندن", + "copyTitle": "رونویسی عنوان", + "copyURL": "رونویسی پیوند", + "copy": "رونویسی", + "search": "جستوجوی \"{text}\" در {engine}", + "view": "مشاهده", + "cardView": "نمای کارت", + "listView": "نمای لیست", + "magazineView": "نمای مجله", + "compactView": "نمای جمع و جور", + "filter": "فیلتر کردن", + "unreadOnly": "تنها خوانده نشده‌ها", + "starredOnly": "تنها ستاره‌دارها", + "fullSearch": "جستوجو در تمام متن", + "showHidden": "نشان دادن نوشته‌های مخفی", + "manageSources": "مدیریت منابع", + "saveImageAs": "ذخیرهٔ تصویر به عنوان ...", + "copyImage": "رونویسی تصویر", + "copyImageURL": "رونویسی پیوند تصویر", + "caseSensitive": "Case sensitive", + "showCover": "نشان دادن جلد", + "showSnippet": "نشان دادن اسنیپت", + "fadeRead": "محو نوشته‌های خوانده شده" + }, + "searchEngine": { + "name": "موتور جستوجو", + "google": "گوگل", + "bing": "بینگ", + "baidu": "بایدو", + "duckduckgo": "داک‌داک‌گو" + }, + "settings": { + "writeError": "خطایی در هنگام نوشتن فایل رخ داد.", + "name": "تنظیمات", + "fetching": "بروزرسانی منابع، لطفاً شکیبا باشید...", + "exit": "خروج از تنظیمات", + "sources": "منابع", + "grouping": "گروه‌ها", + "rules": "قوانین", + "service": "خدمات", + "app": "اولویت‌ها", + "about": "درباره", + "version": "نسخه", + "shortcuts": "میانبرها", + "openSource": "متن‌باز", + "feedback": "بازخورد" + }, + "sources": { + "serviceWarning": "منابعی که این‌جا افزوده می‌شود، با سرویس شما همگام‌سازی نمی‌شود.", + "serviceManaged": "این منبع با سرویس شما مدیریت می‌شود.", + "untitled": "منبع", + "errorAdd": "خطایی هنگام اضافه کردن منبع رخ داد.", + "errorParse": "خطایی هنگام تفسیر فایل OPML رخ داد.", + "errorParseHint": "لطفاً مطمئن شوید که خطایی در فایل نیست و یا فرمت متن فایل UTF-8 است.", + "errorImport": "خطا در وارد کردن {count, plural, =1 {# منبع} other {# منبع}}.", + "exist": "این منبع از قبل موجود بود.", + "opmlFile": "پروندهٔ OPML", + "name": "نام منبع", + "editName": "ویرایش نام", + "fetchFrequency": "واکشی حد فرکانس", + "unlimited": "نامحدود", + "openTarget": "Default open target for articles", + "delete": "حدف منبع", + "add": "افزودن منبع", + "import": "وارد کردن", + "export": "خروجی گرفتن", + "rssText": "متن کامل RSS", + "loadWebpage": "بارگیری صفحهٔ وب", + "inputUrl": "URL را وارد کنید", + "badIcon": "نماد دنامعتبر", + "badUrl": "URL نامعتبر", + "deleteWarning": "این منبع و تمام نوشته‌هایش پاک خواهد شد!", + "selected": "منابع انتخاب شده", + "selectedMulti": "انتخاب چند منبع" + }, + "groups": { + "exist": "این گروه از پیش موجود است", + "type": "گونه", + "group": "گروه", + "source": "منبع", + "capacity": "ظرفیت", + "exitGroup": "بازگشت به گروه‌ها", + "deleteSource": "حذف از گروه", + "sourceHint": "برای مرتب کردن مجدد، منابع را بکشید و رها کنید.", + "create": "ایجاد گروه", + "selectedGroup": "گروه‌های انتخاب شده", + "selectedSource": "منابع انتخاب شده", + "enterName": "نام را وارد کنید", + "editName": "ویرایش نام", + "deleteGroup": "پاکسازی گروه", + "chooseGroup": "گزینش گروه", + "addToGroup": "افزودن به ...", + "groupHint": "دوبار کلیک بر روی منابع برای ویرایش و کشیدن و رها کردن برای مرتب‌سازی" + }, + "rules": { + "intro": "Automatically mark articles or send notifications with regular expressions.", + "help": "بیشتر بدانید", + "source": "منبع", + "selectSource": "یک منبع را بگزینید", + "new": "قاعدهٔ جدید", + "if": "اگر", + "then": "آنگاه", + "title": "عنوان", + "content": "محتوا", + "fullSearch": "عنوان یا محتوا", + "creator": "نگارنده", + "match": "تطابق", + "notMatch": "مطابقت ندارد", + "regex": "عبارت ریجکس", + "badRegex": "زیجکس نادرست", + "action": "فعالیت‌ها", + "selectAction": "گزینش فعالیت‌ها", + "hint": "Rules will be applied in order. Drag and drop to reorder.", + "test": "آزمایش قواعد" + }, + "service": { + "intro": "همگام‌سازی وسایل با RSS", + "select": "سریسی گزینش کنید.", + "suggest": "سرویسی پیشنهاد کنید", + "overwriteWarning": "Local sources will be deleted if they exist in the service.", + "groupsWarning": "Groups aren't automatically synced with the service.", + "rateLimitWarning": "To avoid rate limiting, you need to create your own API Key.", + "removeAd": "حذف تبلیغات", + "endpoint": "Endpoint", + "username": "نام کاربری", + "password": "رمز", + "unchanged": "تغییر نیافته", + "fetchLimit": "حد همگام‌سازی", + "fetchLimitNum": "{count} نوشتهٔ جدید", + "importGroups": "وارد کردن گروه‌ها", + "failure": "Cannot connect to service", + "failureHint": "Please check the service configuration or network status.", + "fetchUnlimited": "Unlimited (not recommended)", + "exportToLite": "Export to Fluent Reader Lite" + }, + "app": { + "cleanup": "پاک کردن", + "cache": "پاک کردن کش", + "cacheSize": "{size} داده کش شد.", + "deleteChoices": "پاک کردن نوشته‌ها از ... روز پیش", + "confirmDelete": "پاکسازی", + "daysAgo": "{days, plural, =1 {# روز} other {# روز}} پیش", + "deleteAll": "پاکسازی همهٔ نوشته‌ها", + "calculatingSize": "محاسبهٔ اندازه...", + "itemSize": "حدود {size} از حافظه توسط نوشته‌ها پر شده است.", + "confirmImport": "Do you really want to import data from the backup file? All current data will be wiped.", + "data": "Application Data", + "backup": "پشتیبان‌گیری", + "restore": "بازگردانی", + "frData": "داده‌های فلوئنت ریدر", + "language": "نمایش زبان‌ها", + "theme": "پوسته", + "lightTheme": "روشن", + "darkTheme": "تاریک", + "enableProxy": "فعالسازی پروکسی", + "badUrl": "URL نامعتبر", + "pac": "آدرس PAC", + "setPac": "تنظیم PAC", + "pacHint": "For Socks proxies, it is recommended for PAC to return \"SOCKS5\" for proxy-side DNS. Turning off proxy requires restart.", + "fetchInterval": "Automatic fetch interval", + "never": "Never" + } +}