From bb04a9be52e005fb8bbeef22e5b8d30f0d202903 Mon Sep 17 00:00:00 2001 From: Masoud Abkenar <ampbox@gmail.com> Date: Mon, 24 Apr 2017 22:39:15 +0200 Subject: [PATCH] Persian translation (#2405) * Persian translation * adding :fa to make the site use the rtl stylesheet based on [this comment](https://github.com/tootsuite/mastodon/pull/2405#issuecomment-296721105) * fix missing quotes * add 'fa' locale --- .../javascripts/components/locales/fa.jsx | 146 ++++++++ .../javascripts/components/locales/index.jsx | 2 + app/helpers/application_helper.rb | 2 +- app/helpers/settings_helper.rb | 1 + config/application.rb | 1 + config/locales/devise.fa.yml | 61 ++++ config/locales/doorkeeper.fa.yml | 113 ++++++ config/locales/fa.yml | 324 ++++++++++++++++++ config/locales/simple_form.fa.yml | 51 +++ 9 files changed, 700 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/components/locales/fa.jsx create mode 100644 config/locales/devise.fa.yml create mode 100644 config/locales/doorkeeper.fa.yml create mode 100644 config/locales/fa.yml create mode 100644 config/locales/simple_form.fa.yml diff --git a/app/assets/javascripts/components/locales/fa.jsx b/app/assets/javascripts/components/locales/fa.jsx new file mode 100644 index 000000000..ed46a890b --- /dev/null +++ b/app/assets/javascripts/components/locales/fa.jsx @@ -0,0 +1,146 @@ +/** + * Note for Contributors: + * This file (en.jsx) serve as a template for other languages. + * To make other contributors' life easier, please REMEMBER: + * 1. to add your new string here; and + * 2. to remove old strings that are no longer needed; and + * 3. to sort the strings by the key. + * 4. To rename the `en` const name and export default name to match your locale. + * Thanks! + */ +const fa = { + "account.block": "@{name} را مسدود Ú©Ù†", + "account.disclaimer": "این کاربر عضو سرور Ù…ØªÙØ§ÙˆØªÛŒ است. شاید عدد واقعی بیشتر از این باشد.", + "account.edit_profile": "ویرایش نمایه", + "account.follow": "Ù¾ÛŒ بگیرید", + "account.followers": "پیگیران", + "account.follows_you": "پیگیر شماست", + "account.follows": "Ù¾ÛŒ می‌گیرد", + "account.mention": "نام‌بردن از @{name}", + "account.mute": "بی‌صدا کردن @{name}", + "account.posts": "نوشته‌ها", + "account.report": "گزارش @{name}", + "account.requested": "در انتظار پذیرش", + "account.unblock": "Ø±ÙØ¹ انسداد @{name}", + "account.unfollow": "پایان پیگیری", + "account.unmute": "باصدا کردن @{name}", + "boost_modal.combo": "دکمهٔ {combo} را بزنید تا دیگر این را نبینید", + "column_back_button.label": "بازگشت", + "column.blocks": "کاربران مسدودشده", + "column.community": "نوشته‌های Ù…ØÙ„ÛŒ", + "column.favourites": "پسندیده‌ها", + "column.follow_requests": "درخواست‌های پیگیری", + "column.home": "خانه", + "column.mutes": "کاربران بی‌صداشده", + "column.notifications": "اعلان‌ها", + "column.public": "نوشته‌های همه‌جا", + "compose_form.placeholder": "تازه Ú†Ù‡ خبر؟", + "compose_form.privacy_disclaimer": "نوشتهٔ خصوصی شما به کاربران نام‌برده‌شده در {domains} ÙØ±Ø³ØªØ§Ø¯Ù‡ می‌شود. آیا به {domainsCount, plural, one {آن سرور} other {آن سرورها}} اعتماد دارید؟ تنظیمات ØØ±ÛŒÙ… خصوصی نوشته‌ها تنها در سرورهای ماستدون کار می‌کند. اگر {domains} {domainsCount, plural, one {یک سرور ماستدون نباشد} other {سرورهای ماستدون نباشند}}ØŒ اشاره‌ای به خصوصی‌بودن نوشتهٔ شما نخواهد شد Ùˆ شاید نوشتهٔ شما هم‌رسان شود یا برای کاربرانی Ú©Ù‡ نمی‌خواهید نمایش یابد.", + "compose_form.publish": "بوق", + "compose_form.sensitive": "تصاویر ØØ³Ø§Ø³ هستند", + "compose_form.spoiler_placeholder": "هشدار Ù…ØØªÙˆØ§", + "compose_form.spoiler": "نوشته را پشت هشدار پنهان کنید", + "emoji_button.label": "Ø§ÙØ²ÙˆØ¯Ù† Ø´Ú©Ù„Ú©", + "emoji_button.search": "جستجو...", + "emoji_button.people": "مردم", + "emoji_button.nature": "طبیعت", + "emoji_button.food": "غذا Ùˆ نوشیدنی", + "emoji_button.activity": "ÙØ¹Ø§Ù„یت", + "emoji_button.travel": "Ø³ÙØ± Ùˆ مکان", + "emoji_button.objects": "اشیا", + "emoji_button.symbols": "نمادها", + "emoji_button.flags": "پرچم‌ها", + "empty_column.community": "Ùهرست نوشته‌های Ù…ØÙ„ÛŒ خالی است. چیزی بنویسید تا چرخش بچرخد!", + "empty_column.hashtag": "هنوز هیچ چیزی با این هشتگ نیست.", + "empty_column.home.public_timeline": "Ùهرست نوشته‌های همه‌جا", + "empty_column.home": "شما هنوز پیگیر کسی نیستید. {public} را ببینید یا چیزی را جستجو کنید تا کاربران دیگر را ببینید.", + "empty_column.notifications": "هنوز هیچ اعلانی ندارید. به نوشته‌های دیگران واکنش نشان دهید تا Ú¯ÙØªÚ¯Ùˆ آغاز شود.", + "empty_column.public": "این‌جا هنوز چیزی نیست! خودتان چیزی بنویسید یا کاربران دیگر را Ù¾ÛŒ بگیرید تا این‌جا پر شود", + "follow_request.authorize": "اجازه دهید", + "follow_request.reject": "اجازه ندهید", + "getting_started.apps": "اپ‌های گوناگونی در دسترس‌اند", + "getting_started.heading": "آغاز کنید", + "getting_started.open_source_notice": "ماستدون یک Ù†Ø±Ù…â€ŒØ§ÙØ²Ø§Ø± آزاد است. می‌توانید در ساخت آن مشارکت کنید یا مشکلاتش را در {github} گزارش دهید. {apps}.", + "home.column_settings.advanced": "Ù¾ÛŒØ´Ø±ÙØªÙ‡", + "home.column_settings.basic": "اصلی", + "home.column_settings.filter_regex": "با عبارت‌های باقاعده Ùیلتر کنید", + "home.column_settings.show_reblogs": "نمایش بازبوق‌ها", + "home.column_settings.show_replies": "نمایش پاسخ‌ها", + "home.settings": "تنظیمات ستون", + "lightbox.close": "بستن", + "loading_indicator.label": "بارگیری...", + "media_gallery.toggle_visible": "تغییر پیدایی", + "missing_indicator.label": "پیدا نشد", + "navigation_bar.blocks": "کاربران مسدودشده", + "navigation_bar.community_timeline": "نوشته‌های Ù…ØÙ„ÛŒ", + "navigation_bar.edit_profile": "ویرایش نمایه", + "navigation_bar.favourites": "پسندیده‌ها", + "navigation_bar.follow_requests": "درخواست‌های پیگیری", + "navigation_bar.info": "اطلاعات تکمیلی", + "navigation_bar.logout": "خروج", + "navigation_bar.mutes": "کاربران بی‌صداشده", + "navigation_bar.preferences": "ØªØ±Ø¬ÛŒØØ§Øª", + "navigation_bar.public_timeline": "نوشته‌های همه‌جا", + "notification.favourite": "{name} نوشتهٔ شما را پسندید", + "notification.follow": "{name} پیگیر شما شد", + "notification.mention": "{name} از شما نام برد", + "notification.reblog": "{name} نوشتهٔ شما را بازبوقید", + "notifications.clear_confirmation": "واقعاً می‌خواهید همهٔ اعلان‌هایتان را برای همیشه پاک کنید؟", + "notifications.clear": "پاک‌کردن اعلان‌ها", + "notifications.column_settings.alert": "اعلان در کامپیوتر", + "notifications.column_settings.favourite": "پسندیده‌ها:", + "notifications.column_settings.follow": "پیگیران تازه:", + "notifications.column_settings.mention": "نام‌بردن‌ها:", + "notifications.column_settings.reblog": "بازبوق‌ها:", + "notifications.column_settings.show": "در ستون نشان بده", + "notifications.column_settings.sound": "صدا را پخش Ú©Ù†", + "notifications.settings": "تنظیمات ستون", + "privacy.change": "تنظیم ØØ±ÛŒÙ… خصوصی نوشته‌ها", + "privacy.direct.long": "تنها به کاربران نام‌برده‌شده نشان بده", + "privacy.direct.short": "مستقیم", + "privacy.private.long": "تنها به پیگیران نشان بده", + "privacy.private.short": "خصوصی", + "privacy.public.long": "در Ùهرست نوشته‌های عمومی نشان بده", + "privacy.public.short": "عمومی", + "privacy.unlisted.long": "در Ùهرست نوشته‌های همه‌جا نشان نده", + "privacy.unlisted.short": "Ùهرست‌نشده", + "reply_indicator.cancel": "لغو", + "report.heading": "گزارش تازه", + "report.placeholder": "ØªÙˆØ¶ÛŒØ Ø§Ø¶Ø§ÙÙ‡", + "report.submit": "Ø¨ÙØ±Ø³Øª", + "report.target": "گزارش‌دادن", + "search_results.total": "{count, number} {count, plural, one {نتیجه} other {نتیجه}}", + "search.placeholder": "جستجو", + "search.status_by": "نوشتهٔ {name}", + "status.delete": "پاک‌کردن", + "status.favourite": "پسندیدن", + "status.load_more": "بیشتر نشان بده", + "status.media_hidden": "تصویر پنهان شده", + "status.mention": "از @{name} نام ببرید", + "status.open": "این نوشته را باز Ú©Ù†", + "status.reblog": "بوق", + "status.cannot_reblog": "این نوشته را نمی‌شود بازبوقید", + "status.reblogged_by": "{name} بازبوقید", + "status.reply": "پاسخ", + "status.replyAll": "به نوشته پاسخ دهید", + "status.report": "@{name} را گزارش دهید", + "status.sensitive_toggle": "برای دیدن کلیک کنید", + "status.sensitive_warning": "Ù…ØØªÙˆØ§ÛŒ ØØ³Ø§Ø³", + "status.show_less": "Ù†Ù‡ÙØªÙ†", + "status.show_more": "نمایش", + "tabs_bar.compose": "بنویسید", + "tabs_bar.federated_timeline": "همگانی", + "tabs_bar.home": "خانه", + "tabs_bar.local_timeline": "Ù…ØÙ„ÛŒ", + "tabs_bar.notifications": "اعلان‌ها", + "upload_area.title": "برای بارگذاری به این‌جا بکشید", + "upload_button.label": "Ø§ÙØ²ÙˆØ¯Ù† تصویر", + "upload_form.undo": "واگردانی", + "upload_progress.label": "بارگذاری...", + "video_player.toggle_sound": "تغییر صداداری", + "video_player.toggle_visible": "تغییر پیدایی", + "video_player.expand": "بازکردن ویدیو", + "video_player.video_error": "ویدیو نمی‌تواند پخش شود", +}; + +export default fa; diff --git a/app/assets/javascripts/components/locales/index.jsx b/app/assets/javascripts/components/locales/index.jsx index 9bda9a83e..9d187774a 100644 --- a/app/assets/javascripts/components/locales/index.jsx +++ b/app/assets/javascripts/components/locales/index.jsx @@ -2,6 +2,7 @@ import ar from './ar'; import en from './en'; import de from './de'; import es from './es'; +import fa from './fa'; import hr from './hr'; import hu from './hu'; import io from './io'; @@ -27,6 +28,7 @@ const locales = { en, de, es, + fa, hr, hu, io, diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index e2ea94856..ba6803b4b 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -10,7 +10,7 @@ module ApplicationHelper end def add_rtl_body_class(other_classes) - other_classes = "#{other_classes} rtl" if [:ar].include?(I18n.locale) + other_classes = "#{other_classes} rtl" if [:ar, :fa].include?(I18n.locale) other_classes end end diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 128e1e98c..cbc0adbba 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -8,6 +8,7 @@ module SettingsHelper de: 'Deutsch', eo: 'Esperanto', es: 'Español', + fa: 'ÙØ§Ø±Ø³ÛŒ', fi: 'Suomi', fr: 'Français', hr: 'Hrvatski', diff --git a/config/application.rb b/config/application.rb index dddc3e4fb..7711b96a0 100644 --- a/config/application.rb +++ b/config/application.rb @@ -32,6 +32,7 @@ module Mastodon :de, :eo, :es, + :fa, :fi, :fr, :hr, diff --git a/config/locales/devise.fa.yml b/config/locales/devise.fa.yml new file mode 100644 index 000000000..6fa9b5917 --- /dev/null +++ b/config/locales/devise.fa.yml @@ -0,0 +1,61 @@ +--- +fa: + devise: + confirmations: + confirmed: نشانی ایمیل شما با موÙقیت تأیید شد. + send_instructions: تا دقایقی دیگر ایمیلی خواهید Ú¯Ø±ÙØª Ú©Ù‡ به شما می‌گوید چگونه باید نشانی ایمیل خود را تأیید کنید. + send_paranoid_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر ایمیلی خواهید Ú¯Ø±ÙØª Ú©Ù‡ به شما می‌گوید چگونه باید نشانی ایمیل خود را تأیید کنید. + failure: + already_authenticated: شما الان هم وارد سیستم هستید. + inactive: ØØ³Ø§Ø¨ شما هنوز ÙØ¹Ø§Ù„ نشده است. + invalid: خطای %{authentication_keys} یا رمز نامعتبر. + last_attempt: پیش از آن Ú©Ù‡ ØØ³Ø§Ø¨ شما Ù‚ÙÙ„ شود، یک ÙØ±ØµØª دیگر دارید. + locked: ØØ³Ø§Ø¨ شما Ù‚ÙÙ„ شده است. + not_found_in_database: خطای %{authentication_keys} یا رمز نامعتبر. + timeout: مهلت این ورود شما به سر رسید. برای ادامه، دوباره وارد شوید. + unauthenticated: برای ادامه باید وارد شوید یا ثبت نام کنید. + unconfirmed: برای ادامه باید نشانی ایمیل خود را تأیید کنید. + mailer: + confirmation_instructions: + subject: 'Mastodon: راهنمایی برای تأیید %{instance}' + password_change: + subject: 'ماستدون: رمزتان عوض شد' + reset_password_instructions: + subject: 'ماستدون: راهنمایی برای بازنشانی رمز' + unlock_instructions: + subject: 'ماستدون: راهنمایی برای بازکردن Ù‚ÙÙ„' + omniauth_callbacks: + failure: تصدیق اعتبار شما از راه %{kind} انجام نشد زیرا "%{reason}". + success: تصدیق اعتبار شما از %{kind} با موÙقیت انجام شد. + passwords: + no_token: این ØµÙØÙ‡ را تنها از راه یک ایمیل بازنشانی رمز می‌شود دید. اگر از چنین ایمیلی می‌آیید، Ù„Ø·ÙØ§Ù‹ مطمئن شوید Ú©Ù‡ نشانی موجود در ایمیل را کامل به کار برده‌اید. + send_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر یک ایمیل بازیابی رمز Ø¯Ø±ÛŒØ§ÙØª خواهید کرد. + send_paranoid_instructions: اگر ایمیل شما در پایگاه دادهٔ ما موجود باشد، تا دقایقی دیگر یک ایمیل بازیابی رمز Ø¯Ø±ÛŒØ§ÙØª خواهید کرد. + updated: رمز شما با موÙقیت تغییر کرد. شما الان وارد سیستم هستید. + updated_not_active: رمز شما با موÙقیت تغییر کرد. + registrations: + destroyed: بدرود! ØØ³Ø§Ø¨ شما با موÙقیت لغو شد. امیدواریم دوباره شما را ببینیم. + signed_up: خوش آمدید! شما با موÙقیت ثبت نام کردید. + signed_up_but_inactive: خوش آمدید! شما با موÙقیت ثبت نام کردید. ولی هنوز وارد سیستم نیستید زیرا ØØ³Ø§Ø¨ شما هنوز ÙØ¹Ø§Ù„ نیست. + signed_up_but_locked: خوش آمدید! شما با موÙقیت ثبت نام کردید. ولی هنوز وارد سیستم نیستید زیرا ØØ³Ø§Ø¨ شما Ù‚ÙÙ„ شده است. + signed_up_but_unconfirmed: یک پیغام برای تأیید به نشانی ایمیل شما ÙØ±Ø³ØªØ§Ø¯Ù‡ شده. Ù„Ø·ÙØ§Ù‹ پیوند موجود در ایمیل را دنبال کنید تا ØØ³Ø§Ø¨ØªØ§Ù† ÙØ¹Ø§Ù„ شود. + update_needs_confirmation: شما با موÙقیت ØØ³Ø§Ø¨ØªØ§Ù† را به‌روز کردید، ولی لازم است Ú©Ù‡ ما نشانی ایمیل تازهٔ شما را تأیید کنیم. Ù„Ø·ÙØ§Ù‹ ایمیل خود را ببینید Ùˆ پیوند موجود در ایمیل را دنبال کنید تا تا نشانی ایمیل تازهٔ شما تأیید شود. + updated: ØØ³Ø§Ø¨ شما با موÙقبت به‌روز شد. + sessions: + already_signed_out: با موÙقیت خارج شدید. + signed_in: با موÙقیت وارد شدید. + signed_out: با موÙقیت خارج شدید. + unlocks: + send_instructions: تا دقایقی دیگر ایمیلی خواهید Ú¯Ø±ÙØª Ú©Ù‡ به شما می‌گوید چگونه باید Ù‚ÙÙ„ ØØ³Ø§Ø¨ خود را باز کنید. + send_paranoid_instructions: اگر ØØ³Ø§Ø¨ شما موجود باشد، تا دقایقی دیگر ایمیلی خواهید Ú¯Ø±ÙØª Ú©Ù‡ به شما می‌گوید چگونه باید Ù‚ÙÙ„ آن را باز کنید. + unlocked: Ù‚ÙÙ„ ØØ³Ø§Ø¨ شما با موÙقیت باز شد. Ù„Ø·ÙØ§Ù‹ برای ادامه وارد سیستم شوید. + errors: + messages: + already_confirmed: تأیید شده، Ù„Ø·ÙØ§Ù‹ وارد شوید + confirmation_period_expired: باید ظر٠%{period} تأیید شود، Ù„Ø·ÙØ§Ù‹ دوباره درخواست دهید + expired: مهلتش به سر رسید، Ù„Ø·ÙØ§Ù‹ دوباره درخواست دهید + not_found: پیدا نشد + not_locked: Ù‚ÙÙ„ نبود + not_saved: + one: 'خطایی نگذاشت Ú©Ù‡ این %{resource} ذخیره شود' + other: "به خاطر %{count} خطا، این %{resource} ذخیره نشد" diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml new file mode 100644 index 000000000..bab777f58 --- /dev/null +++ b/config/locales/doorkeeper.fa.yml @@ -0,0 +1,113 @@ +--- +fa: + activerecord: + attributes: + doorkeeper/application: + name: Name + redirect_uri: Redirect URI + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: cannot contain a fragment. + invalid_uri: must be a valid URI. + relative_uri: must be an absolute URI. + secured_uri: must be an HTTPS/SSL URI. + doorkeeper: + applications: + buttons: + authorize: Authorize + cancel: Cancel + destroy: Destroy + edit: Edit + submit: Submit + confirmations: + destroy: Are you sure? + edit: + title: Edit application + form: + error: Whoops! Check your form for possible errors + help: + native_redirect_uri: Use %{native_redirect_uri} for local tests + redirect_uri: Use one line per URI + scopes: Separate scopes with spaces. Leave blank to use the default scopes. + index: + callback_url: Callback URL + name: Name + new: New Application + title: Your applications + new: + title: New Application + show: + actions: Actions + application_id: Application Id + callback_urls: Callback urls + scopes: Scopes + secret: Secret + title: 'Application: %{name}' + authorizations: + buttons: + authorize: Authorize + deny: Deny + error: + title: An error has occurred + new: + able_to: It will be able to + prompt: Application %{client_name} requests access to your account + title: Authorization required + show: + title: Authorization code + authorized_applications: + buttons: + revoke: Revoke + confirmations: + revoke: Are you sure? + index: + application: Application + created_at: Authorized + date_format: "%Y-%m-%d %H:%M:%S" + scopes: Scopes + title: Your authorized applications + errors: + messages: + access_denied: The resource owner or authorization server denied the request. + credential_flow_not_configured: Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured. + invalid_client: Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method. + invalid_grant: The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client. + invalid_redirect_uri: The redirect uri included is not valid. + invalid_request: The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed. + invalid_resource_owner: The provided resource owner credentials are not valid, or resource owner cannot be found + invalid_scope: The requested scope is invalid, unknown, or malformed. + invalid_token: + expired: The access token expired + revoked: The access token was revoked + unknown: The access token is invalid + resource_owner_authenticator_not_configured: Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfiged. + server_error: The authorization server encountered an unexpected condition which prevented it from fulfilling the request. + temporarily_unavailable: The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server. + unauthorized_client: The client is not authorized to perform this request using this method. + unsupported_grant_type: The authorization grant type is not supported by the authorization server. + unsupported_response_type: The authorization server does not support this response type. + flash: + applications: + create: + notice: Application created. + destroy: + notice: Application deleted. + update: + notice: Application updated. + authorized_applications: + destroy: + notice: Application revoked. + layouts: + admin: + nav: + applications: Applications + oauth2_provider: OAuth2 Provider + application: + title: OAuth authorization required + scopes: + follow: follow, block, unblock and unfollow accounts + read: read your account's data + write: post on your behalf diff --git a/config/locales/fa.yml b/config/locales/fa.yml new file mode 100644 index 000000000..d118582a0 --- /dev/null +++ b/config/locales/fa.yml @@ -0,0 +1,324 @@ +--- +fa: + about: + about_mastodon: ماستدون (Mastodon) یک شبکهٔ اجتماعی <em>آزاد Ùˆ کدباز</em> است. یک جایگزین <em>غیرمتمرکز</em> برای شبکه‌های تجاری، Ú©Ù‡ نمی‌گذارد ارتباط‌های شما را یک شرکت در Ø§Ù†ØØµØ§Ø± خود بگیرد. یک سرور مورد اعتماد را انتخاب کنید—هر سروری Ú©Ù‡ باشد، همچنان می‌توانید با سرورهای دیگر ارتباط داشته باشید. هر کسی می‌تواند سرور ماستدون خود را راه بیندازد Ùˆ در <em>شبکهٔ اجتماعی</em> سهیم شود. + about_this: دربارهٔ این سرور + apps: برنامه‌ها + business_email: 'ایمیل کاری:' + closed_registrations: "امکان ثبت نام روی این سرور هم‌اینک ÙØ¹Ø§Ù„ نیست." + contact: تماس + description_headline: "%{domain} چیست؟" + domain_count_after: سرورهای دیگر + domain_count_before: متصل به + features: + api: رابط برنامه‌نویسی برای برنامه‌ها Ùˆ سرویس‌های دیگر + blocks: ابزارهای قدرتمند برای مسدود یا بی‌صدا کردن دیگران + characters: ÛµÛ°Û° ØØ±Ù برای هر نوشته + chronology: نمایش نوشته‌های دیگران به ترتیب زمانی + ethics: 'اخلاق‌مدار: بدون تبلیغات، بدون ردگیری' + gifv: تصاویر Ù…ØªØØ±Ú© Ùˆ ویدیوهای کوتاه + privacy: تنظیمات ØØ±ÛŒÙ… خصوصی جداگانه برای هر نوشته + public: نمایش نوشته‌های عمومی دیگران از همه‌جا + features_headline: برگ‌های برندهٔ ماستدون + get_started: آغاز کنید + links: پیوندها + other_instances: سرورهای دیگر + source_code: کدهای منبع + status_count_after: چیز نوشته‌اند + status_count_before: Ú©Ù‡ جمعاً + terms: شرایط Ø§Ø³ØªÙØ§Ø¯Ù‡ + user_count_after: کاربر + user_count_before: دارای + version: نسخه + accounts: + follow: Ù¾ÛŒ بگیرید + followers: پیگیران + following: Ù¾ÛŒ می‌گیرد + nothing_here: این‌جا چیزی نیست! + people_followed_by: کسانی Ú©Ù‡ %{name} Ù¾ÛŒ می‌گیرد + people_who_follow: کسانی Ú©Ù‡ %{name} را Ù¾ÛŒ می‌گیرند + posts: نوشته + remote_follow: پیگیری غیرمستقیم + unfollow: پایان پیگیری + activitypub: + outbox: + name: "صندوق خروجی %{account_name}" + summary: "مجموعه‌ای از ÙØ¹Ø§Ù„یت‌های کاربر %{account_name}." + activity: + create: + name: "%{account_name} یادداشتی نوشت." + announce: + name: "%{account_name} ÙØ¹Ø§Ù„یتی آغاز کرد." + admin: + accounts: + are_you_sure: آیا مطمئن هستید؟ + confirm: تأیید + confirmed: تأیید شد + display_name: نمایش به نام + domain: دامین + edit: ویرایش + email: ایمیل + feed_url: نشانی Ùید + followers: پیگیران + follows: Ù¾ÛŒ می‌گیرد + location: + all: همه + local: Ù…ØÙ„ÛŒ + remote: غیرمستقیم + title: مکان + media_attachments: ضمیمه‌های تصویری + moderation: + all: همه + silenced: بی‌صدا شده + suspended: معلق شده + title: مدیریت + most_recent_activity: آخرین ÙØ¹Ø§Ù„یت‌ها + most_recent_ip: آخرین IP ها + not_subscribed: عضو نیست + order: + alphabetic: Ø§Ù„ÙØ¨Ø§ÛŒÛŒ + most_recent: تازه‌ترین‌ها + title: ترتیب + perform_full_suspension: Perform full suspension + profile_url: نشانی نمایه + public: عمومی + push_subscription_expires: عضویت از راه PuSH منقضی شد + reset_password: بازنشانی رمز + salmon_url: نشانی Salmon + show: + created_reports: گزارش‌ها از طر٠این ØØ³Ø§Ø¨ + report: گزارش + targeted_reports: گزارش‌ها دربارهٔ این ØØ³Ø§Ø¨ + silence: بی‌صدا + statuses: نوشته‌ها + title: ØØ³Ø§Ø¨â€ŒÙ‡Ø§ + undo_silenced: واگردانی بی‌صداکردن + undo_suspension: واگردانی تعلیق + username: نام کاربری + web: وب + domain_blocks: + add_new: Ø§ÙØ²ÙˆØ¯Ù† تازه + created_msg: مسدودکردن دامین در ØØ§Ù„ انجام است + destroyed_msg: مسدودکردن دامین واگردانده شد + domain: دامین + new: + create: مسدودسازی + hint: مسدودسازی دامین جلوی Ùهرست‌شدن ØØ³Ø§Ø¨â€ŒÙ‡Ø§ در پایگاه داده را نمی‌گیرد، بلکه به طور خودکار روش‌های مدیریتی را روی ÙØ¹Ø§Ù„یت‌های ÙØ¹Ù„ÛŒ Ùˆ گذشتهٔ آن ØØ³Ø§Ø¨â€ŒÙ‡Ø§ اعمال می‌کند. + severity: + desc_html: "<strong>بی‌صداکردن</strong> یک ØØ³Ø§Ø¨ نوشته‌های آن را برای همه (به جز پیگیرانش) ناپدید می‌کند. <strong>معلق‌کردن</strong> ØØ³Ø§Ø¨ همهٔ نوشته‌ها، تصویرها، Ùˆ اطلاعات ØØ³Ø§Ø¨ را پاک می‌کند." + silence: بی‌صداکردن + suspend: معلق‌کردن + title: مسدودسازی دامین دیگر + reject_media: Ù†Ù¾Ø°ÛŒØ±ÙØªÙ† پرونده‌های تصویری + reject_media_hint: تصویرهای ذخیره‌شده در این‌جا را پاک می‌کند Ùˆ جلوی Ø¯Ø±ÛŒØ§ÙØª تصویرها را در آینده می‌گیرد. بی‌تأثیر برای معلق‌شده‌ها + severities: + silence: بی‌صداکردن + suspend: معلق‌کردن + severity: شدت + show: + affected_accounts: + one: روی یک ØØ³Ø§Ø¨ در پایگاه داده تأثیر گذاشت + other: "روی %{count} ØØ³Ø§Ø¨ در پایگاه داده تأثیر گذاشت" + retroactive: + silence: بی‌صداشدن همهٔ ØØ³Ø§Ø¨â€ŒÙ‡Ø§ÛŒ این دامین را لغو Ú©Ù† + suspend: معلق‌شدن همهٔ ØØ³Ø§Ø¨â€ŒÙ‡Ø§ÛŒ این دامین را لغو Ú©Ù† + title: واگردانی مسدودسازی دامنه برای %{domain} + undo: واگردانی + title: دامین‌های مسدودشده + undo: واگردانی + instances: + account_count: ØØ³Ø§Ø¨â€ŒÙ‡Ø§ÛŒ شناخته‌شده + domain_name: دامین + title: سرورهای شناخته‌شده + pubsubhubbub: + callback_url: نشانی Callback + confirmed: تأییدشده + expires_in: مهلت منقضی‌شدن + last_delivery: آخرین ارسال + title: PubSubHubbub + topic: موضوع + reports: + comment: + label: ØªÙˆØ¶ÛŒØ + none: خالی + delete: پاک‌کردن + id: شناسه + mark_as_resolved: علامت‌گذاری به عنوان ØÙ„‌شده + report: 'گزارش #%{id}' + reported_account: ØØ³Ø§Ø¨ گزارش‌شده + reported_by: گزارش از طر٠+ resolved: ØÙ„‌شده + silence_account: بی‌صدا کردن ØØ³Ø§Ø¨ + status: نوشته + suspend_account: معلق‌کردن ØØ³Ø§Ø¨ + target: هد٠+ title: گزارش‌ها + unresolved: ØÙ„‌نشده + view: نمایش + settings: + click_to_edit: برای ویرایش کلیک کنید + contact_information: + email: یک نشانی ایمیل عمومی وارد کنید + label: اطلاعات تماس + username: یک نام کاربری وارد کنید + registrations: + closed_message: + desc_html: وقتی امکان ثبت نام روی سرور ÙØ¹Ø§Ù„ نباشد در ØµÙØÙ‡Ù” اصلی نمایش می‌یابد<br>می‌توانید HTML بنویسید + title: پیغام برای ÙØ¹Ø§Ù„‌نبودن ثبت نام + open: + disabled: ØºÛŒØ±ÙØ¹Ø§Ù„ + enabled: ÙØ¹Ø§Ù„ + title: امکان ثبت نام + setting: تنظیمات + site_description: + desc_html: روی ØµÙØÙ‡Ù” اصلی نمایش می‌یابد Ùˆ همچنین به عنوان تگ‌های HTML.<br>می‌توانید HTML بنویسید, به‌ویژه <code><a></code> Ùˆ <code><em></code>. + title: دربارهٔ سایت + site_description_extended: + desc_html: در ØµÙØÙ‡Ù” اطلاعات تکمیلی نشان داده می‌شود<br>می‌توانید HTML بنویسید + title: اطلاعات بیشتر دربارهٔ سایت + site_title: نام سایت + title: تنظیمات سایت + title: مدیریت + application_mailer: + settings: 'تغییر تنظیمات ایمیل: %{link}' + signature: اعلان‌های ماستدون از %{instance} + view: 'نمایش:' + applications: + invalid_url: نشانی واردشده معتبر نیست + auth: + change_password: اطلاعات ØØ³Ø§Ø¨ + didnt_get_confirmation: راهنمایی برای تأیید را Ø¯Ø±ÛŒØ§ÙØª نکردید؟ + forgot_password: رمزتان را Ú¯Ù… کرده‌اید؟ + login: ورود + logout: خروج + register: عضو شوید + resend_confirmation: راهنمایی برای تأیید را دوباره Ø¨ÙØ±Ø³Øª + reset_password: بازنشانی رمز + set_new_password: تعیین رمز تازه + authorize_follow: + error: Ù…ØªØ£Ø³ÙØ§Ù†Ù‡ ØÛŒÙ† ÛŒØ§ÙØªÙ† آن ØØ³Ø§Ø¨ خطایی رخ داد + follow: Ù¾ÛŒ بگیرید + prompt_html: 'شما (<strong>%{self}</strong>) می‌خواهید این ØØ³Ø§Ø¨ را Ù¾ÛŒ بگیرید:' + title: پیگیری %{acct} + datetime: + distance_in_words: + about_x_hours: "%{count} ساعت" + about_x_months: "%{count} ماه" + about_x_years: "%{count} سال" + almost_x_years: "%{count} سال" + half_a_minute: همین الان + less_than_x_minutes: "%{count} دقیقه" + less_than_x_seconds: همین الان + over_x_years: "%{count} سال" + x_days: "%{count} روز" + x_minutes: "%{count} دقیقه" + x_months: "%{count} ماه" + x_seconds: "%{count} ثانیه" + errors: + '403': شما اجازهٔ دیدن این ØµÙØÙ‡ را ندارید. + '404': ØµÙØÙ‡â€ŒØ§ÛŒ Ú©Ù‡ می‌خواستید ببینید وجود ندارد. + '410': ØµÙØÙ‡â€ŒØ§ÛŒ Ú©Ù‡ می‌خواستید ببینید دیگر وجود ندارد. + '422': + content: تأیید امنیتی انجام نشد. آیا مرورگر شما کوکی‌ها را مسدود می‌کند؟ + title: تأیید امنیتی شکست خورد + exports: + blocks: ØØ³Ø§Ø¨â€ŒÙ‡Ø§ÛŒ مسدودشده + csv: CSV + follows: ØØ³Ø§Ø¨â€ŒÙ‡Ø§ÛŒ Ù¾ÛŒâ€ŒÚ¯Ø±ÙØªÙ‡ + mutes: ØØ³Ø§Ø¨â€ŒÙ‡Ø§ÛŒ بی‌صداشده + storage: تصویرهای ذخیره‌شده + generic: + changes_saved_msg: تغییرات با موÙقیت ذخیره شدند! + powered_by: نیرو Ú¯Ø±ÙØªÙ‡ از %{link} + save_changes: ذخیرهٔ تغییرات + validation_errors: + one: یک چیزی هنوز درست نیست! Ù„Ø·ÙØ§Ù‹ خطاهای زیر را ببینید + other: یک چیزی هنوز درست نیست! Ù„Ø·ÙØ§Ù‹ %{count} خطای زیر را ببینید + imports: + preface: شما می‌توانید داده‌هایی از قبیل کاربرانی Ú©Ù‡ Ù¾ÛŒ Ù…ÛŒâ€ŒÚ¯Ø±ÙØªÛŒØ¯ یا مسدود می‌کردید را در ØØ³Ø§Ø¨ خود روی این سرور درون‌ریزی کنید. برای این کار پرونده‌هایی Ú©Ù‡ از سرور دیگر برون‌سپاری کرده‌اید را به‌کار ببرید. + success: داده‌های شما با موÙقیت بارگذاری شد Ùˆ به زودی پردازش می‌شود + types: + blocking: Ùهرست مسدودشده‌ها + following: Ùهرست پی‌گیری‌ها + muting: Ùهرست بی‌صداشده‌ها + upload: بارگذاری + landing_strip_html: <strong>%{name}</strong> کاربری روی <strong>%{domain}</strong> است. شما با داشتن ØØ³Ø§Ø¨ روی هر سروری می‌توانید نوشته‌های او را پیگیری کرده یا با او ارتباط داشته باشید. اگر هنوز ØØ³Ø§Ø¨ÛŒ ندارید <a href="%{sign_up_path}">این‌جا ØØ³Ø§Ø¨ باز کنید</a>. + media_attachments: + validations: + images_and_video: نمی‌توان برای نوشته‌ای Ú©Ù‡ تصویر دارد ویدیو بارگذاری کرد + too_many: نمی‌توان بیشتر از Û´ تصویر بارگذاری کرد + notification_mailer: + digest: + body: 'خلاصه‌ای از آن‌چه از زمان آخرین بازدید شما در %{since} روی %{instance} رخ داد :' + mention: "%{name} این‌جا از شما نام برد:" + new_followers_summary: + one: شما یک پیگیر تازه دارید! ای ول! + other: شما %{count} پیگیر تازه دارید! Ú†Ù‡ عالی! + subject: + one: "یک اعلان تازه از زمان آخرین بازدید شما \U0001F418" + other: "%{count} اعلان تازه از زمان آخرین بازدید شما \U0001F418" + favourite: + body: '%{name} این نوشتهٔ شما را پسندید:' + subject: "%{name} نوشتهٔ شما را پسندید" + follow: + body: "%{name} هم‌اینک پیگیر شماست!" + subject: "%{name} هم‌اینک پیگیر شماست" + follow_request: + body: "%{name} می‌خواهد پیگیر نوشته‌های شما باشد" + subject: 'منتظر پیگیری: %{name}' + mention: + body: '%{name} در این‌جا از شما نام برد:' + subject: '%{name} از شما نام برد' + reblog: + body: '%{name} نوشتهٔ شما را بازبوقید:' + subject: "%{name} نوشتهٔ شما را بازبوقید" + pagination: + next: بعدی + prev: قبلی + truncate: "…" + remote_follow: + acct: نشانی ØØ³Ø§Ø¨ username@domain خود را این‌جا بنویسید + missing_resource: نشانی اینترنتی برای رسیدن به ØØ³Ø§Ø¨ شما پیدا نشد + proceed: درخواست پیگیری + prompt: 'شما قرار است این ØØ³Ø§Ø¨ را پیگیری کنید:' + settings: + authorized_apps: برنامه‌های مجاز + back: بازگشت به ماستدون + edit_profile: ویرایش نمایه + export: برون‌سپاری داده‌ها + import: درون‌ریزی + preferences: ØªØ±Ø¬ÛŒØØ§Øª + settings: تنظیمات + two_factor_authentication: ورود دومرØÙ„ه‌ای + statuses: + open_in_web: بازکردن در وب + over_character_limit: از ØØ¯ مجاز %{max} ØØ±Ù ÙØ±Ø§ØªØ± Ø±ÙØªÛŒØ¯ + show_more: نمایش + visibilities: + private: نمایش تنها به پیگیران + public: عمومی + unlisted: عمومی، ولی در Ùهرست نوشته‌ها نمایش نده + stream_entries: + click_to_show: برای نمایش کلیک کنید + reblogged: بازبوقیده + sensitive_content: Ù…ØØªÙˆØ§ÛŒ ØØ³Ø§Ø³ + time: + formats: + default: "%b %d, %Y, %H:%M" + two_factor_authentication: + code_hint: برای تأیید، کدی را Ú©Ù‡ برنامهٔ تأییدکننده ساخته است وارد کنید + description_html: اگر <strong>ورود دومرØÙ„ه‌ای</strong> را ÙØ¹Ø§Ù„ کنید، برای ورود به سیستم به تلÙÙ† خود نیاز خواهید داشت تا برایتان یک کد موقتی بسازد + disable: ØºÛŒØ±ÙØ¹Ø§Ù„‌کردن + enable: ÙØ¹Ø§Ù„‌کردن + enabled_success: ورود دومرØÙ„ه‌ای با موÙقیت ÙØ¹Ø§Ù„ شد + generate_recovery_codes: ساخت کدهای بازیابی + instructions_html: "<strong>این کد QR را با برنامهٔ Google Authenticator یا برنامه‌های TOTP مشابه اسکن کنید</strong>. از این به بعد، آن برنامه کدهایی موقتی خواهد ساخت Ú©Ù‡ برای ورود باید آن‌ها را وارد کنید." + lost_recovery_codes: با کدهای بازیابی می‌توانید اگر تلÙÙ† خود را Ú¯Ù… کردید به ØØ³Ø§Ø¨ خود دسترسی داشته باشید. اگر کدهای بازیابی خود را Ú¯Ù… کردید، آن‌ها را این‌جا دوباره بسازید. کدهای بازیابی قبلی شما نامعتبر خواهند شد. + manual_instructions: 'اگر نمی‌توانید کدها را اسکن کنید Ùˆ باید آن‌ها را دستی وارد کنید، متن کد امنیتی این‌جاست:' + recovery_codes_regenerated: کدهای بازیابی با موÙقیت ساخته شدند + recovery_instructions: اگر تلÙÙ† خود را Ú¯Ù… کردید، می‌توانید با یکی از کدهای بازیابی زیر کنترل ØØ³Ø§Ø¨ خود را به دست بگیرید. این کدها را در جای امنی Ù†Ú¯Ù‡ دارید، مثلاً آن‌ها را چاپ کنید Ùˆ کنار سایر مدارک مهم خود قرار دهید + setup: راه اندازی + wrong_code: کدی Ú©Ù‡ وارد کردید نامعتبر بود! آیا ساعت سرور Ùˆ ساعت دستگاه شما درست تنظیم شده‌اند؟ + users: + invalid_email: نشانی ایمیل نامعتبر است + invalid_otp_token: کد ورود دومرØÙ„ه‌ای نامعتبر است diff --git a/config/locales/simple_form.fa.yml b/config/locales/simple_form.fa.yml new file mode 100644 index 000000000..b0af0575a --- /dev/null +++ b/config/locales/simple_form.fa.yml @@ -0,0 +1,51 @@ +--- +en: + simple_form: + hints: + defaults: + avatar: یکی از قالب‌های PNG یا GIF یا JPG. بیشترین اندازه Û² مگابایت. تصویر به اندازهٔ ۱۲۰×۱۲۰ پیکسل تبدیل خواهد شد. + display_name: '%{counter} ØØ±Ù باقی مانده' + header: یکی از قالب‌های PNG یا GIF یا JPG. بیشترین اندازه Û² مگابایت. تصویر به اندازهٔ ۳۳۵×۷۰۰ پیکسل تبدیل خواهد شد + locked: باید پیگیران تازه را خودتان تأیید کنید. ØØ±ÛŒÙ… خصوصی Ù¾ÛŒØ´â€ŒÙØ±Ø¶ نوشته‌ها را روی پیگیران تنظیم می‌کند + note: '%{counter} ØØ±Ù باقی مانده' + imports: + data: پروندهٔ CSV Ú©Ù‡ از سرور ماستدون دیگری برون‌سپاری شده + sessions: + otp: کد تأیید دومرØÙ„ه‌ای را از تلÙÙ† خود وارد کنید یا یکی از کدهای بازیابی را به کار ببرید. + labels: + defaults: + avatar: تصویر نمایه + confirm_new_password: تأیید رمز تازه + confirm_password: تأیید رمز + current_password: رمز ÙØ¹Ù„ÛŒ + data: داده‌ها + display_name: نمایش به نام + email: نشانی ایمیل + header: موضوع + locale: تصویر زمینه + locked: خصوصی‌کردن ØØ³Ø§Ø¨ + new_password: رمز تازه + note: دربارهٔ شما + otp_attempt: کد ورود دومرØÙ„ه‌ای + password: رمز + setting_auto_play_gif: پخش خودکار تصویرهای Ù…ØªØØ±Ú© + setting_boost_modal: نمایش پیغام تأیید پیش از بازبوقیدن + setting_default_privacy: ØØ±ÛŒÙ… خصوصی نوشته‌ها + severity: شدت + type: نوع درون‌ریزی + username: نام کاربری + interactions: + must_be_follower: مسدودکردن اعلان‌های همه به جز پیگیران + must_be_following: مسدودکردن اعلان‌های کسانی Ú©Ù‡ شما Ù¾ÛŒ نمی‌گیرید + notification_emails: + digest: خلاصه‌کردن چند اعلان در یک ایمیل + favourite: وقتی کسی نوشتهٔ شما پسندید ایمیل Ø¨ÙØ±Ø³Øª + follow: وقتی کسی پیگیر شما شد ایمیل Ø¨ÙØ±Ø³Øª + follow_request: وقتی کسی درخواست پیگیری کرد ایمیل Ø¨ÙØ±Ø³Øª + mention: وقتی کسی از شما نام برد ایمیل Ø¨ÙØ±Ø³Øª + reblog: وقتی کسی نوشتهٔ شما را بازبوقید ایمیل Ø¨ÙØ±Ø³Øª + 'no': 'خیر' + required: + mark: "*" + text: ضروری + 'yes': 'بله' -- GitLab