From 9f84f4ea052bd64e4989c1842736f956c149d18c Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Thu, 6 Sep 2018 19:39:56 +0300
Subject: [PATCH] seems to be working

---
 src/i18n/messages.js | 174 +------------------------------------------
 src/i18n/ru.json     | 170 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 174 insertions(+), 170 deletions(-)
 create mode 100644 src/i18n/ru.json

diff --git a/src/i18n/messages.js b/src/i18n/messages.js
index 42e7e9d4..5119a8a5 100644
--- a/src/i18n/messages.js
+++ b/src/i18n/messages.js
@@ -1,3 +1,6 @@
+// sed command for converting currently formatted JS to JSON:
+// sed -i -e "s/'//gm" -e 's/"/\\"/gm' -re 's/^( +)(.+?): ((.+?))?(,?)(\{?)$/\1"\2": "\4"/gm' -e 's/\"\{\"/{/g' -e 's/,"$/",/g' file.json
+
 const de = {
   chat: {
     title: 'Chat'
@@ -1599,176 +1602,7 @@ const pt = {
   }
 }
 
-const ru = {
-  chat: {
-    title: 'Чат'
-  },
-  nav: {
-    chat: 'Локальный чат',
-    timeline: 'Лента',
-    mentions: 'Упоминания',
-    public_tl: 'Публичная лента',
-    twkn: 'Федеративная лента'
-  },
-  user_card: {
-    follows_you: 'Читает вас',
-    following: 'Читаю',
-    follow: 'Читать',
-    blocked: 'Заблокирован',
-    block: 'Заблокировать',
-    statuses: 'Статусы',
-    mute: 'Игнорировать',
-    muted: 'Игнорирую',
-    followers: 'Читатели',
-    followees: 'Читаемые',
-    per_day: 'в день',
-    remote_follow: 'Читать удалённо'
-  },
-  timeline: {
-    show_new: 'Показать новые',
-    error_fetching: 'Ошибка при обновлении',
-    up_to_date: 'Обновлено',
-    load_older: 'Загрузить старые статусы',
-    conversation: 'Разговор',
-    collapse: 'Свернуть',
-    repeated: 'повторил(а)',
-    no_retweet_hint: 'Пост помечен как "только для подписчиков" или "личное" и поэтому не может быть повторён'
-  },
-  settings: {
-    general: 'Общие',
-    user_settings: 'Настройки пользователя',
-    name_bio: 'Имя и описание',
-    name: 'Имя',
-    bio: 'Описание',
-    avatar: 'Аватар',
-    current_avatar: 'Текущий аватар',
-    set_new_avatar: 'Загрузить новый аватар',
-    profile_banner: 'Баннер профиля',
-    current_profile_banner: 'Текущий баннер профиля',
-    set_new_profile_banner: 'Загрузить новый баннер профиля',
-    profile_background: 'Фон профиля',
-    set_new_profile_background: 'Загрузить новый фон профиля',
-    settings: 'Настройки',
-    theme: 'Тема',
-    export_theme: 'Сохранить Тему',
-    import_theme: 'Загрузить Тему',
-    presets: 'Пресеты',
-    theme_help: 'Используйте шестнадцатеричные коды цветов (#rrggbb) для настройки темы.',
-    radii_help: 'Скругление углов элементов интерфейса (в пикселях)',
-    background: 'Фон',
-    foreground: 'Передний план',
-    text: 'Текст',
-    links: 'Ссылки',
-    cBlue: 'Ответить, читать',
-    cRed: 'Отменить',
-    cOrange: 'Нравится',
-    cGreen: 'Повторить',
-    btnRadius: 'Кнопки',
-    inputRadius: 'Поля ввода',
-    panelRadius: 'Панели',
-    avatarRadius: 'Аватары',
-    avatarAltRadius: 'Аватары в уведомлениях',
-    tooltipRadius: 'Всплывающие подсказки/уведомления',
-    attachmentRadius: 'Прикреплённые файлы',
-    filtering: 'Фильтрация',
-    filtering_explanation: 'Все статусы, содержащие данные слова, будут игнорироваться, по одному в строке',
-    attachments: 'Вложения',
-    hide_attachments_in_tl: 'Прятать вложения в ленте',
-    hide_attachments_in_convo: 'Прятать вложения в разговорах',
-    stop_gifs: 'Проигрывать GIF анимации только при наведении',
-    nsfw_clickthrough: 'Включить скрытие NSFW вложений',
-    autoload: 'Включить автоматическую загрузку при прокрутке вниз',
-    streaming: 'Включить автоматическую загрузку новых сообщений при прокрутке вверх',
-    pause_on_unfocused: 'Приостановить загрузку когда вкладка не в фокусе',
-    loop_video: 'Зациливать видео',
-    loop_video_silent_only: 'Зацикливать только беззвучные видео (т.е. "гифки" с Mastodon)',
-    reply_link_preview: 'Включить предварительный просмотр ответа при наведении мыши',
-    replies_in_timeline: 'Ответы в ленте',
-    reply_visibility_all: 'Показывать все ответы',
-    reply_visibility_following: 'Показывать только ответы мне и тех на кого я подписан',
-    reply_visibility_self: 'Показывать только ответы мне',
-    notification_visibility: 'Показывать уведомления',
-    notification_visibility_likes: 'Лайки',
-    notification_visibility_mentions: 'Упоминания',
-    notification_visibility_repeats: 'Повторы',
-    notification_visibility_follows: 'Подписки',
-    follow_import: 'Импортировать читаемых',
-    import_followers_from_a_csv_file: 'Импортировать читаемых из файла .csv',
-    follows_imported: 'Список читаемых импортирован. Обработка займёт некоторое время..',
-    follow_import_error: 'Ошибка при импортировании читаемых.',
-    delete_account: 'Удалить аккаунт',
-    delete_account_description: 'Удалить ваш аккаунт и все ваши сообщения.',
-    delete_account_instructions: 'Введите ваш пароль в поле ниже для подтверждения удаления.',
-    delete_account_error: 'Возникла ошибка в процессе удаления вашего аккаунта. Если это повторяется, свяжитесь с администратором вашего сервера.',
-    follow_export: 'Экспортировать читаемых',
-    follow_export_processing: 'Ведётся обработка, скоро вам будет предложено загрузить файл',
-    follow_export_button: 'Экспортировать читаемых в файл .csv',
-    change_password: 'Сменить пароль',
-    current_password: 'Текущий пароль',
-    new_password: 'Новый пароль',
-    confirm_new_password: 'Подтверждение нового пароля',
-    changed_password: 'Пароль изменён успешно.',
-    change_password_error: 'Произошла ошибка при попытке изменить пароль.',
-    lock_account_description: 'Аккаунт доступен только подтверждённым подписчикам',
-    limited_availability: 'Не доступно в вашем браузере',
-    profile_tab: 'Профиль',
-    security_tab: 'Безопасность',
-    data_import_export_tab: 'Импорт / Экспорт данных',
-    collapse_subject: 'Сворачивать посты с темой',
-    interfaceLanguage: 'Язык интерфейса'
-  },
-  notifications: {
-    notifications: 'Уведомления',
-    read: 'Прочесть',
-    followed_you: 'начал(а) читать вас',
-    favorited_you: 'нравится ваш статус',
-    repeated_you: 'повторил(а) ваш статус',
-    broken_favorite: 'Неизвестный статус, ищем...',
-    load_older: 'Загрузить старые уведомления'
-  },
-  login: {
-    login: 'Войти',
-    username: 'Имя пользователя',
-    placeholder: 'e.c. lain',
-    password: 'Пароль',
-    register: 'Зарегистрироваться',
-    logout: 'Выйти'
-  },
-  registration: {
-    registration: 'Регистрация',
-    fullname: 'Отображаемое имя',
-    email: 'Email',
-    bio: 'Описание',
-    password_confirm: 'Подтверждение пароля',
-    token: 'Код приглашения'
-  },
-  post_status: {
-    posting: 'Отправляется',
-    content_warning: 'Тема (не обязательно)',
-    default: 'Что нового?',
-    account_not_locked_warning: 'Ваш аккаунт не {0}. Кто угодно может зафоловить вас чтобы прочитать посты только для подписчиков',
-    account_not_locked_warning_link: 'залочен',
-    direct_warning: 'Этот пост будет видет только упомянутым пользователям',
-    attachments_sensitive: 'Вложения содержат чувствительный контент',
-    scope: {
-      public: 'Публичный - этот пост виден всем',
-      unlisted: 'Непубличный - этот пост не виден на публичных лентах',
-      private: 'Для подписчиков - этот пост видят только подписчики',
-      direct: 'Личное - этот пост видят только те кто в нём упомянут'
-    }
-  },
-  finder: {
-    find_user: 'Найти пользователя',
-    error_fetching_user: 'Пользователь не найден'
-  },
-  general: {
-    submit: 'Отправить',
-    apply: 'Применить'
-  },
-  user_profile: {
-    timeline_title: 'Лента пользователя'
-  }
-}
+const ru = require('./ru.json')
 const nb = {
   chat: {
     title: 'Chat'
diff --git a/src/i18n/ru.json b/src/i18n/ru.json
new file mode 100644
index 00000000..52ea3a47
--- /dev/null
+++ b/src/i18n/ru.json
@@ -0,0 +1,170 @@
+{
+  "chat": {
+    "title": "Чат"
+  },
+  "nav": {
+    "chat": "Локальный чат",
+    "timeline": "Лента",
+    "mentions": "Упоминания",
+    "public_tl": "Публичная лента",
+    "twkn": "Федеративная лента"
+  },
+  "user_card": {
+    "follows_you": "Читает вас",
+    "following": "Читаю",
+    "follow": "Читать",
+    "blocked": "Заблокирован",
+    "block": "Заблокировать",
+    "statuses": "Статусы",
+    "mute": "Игнорировать",
+    "muted": "Игнорирую",
+    "followers": "Читатели",
+    "followees": "Читаемые",
+    "per_day": "в день",
+    "remote_follow": "Читать удалённо"
+  },
+  "timeline": {
+    "show_new": "Показать новые",
+    "error_fetching": "Ошибка при обновлении",
+    "up_to_date": "Обновлено",
+    "load_older": "Загрузить старые статусы",
+    "conversation": "Разговор",
+    "collapse": "Свернуть",
+    "repeated": "повторил(а)",
+    "no_retweet_hint": "Пост помечен как \"только для подписчиков\" или \"личное\" и поэтому не может быть повторён"
+  },
+  "settings": {
+    "general": "Общие",
+    "user_settings": "Настройки пользователя",
+    "name_bio": "Имя и описание",
+    "name": "Имя",
+    "bio": "Описание",
+    "avatar": "Аватар",
+    "current_avatar": "Текущий аватар",
+    "set_new_avatar": "Загрузить новый аватар",
+    "profile_banner": "Баннер профиля",
+    "current_profile_banner": "Текущий баннер профиля",
+    "set_new_profile_banner": "Загрузить новый баннер профиля",
+    "profile_background": "Фон профиля",
+    "set_new_profile_background": "Загрузить новый фон профиля",
+    "settings": "Настройки",
+    "theme": "Тема",
+    "export_theme": "Сохранить Тему",
+    "import_theme": "Загрузить Тему",
+    "presets": "Пресеты",
+    "theme_help": "Используйте шестнадцатеричные коды цветов (#rrggbb) для настройки темы.",
+    "radii_help": "Скругление углов элементов интерфейса (в пикселях)",
+    "background": "Фон",
+    "foreground": "Передний план",
+    "text": "Текст",
+    "links": "Ссылки",
+    "cBlue": "Ответить, читать",
+    "cRed": "Отменить",
+    "cOrange": "Нравится",
+    "cGreen": "Повторить",
+    "btnRadius": "Кнопки",
+    "inputRadius": "Поля ввода",
+    "panelRadius": "Панели",
+    "avatarRadius": "Аватары",
+    "avatarAltRadius": "Аватары в уведомлениях",
+    "tooltipRadius": "Всплывающие подсказки/уведомления",
+    "attachmentRadius": "Прикреплённые файлы",
+    "filtering": "Фильтрация",
+    "filtering_explanation": "Все статусы, содержащие данные слова, будут игнорироваться, по одному в строке",
+    "attachments": "Вложения",
+    "hide_attachments_in_tl": "Прятать вложения в ленте",
+    "hide_attachments_in_convo": "Прятать вложения в разговорах",
+    "stop_gifs": "Проигрывать GIF анимации только при наведении",
+    "nsfw_clickthrough": "Включить скрытие NSFW вложений",
+    "autoload": "Включить автоматическую загрузку при прокрутке вниз",
+    "streaming": "Включить автоматическую загрузку новых сообщений при прокрутке вверх",
+    "pause_on_unfocused": "Приостановить загрузку когда вкладка не в фокусе",
+    "loop_video": "Зациливать видео",
+    "loop_video_silent_only": "Зацикливать только беззвучные видео (т.е. \"гифки\" с Mastodon)",
+    "reply_link_preview": "Включить предварительный просмотр ответа при наведении мыши",
+    "replies_in_timeline": "Ответы в ленте",
+    "reply_visibility_all": "Показывать все ответы",
+    "reply_visibility_following": "Показывать только ответы мне и тех на кого я подписан",
+    "reply_visibility_self": "Показывать только ответы мне",
+    "notification_visibility": "Показывать уведомления",
+    "notification_visibility_likes": "Лайки",
+    "notification_visibility_mentions": "Упоминания",
+    "notification_visibility_repeats": "Повторы",
+    "notification_visibility_follows": "Подписки",
+    "follow_import": "Импортировать читаемых",
+    "import_followers_from_a_csv_file": "Импортировать читаемых из файла .csv",
+    "follows_imported": "Список читаемых импортирован. Обработка займёт некоторое время..",
+    "follow_import_error": "Ошибка при импортировании читаемых.",
+    "delete_account": "Удалить аккаунт",
+    "delete_account_description": "Удалить ваш аккаунт и все ваши сообщения.",
+    "delete_account_instructions": "Введите ваш пароль в поле ниже для подтверждения удаления.",
+    "delete_account_error": "Возникла ошибка в процессе удаления вашего аккаунта. Если это повторяется, свяжитесь с администратором вашего сервера.",
+    "follow_export": "Экспортировать читаемых",
+    "follow_export_processing": "Ведётся обработка, скоро вам будет предложено загрузить файл",
+    "follow_export_button": "Экспортировать читаемых в файл .csv",
+    "change_password": "Сменить пароль",
+    "current_password": "Текущий пароль",
+    "new_password": "Новый пароль",
+    "confirm_new_password": "Подтверждение нового пароля",
+    "changed_password": "Пароль изменён успешно.",
+    "change_password_error": "Произошла ошибка при попытке изменить пароль.",
+    "lock_account_description": "Аккаунт доступен только подтверждённым подписчикам",
+    "limited_availability": "Не доступно в вашем браузере",
+    "profile_tab": "Профиль",
+    "security_tab": "Безопасность",
+    "data_import_export_tab": "Импорт / Экспорт данных",
+    "collapse_subject": "Сворачивать посты с темой",
+    "interfaceLanguage": "Язык интерфейса"
+  },
+  "notifications": {
+    "notifications": "Уведомления",
+    "read": "Прочесть",
+    "followed_you": "начал(а) читать вас",
+    "favorited_you": "нравится ваш статус",
+    "repeated_you": "повторил(а) ваш статус",
+    "broken_favorite": "Неизвестный статус, ищем...",
+    "load_older": "Загрузить старые уведомления"
+  },
+  "login": {
+    "login": "Войти",
+    "username": "Имя пользователя",
+    "placeholder": "e.c. lain",
+    "password": "Пароль",
+    "register": "Зарегистрироваться",
+    "logout": "Выйти"
+  },
+  "registration": {
+    "registration": "Регистрация",
+    "fullname": "Отображаемое имя",
+    "email": "Email",
+    "bio": "Описание",
+    "password_confirm": "Подтверждение пароля",
+    "token": "Код приглашения"
+  },
+  "post_status": {
+    "posting": "Отправляется",
+    "content_warning": "Тема (не обязательно)",
+    "default": "Что нового?",
+    "account_not_locked_warning": "Ваш аккаунт не {0}. Кто угодно может зафоловить вас чтобы прочитать посты только для подписчиков",
+    "account_not_locked_warning_link": "залочен",
+    "direct_warning": "Этот пост будет видет только упомянутым пользователям",
+    "attachments_sensitive": "Вложения содержат чувствительный контент",
+    "scope": {
+      "public": "Публичный - этот пост виден всем",
+      "unlisted": "Непубличный - этот пост не виден на публичных лентах",
+      "private": "Для подписчиков - этот пост видят только подписчики",
+      "direct": "Личное - этот пост видят только те кто в нём упомянут"
+    }
+  },
+  "finder": {
+    "find_user": "Найти пользователя",
+    "error_fetching_user": "Пользователь не найден"
+  },
+  "general": {
+    "submit": "Отправить",
+    "apply": "Применить"
+  },
+  "user_profile": {
+    "timeline_title": "Лента пользователя"
+  }
+}