From 9043b3218302e77dda65a6b453ee49920f133398 Mon Sep 17 00:00:00 2001 From: Ratmir Karabut <rkarabut@sfmodern.ru> Date: Mon, 10 Apr 2017 13:52:06 +0300 Subject: [PATCH] Add Russian translation (ru) (#1023) * Add Russian translation (ru) * Fix a missing comma * Fix the wording for better consistency --- .../components/containers/mastodon.jsx | 6 +- .../javascripts/components/locales/index.jsx | 6 +- .../javascripts/components/locales/ru.jsx | 68 ++++++++ app/helpers/settings_helper.rb | 4 +- config/application.rb | 4 +- config/locales/devise.ru.yml | 61 +++++++ config/locales/doorkeeper.ru.yml | 113 ++++++++++++ config/locales/ru.yml | 165 ++++++++++++++++++ config/locales/simple_form.ru.yml | 46 +++++ 9 files changed, 469 insertions(+), 4 deletions(-) create mode 100644 app/assets/javascripts/components/locales/ru.jsx create mode 100644 config/locales/devise.ru.yml create mode 100644 config/locales/doorkeeper.ru.yml create mode 100644 config/locales/ru.yml create mode 100644 config/locales/simple_form.ru.yml diff --git a/app/assets/javascripts/components/containers/mastodon.jsx b/app/assets/javascripts/components/containers/mastodon.jsx index 00f20074d9..fea8b15949 100644 --- a/app/assets/javascripts/components/containers/mastodon.jsx +++ b/app/assets/javascripts/components/containers/mastodon.jsx @@ -48,6 +48,8 @@ import hu from 'react-intl/locale-data/hu'; import uk from 'react-intl/locale-data/uk'; import fi from 'react-intl/locale-data/fi'; import eo from 'react-intl/locale-data/eo'; +import ru from 'react-intl/locale-data/ru'; + import getMessagesForLocale from '../locales'; import { hydrateStore } from '../actions/store'; import createStream from '../stream'; @@ -60,7 +62,9 @@ const browserHistory = useRouterHistory(createBrowserHistory)({ basename: '/web' }); -addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk, ...fi, ...eo]); + +addLocaleData([...en, ...de, ...es, ...fr, ...pt, ...hu, ...uk, ...fi, ...eo, ...ru]); + const Mastodon = React.createClass({ diff --git a/app/assets/javascripts/components/locales/index.jsx b/app/assets/javascripts/components/locales/index.jsx index 1e7b8b548e..f9e1fe5bd4 100644 --- a/app/assets/javascripts/components/locales/index.jsx +++ b/app/assets/javascripts/components/locales/index.jsx @@ -7,6 +7,8 @@ import pt from './pt'; import uk from './uk'; import fi from './fi'; import eo from './eo'; +import ru from './ru'; + const locales = { en, @@ -17,7 +19,9 @@ const locales = { pt, uk, fi, - eo + eo, + ru + }; export default function getMessagesForLocale (locale) { diff --git a/app/assets/javascripts/components/locales/ru.jsx b/app/assets/javascripts/components/locales/ru.jsx new file mode 100644 index 0000000000..e109005a7c --- /dev/null +++ b/app/assets/javascripts/components/locales/ru.jsx @@ -0,0 +1,68 @@ +const ru = { + "column_back_button.label": "Ðазад", + "lightbox.close": "Закрыть", + "loading_indicator.label": "Загрузка...", + "status.mention": "УпомÑнуть @{name}", + "status.delete": "Удалить", + "status.reply": "Ответить", + "status.reblog": "Продвинуть", + "status.favourite": "ÐравитÑÑ", + "status.reblogged_by": "{name} продвинул(а)", + "status.sensitive_warning": "ЧувÑтвительный контент", + "status.sensitive_toggle": "Ðажмите Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра", + "video_player.toggle_sound": "Вкл./выкл. звук", + "account.mention": "УпомÑнуть @{name}", + "account.edit_profile": "Изменить профиль", + "account.unblock": "Разблокировать @{name}", + "account.unfollow": "ОтпиÑатьÑÑ", + "account.block": "Блокировать @{name}", + "account.follow": "ПодпиÑатьÑÑ", + "account.posts": "ПоÑты", + "account.follows": "ПодпиÑки", + "account.followers": "ПодпиÑчики", + "account.follows_you": "ПодпиÑан(а) на ВаÑ", + "account.requested": "Ожидает подтверждениÑ", + "getting_started.heading": "Добро пожаловать", + "getting_started.about_addressing": "Ð’Ñ‹ можете подпиÑатьÑÑ Ð½Ð° человека, Ð·Ð½Ð°Ñ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ домен, на котором он находитÑÑ, Ð²Ð²ÐµÐ´Ñ e-mail-подобный Ð°Ð´Ñ€ÐµÑ Ð² форму поиÑка.", + "getting_started.about_shortcuts": "ЕÑли пользователь находитÑÑ Ð½Ð° одном Ñ Ð’Ð°Ð¼Ð¸ домене, можно иÑпользовать только имÑ. То же правило применимо к упоминанию пользователей в ÑтатуÑах.", + "getting_started.open_source_notice": "Mastodon - программа Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¼ иÑходным кодом. Ð’Ñ‹ можете помочь проекту или Ñообщить о проблемах на GitHub по адреÑу {github}. {apps}.", + "column.home": "ГлавнаÑ", + "column.community": "Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð»ÐµÐ½Ñ‚Ð°", + "column.public": "Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ð»ÐµÐ½Ñ‚Ð°", + "column.notifications": "УведомлениÑ", + "tabs_bar.compose": "ÐапиÑать", + "tabs_bar.home": "ГлавнаÑ", + "tabs_bar.mentions": "УпоминаниÑ", + "tabs_bar.public": "Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ð»ÐµÐ½Ñ‚Ð°", + "tabs_bar.notifications": "УведомлениÑ", + "compose_form.placeholder": "О чем Ð’Ñ‹ думаете?", + "compose_form.publish": "Протрубить", + "compose_form.sensitive": "Отметить как чувÑтвительный контент", + "compose_form.spoiler": "Скрыть текÑÑ‚ за предупреждением", + "compose_form.private": "Отметить как приватное", + "compose_form.privacy_disclaimer": "Ваш приватный ÑÑ‚Ð°Ñ‚ÑƒÑ Ð±ÑƒÐ´ÐµÑ‚ доÑтавлен упомÑнутым пользователÑм на доменах {domains}. ДоверÑете ли вы {domainsCount, plural, one {Ñтому Ñерверу} other {Ñтим Ñерверам}}? ПриватноÑть поÑтов работает только на узлах Mastodon. ЕÑли {domains} {domainsCount, plural, one {не ÑвлÑетÑÑ ÑƒÐ·Ð»Ð¾Ð¼ Mastodon} other {не ÑвлÑÑŽÑ‚ÑÑ ÑƒÐ·Ð»Ð°Ð¼Ð¸ Mastodon}}, приватноÑть поÑта не будет указана, и он может оказатьÑÑ Ð¿Ñ€Ð¾Ð´Ð²Ð¸Ð½ÑƒÑ‚ или иным образом показан не обозначенным Вами пользователÑм.", + "compose_form.unlisted": "Ðе отображать в публичных лентах", + "navigation_bar.edit_profile": "Изменить профиль", + "navigation_bar.preferences": "Опции", + "navigation_bar.community_timeline": "Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð»ÐµÐ½Ñ‚Ð°", + "navigation_bar.public_timeline": "Ð“Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ Ð»ÐµÐ½Ñ‚Ð°", + "navigation_bar.logout": "Выйти", + "reply_indicator.cancel": "Отмена", + "search.placeholder": "ПоиÑк", + "search.account": "Ðккаунт", + "search.hashtag": "Ð¥Ñштег", + "upload_button.label": "Добавить медиаконтент", + "upload_form.undo": "Отменить", + "notification.follow": "{name} подпиÑалÑÑ(-лаÑÑŒ) на ВаÑ", + "notification.favourite": "{name} понравилÑÑ Ð’Ð°Ñˆ ÑтатуÑ", + "notification.reblog": "{name} продвинул(а) Ваш ÑтатуÑ", + "notification.mention": "{name} упомÑнул(а) ВаÑ", + "notifications.column_settings.alert": "ДеÑктопные уведомлениÑ", + "notifications.column_settings.show": "Показывать в колонке", + "notifications.column_settings.follow": "Ðовые подпиÑчики:", + "notifications.column_settings.favourite": "ÐравитÑÑ:", + "notifications.column_settings.mention": "УпоминаниÑ:", + "notifications.column_settings.reblog": "ПродвижениÑ:", +}; + +export default ru; diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb index 74dc0e11d7..327ca4e989 100644 --- a/app/helpers/settings_helper.rb +++ b/app/helpers/settings_helper.rb @@ -5,13 +5,15 @@ module SettingsHelper en: 'English', de: 'Deutsch', es: 'Español', + eo: 'Esperanto', pt: 'Português', fr: 'Français', hu: 'Magyar', uk: 'УкраїнÑька', 'zh-CN': 'ç®€ä½“ä¸æ–‡', fi: 'Suomi', - eo: 'Esperanto', + ru: 'РуÑÑкий', + }.freeze def human_locale(locale) diff --git a/config/application.rb b/config/application.rb index 9a5c0d0d3f..dc937ca0eb 100644 --- a/config/application.rb +++ b/config/application.rb @@ -24,7 +24,9 @@ module Mastodon # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :fi, :eo] + + config.i18n.available_locales = [:en, :de, :es, :pt, :fr, :hu, :uk, 'zh-CN', :fi, :eo, :ru] + config.i18n.default_locale = :en # config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb') diff --git a/config/locales/devise.ru.yml b/config/locales/devise.ru.yml new file mode 100644 index 0000000000..f829f9d8e2 --- /dev/null +++ b/config/locales/devise.ru.yml @@ -0,0 +1,61 @@ +--- +ru: + devise: + confirmations: + confirmed: Ваш Ð°Ð´Ñ€ÐµÑ e-mail был уÑпешно подтвержден. + send_instructions: Ð’Ñ‹ получите e-mail Ñ Ð¸Ð½Ñтрукцией по подтверждению Вашего адреÑа e-mail в течение неÑкольких минут. + send_paranoid_instructions: ЕÑли Ваш Ð°Ð´Ñ€ÐµÑ e-mail еÑть в нашей базе данных, вы получите e-mail Ñ Ð¸Ð½Ñтрукцией по подтверждению Вашего адреÑа в течение неÑкольких минут. + failure: + already_authenticated: Ð’Ñ‹ уже авторизованы. + inactive: Ваш аккаунт еще не активирован. + invalid: Ðеверно введены %{authentication_keys} или пароль. + last_attempt: У Ð’Ð°Ñ ÐµÑть поÑледнÑÑ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ°, поÑле чего вход будет заблокирован. + locked: Ваш аккаунт заблокирован. + not_found_in_database: Ðеверно введены %{authentication_keys} или пароль. + timeout: Ваша ÑеÑÑÐ¸Ñ Ð¸Ñтекла. ПожалуйÑта, войдите Ñнова, чтобы продолжить. + unauthenticated: Вам необходимо войти или зарегиÑтрироватьÑÑ. + unconfirmed: Вам необходимо подтвердить ваш Ð°Ð´Ñ€ÐµÑ e-mail Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ. + mailer: + confirmation_instructions: + subject: 'Mastodon: ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿Ð¾ подтверждению' + password_change: + subject: 'Mastodon: Пароль изменен' + reset_password_instructions: + subject: 'Mastodon: ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿Ð¾ ÑброÑу паролÑ' + unlock_instructions: + subject: 'Mastodon: ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿Ð¾ разблокировке' + omniauth_callbacks: + failure: Ðе получилоÑÑŒ аутентифицировать Ð’Ð°Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ %{kind} по Ñледующей причине - "%{reason}". + success: ÐÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ аккаунта %{kind} прошла уÑпешно. + passwords: + no_token: Ð’Ñ‹ можете получить доÑтуп к Ñтой Ñтранице, только Ð¿ÐµÑ€ÐµÐ¹Ð´Ñ Ð¿Ð¾ ÑÑылке в e-mail Ð´Ð»Ñ ÑброÑа паролÑ. ЕÑли Ð’Ñ‹ дейÑтвительно перешли по такой ÑÑылке, пожалуйÑта, удоÑтоверьтеÑÑŒ, что ÑÑылка была введена полноÑтью и без изменений. + send_instructions: Ð’Ñ‹ получите e-mail Ñ Ð¸Ð½Ñтрукцией по ÑброÑу Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð² течение неÑкольких минут. + send_paranoid_instructions: ЕÑли Ваш Ð°Ð´Ñ€ÐµÑ e-mail еÑть в нашей базе данных, Ð’Ñ‹ получите e-mail Ñо ÑÑылкой Ð´Ð»Ñ ÑброÑа Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð² течение неÑкольких минут. + updated: Ваш пароль был уÑпешно изменен. Вход выполнен. + updated_not_active: Ваш пароль был уÑпешно изменен. + registrations: + destroyed: До ÑвиданиÑ! Ваш аккаунт был уÑпешно удален. Мы надеемÑÑ Ñкоро увидеть Ð’Ð°Ñ Ñнова. + signed_up: Добро пожаловать! Ð’Ñ‹ уÑпешно зарегиÑтрировалиÑÑŒ. + signed_up_but_inactive: Ð’Ñ‹ уÑпешно зарегиÑтрировалиÑÑŒ. Тем не менее, мы не можем авторизовать ВаÑ, поÑкольку Ваш аккаунт еще не активирован. + signed_up_but_locked: Ð’Ñ‹ уÑпешно зарегиÑтрировалиÑÑŒ. Тем не менее, мы не можем авторизовать ВаÑ, поÑкольку Ваш аккаунт заблокирован. + signed_up_but_unconfirmed: Сообщение Ñо ÑÑылкой Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¾ выÑлано на Ваш Ð°Ð´Ñ€ÐµÑ e-mail. ПожалуйÑта, пройдите по ÑÑылке Ð´Ð»Ñ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ð¸ Вашего аккаунта. + update_needs_confirmation: Ð’Ñ‹ уÑпешно обновили Ваш аккаунт, но нам нужно подтвердить ваш новый Ð°Ð´Ñ€ÐµÑ e-mail. ПожалуйÑта, проверьте почту и пройдите по ÑÑылке Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ нового адреÑа. + updated: Ваш аккаунт был уÑпешно обновлен. + sessions: + already_signed_out: Выход прошел уÑпешно. + signed_in: Вход прошел уÑпешно. + signed_out: Выход прошел уÑпешно. + unlocks: + send_instructions: Ð’Ñ‹ получите e-mail Ñ Ð¸Ð½Ñтрукцией по разблокировке Вашего аккаунта в течение неÑкольких минут. + send_paranoid_instructions: ЕÑли Ваш аккаунт ÑущеÑтвует, Ð’Ñ‹ получите e-mail Ñ Ð¸Ð½Ñтрукцией по его разблокировке в течение неÑкольких минут. + unlocked: Ваш аккаунт был уÑпешно разблокирован. пожалуйÑта, войдите Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ. + errors: + messages: + already_confirmed: уже подтвержден, пожалуйÑта, попробуйте войти + confirmation_period_expired: не был подтвержден в течение %{period}, пожалуйÑта, запроÑите новый + expired: иÑтек, пожалуйÑта, запроÑите новый + not_found: не найден + not_locked: не был заблокирован + not_saved: + one: '1 ошибка помешала Ñохранению Ñтого %{resource}:' + other: "%{count} ошибки помешали Ñохранению Ñтого %{resource}:" diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml new file mode 100644 index 0000000000..8862936dc2 --- /dev/null +++ b/config/locales/doorkeeper.ru.yml @@ -0,0 +1,113 @@ +--- +ru: + activerecord: + attributes: + doorkeeper/application: + name: Ðазвание + redirect_uri: URI Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ + errors: + models: + doorkeeper/application: + attributes: + redirect_uri: + fragment_present: не может Ñодержать фрагмент. + invalid_uri: должен быть правильным URI. + relative_uri: должен быть абÑолютным URI. + secured_uri: должен быть HTTPS/SSL URI. + doorkeeper: + applications: + buttons: + authorize: Ðвторизовать + cancel: Отменить + destroy: Удалить + edit: Изменить + submit: ПринÑть + confirmations: + destroy: Ð’Ñ‹ уверены? + edit: + title: Изменить приложение + form: + error: Ой! Проверьте Вашу форму на возможные ошибки + help: + native_redirect_uri: ИÑпользуйте %{native_redirect_uri} Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ теÑÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ + redirect_uri: ИÑпользуйте по одной Ñтроке на URI + scopes: РазделÑйте ÑпиÑок разрешений пробелами. ОÑтавьте незаполненным Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ð¹ по умолчанию. + index: + callback_url: Callback URL + name: Ðазвание + new: Ðовое Приложение + title: Ваши Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ + new: + title: Ðовое Приложение + show: + actions: ДейÑÑ‚Ð²Ð¸Ñ + application_id: Id Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ + callback_urls: Callback urls + scopes: Ð Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ + secret: Секрет + title: 'Приложение: %{name}' + authorizations: + buttons: + authorize: Ðвторизовать + deny: Отказать + error: + title: Произошла ошибка + new: + able_to: Оно Ñможет + prompt: Приложение %{client_name} запрашивает доÑтуп к Вашему аккаунту + title: ТребуетÑÑ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ + show: + title: Код авторизации + authorized_applications: + buttons: + revoke: Отозвать авторизацию + confirmations: + revoke: Ð’Ñ‹ уверены? + index: + application: Приложение + created_at: Ðвторизовано + date_format: "%Y-%m-%d %H:%M:%S" + scopes: Ð Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ + title: Ваши авторизованные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ + errors: + messages: + access_denied: Владелец реÑурÑа или Ñервер авторизации ответил отказом на Ваш запроÑ. + credential_flow_not_configured: Поток Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñтавлением клиенту Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»ÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹, поÑкольку параметр Doorkeeper.configure.resource_owner_from_credentials не был Ñконфигурирован. + invalid_client: КлиентÑÐºÐ°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð°ÑÑŒ неудачей (неизвеÑтный клиент, не включена клиентÑÐºÐ°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ, или метод аутентификации не поддерживаетÑÑ. + invalid_grant: ПредоÑтавленный доÑтуп некорректен, иÑтек, отозван, не Ñовпадает Ñ URI перенаправлениÑ, иÑпользованным в запроÑе авторизации, или был выпущен Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ клиента. + invalid_redirect_uri: Включенный URI Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚ÐµÐ½. + invalid_request: Ð’ запроÑе не хватает обÑзательного параметра, приÑутÑтвует неподдерживаемое значение параметра, либо он был Ñформирован неверно. + invalid_resource_owner: ПредоÑтавленные данные владельца реÑурÑа некорректны, или владелец реÑурÑа не может быть найден + invalid_scope: Запрошенное разрешение некорректно, неизвеÑтно или неверно Ñформировано. + invalid_token: + expired: Токен доÑтупа иÑтек + revoked: Токен доÑтупа был отменен + unknown: Токен доÑтупа некорректен + resource_owner_authenticator_not_configured: ПоиÑк владельца реÑурÑа завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹, поÑкольку параметр Doorkeeper.configure.resource_owner_authenticator не был Ñконфигурирован. + server_error: Сервер авторизации вÑтретилÑÑ Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ ошибкой, не позволившей ему выполнить запроÑ. + temporarily_unavailable: Сервер авторизации в данный момент не может выполнить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ð¾ причине временной перегрузки или профилактики. + unauthorized_client: Клиент не авторизован Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñтого запроÑа Ñ Ð¸Ñпользованием Ñтого метода. + unsupported_grant_type: Тип авторизации не поддерживаетÑÑ Ñервером авторизации. + unsupported_response_type: Сервер авторизации не поддерживает Ñтот тип ответа. + flash: + applications: + create: + notice: Приложение Ñоздано. + destroy: + notice: Приложение удалено. + update: + notice: Приложение обновлено. + authorized_applications: + destroy: + notice: ÐÐ²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¾Ð·Ð²Ð°Ð½Ð°. + layouts: + admin: + nav: + applications: ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ + oauth2_provider: Провайдер OAuth2 + application: + title: ТребуетÑÑ Ð°Ð²Ñ‚Ð¾Ñ€Ð¸Ð·Ð°Ñ†Ð¸Ñ OAuth + scopes: + follow: подпиÑыватьÑÑ, отпиÑыватьÑÑ, блокировать и разблокировать аккаунты + read: читать данные Вашего аккаунта + write: отправлÑть за Ð’Ð°Ñ Ð¿Ð¾Ñты diff --git a/config/locales/ru.yml b/config/locales/ru.yml new file mode 100644 index 0000000000..e5a9c0958c --- /dev/null +++ b/config/locales/ru.yml @@ -0,0 +1,165 @@ +--- +ru: + about: + about_mastodon: Mastodon - Ñто <em>ÑвободнаÑ</em> ÑÐ¾Ñ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ñеть Ñ <em>открытым иÑходным кодом</em>. Как <em>децентрализованнаÑ</em> альтернатива коммерчеÑким платформам, Mastodon предотвращает риÑк монополизации Вашего Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ компанией. Выберите Ñервер, которому Ð’Ñ‹ доверÑете — что бы Ð’Ñ‹ ни выбрали, Ð’Ñ‹ Ñможете общатьÑÑ Ñо вÑеми оÑтальными. Любой может запуÑтить Ñвой ÑобÑтвенный узел Mastodon и учаÑтвовать в <em>Ñоциальной Ñети</em> Ñовершенно беÑшовно. + about_this: Об Ñтом узле + apps: ÐŸÑ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ + business_email: 'Деловой e-mail:' + closed_registrations: Ð’ данный момент региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð½Ð° Ñтом узле закрыта. + contact: СвÑзатьÑÑ + description_headline: Что такое %{domain}? + domain_count_after: другими узлами + domain_count_before: СвÑзываетÑÑ Ñ + features: + api: Открытый API Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ и ÑервиÑов + blocks: Продвинутые инÑтрументы Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð³Ð»ÑƒÑˆÐµÐ½Ð¸Ñ + characters: 500 Ñимволов на поÑÑ‚ + chronology: ХронологичеÑкие ленты + ethics: 'Ðтичный дизайн: нет рекламы, нет ÑлежениÑ' + gifv: GIFV и короткие видео + privacy: Тонкие наÑтройки приватноÑти Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ поÑта + public: Публичные ленты + features_headline: Что выделÑет Mastodon + get_started: Ðачать + links: СÑылки + other_instances: Другие узлы + source_code: ИÑходный код + status_count_after: ÑтатуÑов + status_count_before: Ðвтор + terms: УÑÐ»Ð¾Ð²Ð¸Ñ + user_count_after: пользователей + user_count_before: ЗдеÑÑŒ живет + accounts: + follow: ПодпиÑатьÑÑ + followers: ПодпиÑчики + following: ПодпиÑан(а) + nothing_here: ЗдеÑÑŒ ничего нет! + people_followed_by: Люди, на которых подпиÑан(а) %{name} + people_who_follow: ПодпиÑчики %{name} + posts: ПоÑты + remote_follow: ПодпиÑатьÑÑ Ð½Ð° удаленном узле + unfollow: ОтпиÑатьÑÑ + application_mailer: + settings: 'Изменить наÑтройки e-mail: %{link}' + signature: Ð£Ð²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Mastodon от %{instance} + view: 'View:' + applications: + invalid_url: Введенный 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}Ñек" + exports: + blocks: Ð’Ñ‹ заблокировали + csv: CSV + follows: ПодпиÑки + storage: Ваш медиаконтент + generic: + changes_saved_msg: Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑƒÑпешно Ñохранены! + powered_by: работает на %{link} + save_changes: Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ + validation_errors: + one: Что-то здеÑÑŒ не так! ПожалуйÑта, прочитайте об ошибке ниже + other: Что-то здеÑÑŒ не так! ПожалуйÑта, прочитайте о %{count} ошибках ниже + imports: + preface: Ð’Ñ‹ можете загрузить некоторые данные, например, ÑпиÑки людей, на которых Ð’Ñ‹ подпиÑаны или которых блокируете, в Ваш аккаунт на Ñтом узле из файлов, ÑкÑпортированных Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ узла. + success: Ваши данные были уÑпешно загружены и будут обработаны Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾Ð¹ ÑкороÑтью + types: + blocking: СпиÑок блокируемых + following: СпиÑок подпиÑок + upload: Загрузить + landing_strip_html: <strong>%{name}</strong> - пользователь на <strong>%{domain}</strong>. Ð’Ñ‹ можете подпиÑатьÑÑ Ð½Ð° него/нее и общатьÑÑ Ñ Ð½Ð¸Ð¼/ней, еÑли у Ð’Ð°Ñ ÐµÑть аккаунт на любом узле общей Ñети. ЕÑли у Ð’Ð°Ñ ÐµÐ³Ð¾ нет, вы можете <a href="%{sign_up_path}">зарегиÑтрироватьÑÑ Ð·Ð´ÐµÑÑŒ</a>. + notification_mailer: + digest: + body: 'Кратко о пропущенном Вами на %{instance} Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ поÑледнего захода %{since}:' + mention: "%{name} упомÑнул(а) Ð’Ð°Ñ Ð²:" + new_followers_summary: + one: У Ð’Ð°Ñ Ð¿Ð¾ÑвилÑÑ Ð½Ð¾Ð²Ñ‹Ð¹ подпиÑчик! Ура! + other: У Ð’Ð°Ñ Ð¿Ð¾ÑвилоÑÑŒ %{count} новых подпиÑчика(-ов)! Отлично! + subject: + one: "1 новое уведомление Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ поÑледнего захода \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: Пред + remote_follow: + acct: Введите username@domain, откуда Ð’Ñ‹ хотите подпиÑатьÑÑ + missing_resource: ПоиÑк требуемого Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ URL Ð´Ð»Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ аккаунта завершилÑÑ Ð½ÐµÑƒÐ´Ð°Ñ‡ÐµÐ¹ + proceed: Продолжить подпиÑку + prompt: 'Ð’Ñ‹ ходите подпиÑатьÑÑ Ð½Ð°:' + settings: + authorized_apps: Ðвторизованные Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ + back: Ðазад в Mastodon + edit_profile: Изменить профиль + export: ÐкÑпорт данных + import: Импорт + preferences: ÐаÑтройки + settings: Опции + two_factor_auth: Ð”Ð²ÑƒÑ…Ñ„Ð°ÐºÑ‚Ð¾Ñ€Ð½Ð°Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ + statuses: + open_in_web: Открыть в WWW + 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_auth: + description_html: При включении <strong>двухфакторной аутентификации</strong>, вход потребует от Ð’Ð°Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð’Ð°ÑˆÐµÐ³Ð¾ телефона, который Ñгенерирует входные токены. + disable: Отключить + enable: Включить + instructions_html: "<strong>ОтÑканируйте Ñтот QR-код Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Google Authenticator или другого подобного Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð° Вашем телефоне</strong>. С Ñтого момента приложение будет генерировать токены, которые будет необходимо ввеÑти Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°." + plaintext_secret_html: 'Секрет открытым текÑтом: <samp>%{secret}</samp>' + warning: ЕÑли ÑÐµÐ¹Ñ‡Ð°Ñ Ñƒ Ð’Ð°Ñ Ð½Ðµ получаетÑÑ Ð½Ð°Ñтроить аутентификатор, нажмите "отключить", иначе Ð’Ñ‹ не Ñможете войти! + users: + invalid_email: Введенный e-mail неверен + invalid_otp_token: Введен неверный код + will_paginate: + page_gap: "…" diff --git a/config/locales/simple_form.ru.yml b/config/locales/simple_form.ru.yml new file mode 100644 index 0000000000..6f4873bfd2 --- /dev/null +++ b/config/locales/simple_form.ru.yml @@ -0,0 +1,46 @@ +--- +ru: + simple_form: + hints: + defaults: + avatar: PNG, GIF или JPG. МакÑимально 2MB. Будет уменьшено до 120x120px + display_name: МакÑимально 30 Ñимволов + header: PNG, GIF или JPG. МакÑимально 2MB. Будет уменьшено до 700x335px + locked: Потребует от Ð’Ð°Ñ Ñ€ÑƒÑ‡Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñчиков, изменит приватноÑть поÑтов по умолчанию на "только Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñчиков" + note: МакÑимально 160 Ñимволов + imports: + data: Файл CSV, ÑкÑпортированный Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ узла Mastodon + labels: + defaults: + avatar: Ðватар + confirm_new_password: Повторите новый пароль + confirm_password: Повторите пароль + current_password: Текущий пароль + data: Данные + display_name: Показываемое Ð¸Ð¼Ñ + email: ÐÐ´Ñ€ÐµÑ e-mail + header: Заголовок + locale: Язык + locked: Сделать аккаунт приватным + new_password: Ðовый пароль + note: О Ð’Ð°Ñ + otp_attempt: Двухфакторный код + password: Пароль + setting_default_privacy: ПриватноÑть поÑтов + type: Тип импорта + username: Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ + interactions: + must_be_follower: Заблокировать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ от подпиÑчиков + must_be_following: Заблокировать ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚ людей, на которых Ð’Ñ‹ не подпиÑаны + notification_emails: + digest: ПриÑылать дайджеÑÑ‚ по e-mail + favourite: УведомлÑть по e-mail, когда кому-то нравитÑÑ Ð’Ð°Ñˆ ÑÑ‚Ð°Ñ‚ÑƒÑ + follow: УведомлÑть по e-mail, когда кто-то подпиÑалÑÑ Ð½Ð° Ð’Ð°Ñ + follow_request: УведомлÑть по e-mail, когда кто-то запрашивает разрешение на подпиÑку + mention: УведомлÑть по e-mail, когда кто-то упомÑнул Ð’Ð°Ñ + reblog: УведомлÑть по e-mail, когда кто-то продвинул Ваш ÑÑ‚Ð°Ñ‚ÑƒÑ + 'no': 'Ðет' + required: + mark: "*" + text: обÑзательно + 'yes': 'Да' -- GitLab