logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: aa7bf1515c4d00baa47217336a3a7191b7f15041
parent: 4f781b17cc0644a1e464dc8fd968d393ccb9b605
Author: Svetlozar Todorov <svetlik@users.noreply.github.com>
Date:   Thu, 13 Apr 2017 14:16:28 +0300

Fix #624 - Add localization for Bulgarian (#645)

* Add translation files and declarations for Bulgarian

* Add a bunch of translations to bg.jsx

* Add rest of translations to bg.jsx

* Add devise translations

* Fix devise translations

Diffstat:

Mapp/assets/javascripts/components/containers/mastodon.jsx5++---
Aapp/assets/javascripts/components/locales/bg.jsx68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mapp/assets/javascripts/components/locales/index.jsx3++-
Mapp/helpers/settings_helper.rb1+
Mconfig/application.rb1+
Aconfig/locales/bg.yml169+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfig/locales/devise.bg.yml61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfig/locales/doorkeeper.bg.yml113+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aconfig/locales/simple_form.bg.yml46++++++++++++++++++++++++++++++++++++++++++++++
9 files changed, 463 insertions(+), 4 deletions(-)

diff --git a/app/assets/javascripts/components/containers/mastodon.jsx b/app/assets/javascripts/components/containers/mastodon.jsx @@ -52,8 +52,8 @@ import no from 'react-intl/locale-data/no'; import ru from 'react-intl/locale-data/ru'; import uk from 'react-intl/locale-data/uk'; import zh from 'react-intl/locale-data/zh'; +import bg from 'react-intl/locale-data/bg'; import { localeData as zh_hk } from '../locales/zh-hk'; - import getMessagesForLocale from '../locales'; import { hydrateStore } from '../actions/store'; import createStream from '../stream'; @@ -66,7 +66,6 @@ const browserHistory = useRouterHistory(createBrowserHistory)({ basename: '/web' }); - addLocaleData([ ...en, ...de, @@ -82,9 +81,9 @@ addLocaleData([ ...uk, ...zh, ...zh_hk, + ...bg, ]); - const Mastodon = React.createClass({ propTypes: { diff --git a/app/assets/javascripts/components/locales/bg.jsx b/app/assets/javascripts/components/locales/bg.jsx @@ -0,0 +1,68 @@ +const bg = { + "column_back_button.label": "Назад", + "lightbox.close": "Затвори", + "loading_indicator.label": "Зареждане...", + "status.mention": "Споменаване", + "status.delete": "Изтриване", + "status.reply": "Отговор", + "status.reblog": "Споделяне", + "status.favourite": "Предпочитани", + "status.reblogged_by": "{name} сподели", + "status.sensitive_warning": "Деликатно съдържание", + "status.sensitive_toggle": "Покажи", + "video_player.toggle_sound": "Звук", + "account.mention": "Споменаване", + "account.edit_profile": "Редактирай профила си", + "account.unblock": "Не блокирай", + "account.unfollow": "Не следвай", + "account.block": "Блокирай", + "account.follow": "Последвай", + "account.posts": "Публикации", + "account.follows": "Следвам", + "account.followers": "Последователи", + "account.follows_you": "Твой последовател", + "account.requested": "В очакване на одобрение", + "getting_started.heading": "Първи стъпки", + "getting_started.about_addressing": "Можеш да последваш потребител, ако знаеш потребителското му име и домейна, на който се намира, като в полето за търсене ги въведеш по този начин: име@домейн", + "getting_started.about_shortcuts": "Ако с търсения потребител се намирате на един и същ домейн, достатъчно е да въведеш само името. Същото важи и за споменаване на хора в публикации.", + "getting_started.about_developer": "Можеш да потърсиш разработчика на този проект като: Gargron@mastodon.social", + "getting_started.open_source_notice": "Mastodon е софтуер с отворен код. Можеш да помогнеш или да докладваш за проблеми в Github: {github}.", + "column.home": "Начало", + "column.mentions": "Споменавания", + "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 {that server} other {those servers}}, че няма да издаде твоята публикация?", + "compose_form.unlisted": "Не показвай в публичния канал", + "navigation_bar.edit_profile": "Редактирай профил", + "navigation_bar.preferences": "Предпочитания", + "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 en; diff --git a/app/assets/javascripts/components/locales/index.jsx b/app/assets/javascripts/components/locales/index.jsx @@ -11,7 +11,7 @@ import eo from './eo'; import ru from './ru'; import ja from './ja'; import zh_hk from './zh-hk'; - +import bg from './bg'; const locales = { en, @@ -27,6 +27,7 @@ const locales = { ru, ja, 'zh-HK': zh_hk, + bg, }; export default function getMessagesForLocale (locale) { diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb @@ -16,6 +16,7 @@ module SettingsHelper ja: '日本語', 'zh-CN': '简体中文', 'zh-HK': '繁體中文(香港)', + bg: 'Български', }.freeze def human_locale(locale) diff --git a/config/application.rb b/config/application.rb @@ -27,6 +27,7 @@ module Mastodon config.i18n.available_locales = [ :en, + :bg, :de, :eo, :es, diff --git a/config/locales/bg.yml b/config/locales/bg.yml @@ -0,0 +1,169 @@ +--- +bg: + about: + about_mastodon: Mastodon е <em>безплатен</em> сървър с <em>отворен код</em> за социални мрежи. Като <em>децентрализирана</em> алтернатива на комерсиалните платформи, той позволява избягването на риска от монополизация на твоята комуникация от единични компании. Изберете си сървър, на който се доверявате, и ще можете да контактувате с всички останали. Всеки може да пусне 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: 'Преглед:' + 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: Нещо все още не е наред! Моля, прегледай грешките по-долу + imports: + preface: Можеш да импортираш някои данни, като например всички хора, които следваш или блокираш в акаунта си на тази инстанция, от файлове, създадени чрез експорт в друга инстанция. + success: Твоите данни бяха успешно качени и ще бъдат обработени впоследствие. + types: + blocking: Списък на блокираните + following: Списък на последователите + upload: Качване + landing_strip_html: <strong>%{name}</strong> е потребител от <strong>%{domain}</strong>. Можеш да ги следваш, или да контактуваш с тях, ако имаш акаунт където и да е из федерираната вселена на Mastodon. Ако нямаш акаунт, можеш да си <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: Въведи потребителско_име@домейн, от които искаш да следваш + missing_resource: Неуспешно търсене на нужния URL за пренасочване за твоя акаунт + proceed: Започни следване + prompt: 'Ще последваш:' + settings: + authorized_apps: Упълномощени приложения + back: Обратно към Mastodon + edit_profile: Редактирай профила си + export: Експортиране на данни + import: Импортиране + preferences: Предпочитания + settings: Настройки + two_factor_auth: Двустепенно удостоверяване + 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: "%d %b, %Y, %H:%M" + two_factor_auth: + description_html: При активация на <strong>двустепенно удостоверяване</strong>, за да влезеш в приложението, ще трябва да използваш телефона си. През него ще се генерира код, който да въвеждаш при влизане. + disable: Деактивирай + enable: Активирай + instructions_html: "<strong>Сканирай този QR код с Google Authenticator или подобно приложение от своя телефон</strong>. Oтсега нататък, това приложение ще генерира код, който ще трябва да въвеждаш при всяко влизане." + plaintext_secret_html: "Тайна в обикновен текст: <samp>%{secret}</samp>" + warning: Ако не можеш да настроиш приложението за удостверяване сега, избери "Деактивирай". В противен случай, няма да можеш да влезеш в акаунта си. + users: + invalid_email: E-mail адресът е невалиден + invalid_otp_token: Невалиден код + will_paginate: + page_gap: "&hellip;" + media_attachments: + validations: + too_many: Не мога да прикача повече от 4 файла + images_and_video: Не мога да прикача видеоклип към публикация, която вече съдържа изображения diff --git a/config/locales/devise.bg.yml b/config/locales/devise.bg.yml @@ -0,0 +1,61 @@ +--- +bg: + devise: + confirmations: + confirmed: Твоят профил беше успешно потвърден. Влизането в профила е успешно. + send_instructions: Ще получиш писмо с инструкции как да потвърдиш своя профил до няколко минути. + send_paranoid_instructions: Ако твоят имейл адрес съществува в базата ни, ще получиш там инструкции как да потвърдиш своя профил. + failure: + already_authenticated: Вече си вътре в профила си. + inactive: Профилът ти все още не е активиран. + invalid: Невалиден имейл адрес или парола. + last_attempt: Разполагаш с още един опит преди профилът ти да бъде заключен. + locked: Профилът ти е заключен. + not_found_in_database: "Невалидни стойности за %{authentication_keys} или парола." + timeout: Сесията ти изтече, моля влез отново, за да продължиш. + unauthenticated: Преди да продължиш, трябва да влезеш в профила си или да се регистрираш. + unconfirmed: Преди да продължиш, трябва да потвърдиш регистрацията си. + mailer: + confirmation_instructions: + subject: 'Mastodon: Инструкции за потвърждаване' + password_change: + subject: 'Mastodon: Паролата е променена' + reset_password_instructions: + subject: 'Инструкции за смяна на паролата' + unlock_instructions: + subject: 'Инструкции за отключване' + omniauth_callbacks: + failure: "Не успяхме да те упълномощим чрез %{kind}, защото \"%{reason}\"." + success: "Успешно упълномощаване чрез %{kind} профил." + passwords: + no_token: Може да достъпваш тази страница само от имейл за промяна на паролата. Ако тази страница е отворена от такъв имейл, увери се, че използваш целия URL-адрес, който сме ти изпратили. + 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.bg.yml b/config/locales/doorkeeper.bg.yml @@ -0,0 +1,113 @@ +--- +bg: + 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: URL за обратно повикване + name: Име + new: Ново приложение + title: Твоите приложения + new: + title: Ново приложение + show: + actions: Действия + application_id: Идентификатор на приложението + callback_urls: URL-и за обратно повикване + 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: Resource Owner Password Credentials предизвика грешка, заради това, че настройките за 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: Намирането на Resource Owner се провали поради липса на конфигурация на 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/simple_form.bg.yml b/config/locales/simple_form.bg.yml @@ -0,0 +1,46 @@ +--- +bg: + simple_form: + hints: + defaults: + avatar: PNG, GIF или JPG. До 2MB. Ще бъде смалена до 120x120 пиксела + display_name: До 30 символа + header: PNG, GIF или JPG. До 2MB. Ще бъде смалена до 700x335 пиксела + 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: Изпращай извлечения на съобщенията + favourite: Изпращай e-mail, когато някой хареса твоя публикация + follow: Изпращай e-mail, когато някой те последва + follow_request: Изпращай e-mail, когато някой пожелае да те последва + mention: Изпращай e-mail, когато някой те спомене + reblog: Изпращай e-mail, когато някой сподели твоя публикация + 'no': 'Не' + required: + mark: "*" + text: задължително + 'yes': 'Да'