Russian translation (#400)

* Added ru.json based on en-US.json

* Enabled ru translation

* Modified i18n readme
This commit is contained in:
nxblnd 2022-06-08 21:20:53 +03:00 committed by GitHub
parent 6fac29b4db
commit 1765ca67b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 245 additions and 0 deletions

View File

@ -139,6 +139,7 @@ class AppTab extends React.Component<AppTabProps, AppTabState> {
{ key: "sv", text: "Svenska" },
{ key: "tr", text: "Türkçe" },
{ key: "uk", text: "Українська" },
{ key: "ru", text: "Русский" },
{ key: "ko", text: "한글" },
{ key: "ja", text: "日本語" },
{ key: "zh-CN", text: "中文(简体)" },

View File

@ -19,5 +19,6 @@ Currently, Fluent Reader supports the following languages.
| it | Italiano | [@andrewasd](https://github.com/andrewasd) |
| pt-BR | Português do Brasil | [@fabianski7](https://github.com/fabianski7) |
| ko | 한글 | [@1drive](https://github.com/1drive) |
| ru | Russian | [@nxblnd](https://github.com/nxblnd) |
Refer to the repo of [react-intl-universal](https://github.com/alibaba/react-intl-universal) to get started on internationalization.

View File

@ -10,6 +10,7 @@ import sv from "./sv.json"
import tr from "./tr.json"
import it from "./it.json"
import uk from "./uk.json"
import ru from "./ru.json"
import pt_BR from "./pt-BR.json"
import fi_FI from "./fi-FI.json"
import ko from "./ko.json"
@ -27,6 +28,7 @@ const locales = {
"tr": tr,
"it": it,
"uk": uk,
"ru": ru,
"pt-BR": pt_BR,
"fi-FI": fi_FI,
"ko": ko,

241
src/scripts/i18n/ru.json Normal file
View File

@ -0,0 +1,241 @@
{
"allArticles": "Все статьи",
"add": "Добавить",
"create": "Создать",
"icon": "Иконка",
"name": "Название",
"openExternal": "Открыть внешней программой",
"emptyName": "Это поле не может быть пустым.",
"emptyField": "Это поле не может быть пустым.",
"edit": "Редактировать",
"delete": "Удалить",
"followSystem": "Как в системе",
"more": "Ещё",
"close": "Закрыть",
"search": "Поиск",
"loadMore": "Загрузить ещё",
"dangerButton": "Подтвердить {action}?",
"confirmMarkAll": "Вы действительно хотите отметить все статьи на этой странице прочитанными?",
"confirm": "Подтвердить",
"cancel": "Отмена",
"default": "По умолчанию",
"time": {
"now": "сейчас",
"m": "м",
"h": "ч",
"d": "д",
"minute": "{m, plural, =1 {# минута} other {# минут}}",
"hour": "{h, plural, =1 {# час} other {# часов}}",
"day": "{d, plural, =1 {# день} other {# дней}}"
},
"log": {
"empty": "Нет уведомлений",
"fetchFailure": "Не удалось загрузить из источника \"{name}\".",
"fetchSuccess": "Успешно {count, plural, =1 {получена # статья} other {получены # статей}}.",
"networkError": "Ошибка сети.",
"parseError": "Возникла ошибка при разборе XML.",
"syncFailure": "Не удалось синхронизировать с сервисом"
},
"nav": {
"menu": "Меню",
"refresh": "Обновить",
"markAllRead": "Отметить всё прочитанным",
"notifications": "Уведомления",
"view": "Вид",
"settings": "Настройки",
"minimize": "Свернуть",
"maximize": "Развернуть"
},
"menu": {
"close": "Закрыть меню",
"subscriptions": "Подписки"
},
"article": {
"error": "Не удалось загрузить статью.",
"reload": "Перезагрузить?",
"empty": "Нет статей",
"untitled": "(Без названия)",
"hide": "Спрятать статью",
"unhide": "Показать статью",
"markRead": "Отметить как прочитанное",
"markUnread": "Отметить как непрочитанное",
"markAbove": "Отметить выше как прочитанное",
"markBelow": "Отметить ниже как прочитанное",
"star": "В избранное",
"unstar": "Убрать из избранного",
"fontSize": "Размер шрифта",
"loadWebpage": "Загрузить веб-страницу",
"loadFull": "Загрузить полное содержимое",
"notify": "Уведомить, если получено в фоновом режиме",
"dontNotify": "Не уведомлять",
"textDir": "Направление текста",
"LTR": "Слева направо",
"RTL": "Справа налево",
"Vertical": "Вертикально",
"font": "Шрифт"
},
"context": {
"share": "Поделиться",
"read": "Читать",
"copyTitle": "Копировать заголовок",
"copyURL": "Копировать ссылку",
"copy": "Копировать",
"search": "Искать \"{text}\" в {engine}",
"view": "Вид",
"cardView": "Карточки",
"listView": "Список",
"magazineView": "Журнал",
"compactView": "Компактный",
"filter": "Фильтры",
"unreadOnly": "Только непрочитанные",
"starredOnly": "Только избранные",
"fullSearch": "Поиск по всему тексту",
"showHidden": "Показывать скрытые",
"manageSources": "Управление источниками",
"saveImageAs": "Сохранить изображение как …",
"copyImage": "Копировать изображение",
"copyImageURL": "Копировать ссылку на изображение",
"caseSensitive": "С учётом регистра",
"showCover": "Показать обложку",
"showSnippet": "Показать отрывок",
"fadeRead": "Высветлять прочитанные статьи"
},
"searchEngine": {
"name": "Поисковая система",
"google": "Google",
"bing": "Bing",
"baidu": "Baidu",
"duckduckgo": "DuckDuckGo"
},
"settings": {
"writeError": "Произошла ошибка при записи файла.",
"name": "Настройки",
"fetching": "Обновление источников. Пожалуйста, подождите.",
"exit": "Выйти из настроек",
"sources": "Источники",
"grouping": "Группы",
"rules": "Правила",
"service": "Сервисы",
"app": "Предпочтения",
"about": "О программе",
"version": "Версия",
"shortcuts": "Сочетания клавиш",
"openSource": "Открытый исходный код",
"feedback": "Обратная связь"
},
"sources": {
"serviceWarning": "Импортированные или добавленные здесь источники не будут синхронизированы с Вашим сервисом.",
"serviceManaged": "Этот источник управляется Вашим сервисом.",
"untitled": "Источник",
"errorAdd": "Возникла ошибка при добавлении источника.",
"errorParse": "Возникла ошибка при разборе OPML файла.",
"errorParseHint": "Пожалуйста, удостоверьтесь что файл не повреждён и использует кодировку UTF-8.",
"errorImport": "Ошибка импорта {count, plural, =1 {# источника} other {# источников}}.",
"exist": "Этот источник уже существует.",
"opmlFile": "OPML файл",
"name": "Название источника",
"editName": "Изменить название",
"fetchFrequency": "Ограничение частоты обновлений",
"unlimited": "Без ограничений",
"openTarget": "Метод открытия статей по умолчанию",
"delete": "Удалить источник",
"add": "Добавить источник",
"import": "Импорт",
"export": "Экспорт",
"rssText": "Полный текст RSS",
"loadWebpage": "Загрузить веб-страницу",
"inputUrl": "Введите URL",
"badIcon": "Недопустимая иконка",
"badUrl": "Недопустимый URL",
"deleteWarning": "Источник и все сохранённые статьи будут удалены.",
"selected": "Выберите источник",
"selectedMulti": "Выберите несколько источников"
},
"groups": {
"exist": "Эта группа уже существует.",
"type": "Тип",
"group": "Группа",
"source": "Источник",
"capacity": "Ёмкость",
"exitGroup": "Назад к группам",
"deleteSource": "Удалить из группы",
"sourceHint": "Перетаскивайте источники для изменения порядка.",
"create": "Создать группу",
"selectedGroup": "Выбранная группа",
"selectedSource": "Выбранный источник",
"enterName": "Введите название",
"editName": "Изменить название",
"deleteGroup": "Удалить группу",
"chooseGroup": "Выбрать группу",
"addToGroup": "Добавить в …",
"groupHint": "Сделайте двойной щелчок по группе для редактирования источников. Перетаскивайте для изменения порядка."
},
"rules": {
"intro": "Автоматически отмечать статьи или отправлять уведомления с помощью регулярных выражений.",
"help": "Узнать больше",
"source": "Источник",
"selectSource": "Выбрать источник",
"new": "Новое правило",
"if": "Если",
"then": "То",
"title": "Название",
"content": "Содержимое",
"fullSearch": "Название или содержимое",
"creator": "Автор",
"match": "совпадает",
"notMatch": "не совпадает",
"regex": "Регулярное выражение",
"badRegex": "Недопустимое регулярное выражение.",
"action": "Действия",
"selectAction": "Выберите действия",
"hint": "Правила применяются по порядку. Перетащите для изменения порядка.",
"test": "Проверить правила"
},
"service": {
"intro": "Синхронизация между устройствами с помощью RSS сервисов.",
"select": "Выберите сервис",
"suggest": "Предложить новый сервис",
"overwriteWarning": "Локальные источники будут удалены если они существуют в сервисе.",
"groupsWarning": "Группы не синхронизируются автоматически через сервис.",
"rateLimitWarning": "Чтобы избежать ограничения частоты запросов, Вам нужно создать свой ключ API.",
"removeAd": "Убрать рекламу",
"endpoint": "Endpoint",
"username": "Имя пользователя",
"password": "Пароль",
"unchanged": "Без изменений",
"fetchLimit": "Ограничение синхронизации",
"fetchLimitNum": "{count, plural, =1 {# последняя статья} other {# последних статей}}",
"importGroups": "Импортировать группы",
"failure": "Нет подключения к сервису",
"failureHint": "Please check the service configuration or network status.",
"fetchUnlimited": "Без ограничений (не рекомендуется)",
"exportToLite": "Экспорт в Fluent Reader Lite"
},
"app": {
"cleanup": "Очистка",
"cache": "Очистить кэш",
"cacheSize": "Закэшировано {size} данных",
"deleteChoices": "Удалить статьи старше … дней",
"confirmDelete": "Удалить",
"daysAgo": "{days, plural, =1 {# дня} other {# дней}} назад",
"deleteAll": "Удалить все статьи",
"calculatingSize": "Вычисление размера…",
"itemSize": "Статьями занято примерно {size} пространства локального хранилища",
"confirmImport": "Вы действительно хотите импортировать данные из файла резервной копии? Все текущие данные будут удалены.",
"data": "Данные приложения",
"backup": "Резервная копия",
"restore": "Восстановление",
"frData": "Данные Fluent Reader",
"language": "Язык интерфейса",
"theme": "Тема",
"lightTheme": "Светлая",
"darkTheme": "Тёмная",
"enableProxy": "Включить прокси",
"badUrl": "Недопустимый URL",
"pac": "PAC Адрес",
"setPac": "Установить PAC",
"pacHint": "Для Socks прокси рекомендуется, чтобы PAC возвращал \"SOCKS5\" для DNS на стороне прокси. Выключение прокси требует перезапуска.",
"fetchInterval": "Интервал автоматического обновления",
"never": "Никогда"
}
}