diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index b67a91a4..053c252e 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -8,74 +8,50 @@ "description": "Place holder text in the search input widget." }, "searchByQuery": "Поиск по запросу", - "@searchByQuery": {}, "viewarticle": "Просмотреть статью", - "@viewarticle": {}, - "display": "Вид", - "@display": {}, - "buildingfeed": "Собираем вашу ленту. Пожалуйста подождите…", - "@buildingfeed": {}, - "zoteroValidKey": "API-ключ сохранен!", + "display": "Отображение", + "buildingfeed": "Формируем вашу ленту. Пожалуйста, подождите…", + "zoteroValidKey": "API-ключ сохранён!", "@zoteroValidKey": { "description": "Snackbar shown when a valid Zotero API key has been saved." }, "saveSettings": "Сохранить настройки", - "@saveSettings": {}, - "setupAlmostSet": "Почти все готово!", - "@setupAlmostSet": {}, + "setupAlmostSet": "Всё готово!… Почти!", "welcomeWispar": "Добро пожаловать в Wispar!", - "@welcomeWispar": {}, - "appDescription": "Ваша открытая библиотека для ознакомления с научной литературой. Давайте быстро настроим приложение!", - "@appDescription": {}, - "setupInstitutionalAccess": "Настроить доступ к ресурсам учебного заведения", - "@setupInstitutionalAccess": {}, - "setupInstitutionalAccessLong": "Выберите EZproxy своё учебное заведение, чтобы получить доступ к их журнальным подпискам. Это устранит необходимость в использовании VPN или доступе на территории учреждения.", - "@setupInstitutionalAccessLong": {}, - "setupSelectInstitution": "Выберите своё учебное заведение", - "@setupSelectInstitution": {}, + "appDescription": "Ваше открытое приложение для отслеживания научной литературы. Давайте быстро настроим всё!", + "setupInstitutionalAccess": "Настроить институциональный доступ", + "setupInstitutionalAccessLong": "Выберите EZproxy вашего учреждения для доступа к их журнальным подпискам. Это устранит необходимость в VPN или локальном доступе.", + "setupSelectInstitution": "Выберите ваше учреждение", "setupSelectedInstitution": "Вы выбрали:", - "@setupSelectedInstitution": {}, "setupLinkZotero": "Связать с Zotero", - "@setupLinkZotero": {}, - "setupZoteroLong": "Отправляйте публикации непосредственно в свою библиотеку Zotero. Они будут добавлены в специальную коллекцию Wispar.", - "@setupZoteroLong": {}, - "setupLinkMyZotero": "Связать свою учетную запись Zotero", - "@setupLinkMyZotero": {}, + "setupZoteroLong": "Отправляйте публикации прямо в вашу библиотеку Zotero. Они попадут в специальную коллекцию Wispar.", + "setupLinkMyZotero": "Связать аккаунт Zotero", "setupOtherSettings": "Другие настройки", - "@setupOtherSettings": {}, - "setupOtherSettingsLong": "Дополнительные настройки доступны в меню настроек приложения. Достигните его с главного экрана, нажав меню троеточия в правом верхнем углу.", - "@setupOtherSettingsLong": {}, - "setupAlmostSetLong": "Далее мы перенесем вас на экран поиска, где вы можете подписаться на свои любимые журналы. Не забудьте переключить меню категорий с 'Статьи' на 'Журналы'.", - "@setupAlmostSetLong": {}, + "setupOtherSettingsLong": "Дополнительные настройки доступны в меню настроек приложения. Откройте его с главного экрана через меню троеточия в правом верхнем углу.", + "setupAlmostSetLong": "Далее вас ждет экран поиска, где можно подписаться на любимые журналы. Не забудьте переключить категории с 'Статьи' на 'Журналы'.", "skip": "Пропустить", - "@skip": {}, "getStarted": "Начать", - "@getStarted": {}, - "favorites": "Избранные", + "favorites": "Избранное", "@favorites": { "description": "The favorites menu button and the app bar title when in the favorites screen." }, "delete": "Удалить", - "@delete": {}, "downloads": "Скачанные", "@downloads": { "description": "The downloads menu button and the app bar title when in the downloads screen." }, - "downloadSuccessful": "Статья была скачана успешно!", - "@downloadSuccessful": {}, + "downloadSuccessful": "Статья успешно скачана!", "home": "Главная", "@home": { "description": "The home menu button and the app bar title when in the home screen." }, "downloadDeleted": "Статья удалена!", - "@downloadDeleted": {}, "noDownloads": "У вас нет скачанных файлов.", - "@noDownloads": {}, "settings": "Настройки", "@settings": { "description": "The settings option menu button and the app bar title when in the settings screen." }, - "journalLibraryEmpty": "Вы не подписаны на журналы. Используйте меню поиска, чтобы найти и подписаться на журналы.", + "journalLibraryEmpty": "Вы не подписаны ни на один журнал. Используйте поиск, чтобы найти и подписаться.", "@journalLibraryEmpty": { "description": "Message shown when the user is not following any journals." }, @@ -103,56 +79,33 @@ "@search": { "description": "Text shown inside the search screen app bar and for the seach button." }, - "filter": "Отфильтровать карточки публикаций", - "@filter": {}, - "filterResultsEmpty": "Нет публикаций, соответствующих вашему фильтру", - "@filterResultsEmpty": {}, - "filterDownloads": "Отфильтровать скачанные", - "@filterDownloads": {}, - "filterFavorites": "Отфильтровать избранные", - "@filterFavorites": {}, + "filter": "Фильтр карточек публикаций", + "filterResultsEmpty": "Нет публикаций по вашему фильтру", + "filterDownloads": "Фильтр скачанных", + "filterFavorites": "Фильтр избранного", "emptyDOIError": "Введите DOI", - "@emptyDOIError": {}, "searchByISSN": "Поиск по ISSN", - "@searchByISSN": {}, "searchByDOI": "Поиск по DOI", - "@searchByDOI": {}, - "queryHasNoNameError": "Вам необходимо ввести имя запроса для его сохранения.", - "@queryHasNoNameError": {}, + "queryHasNoNameError": "Введите имя запроса для сохранения.", "searchByTitle": "Поиск по названию", - "@searchByTitle": {}, - "emptySearchQuery": "Введите запрос для поиска", - "@emptySearchQuery": {}, - "journalSearchError": "Ошибка при попытке поиска журналов.", - "@journalSearchError": {}, + "emptySearchQuery": "Введите поисковый запрос", + "journalSearchError": "Ошибка поиска журналов.", "moreOptions": "Другие варианты", - "@moreOptions": {}, - "saveQuery": "Сохранить этот запрос", - "@saveQuery": {}, + "saveQuery": "Сохранить запрос", "queryName": "Имя запроса", - "@queryName": {}, "includeInFeed": "Включить в ленту", - "@includeInFeed": {}, "dateSaved": "Дата сохранения", - "@dateSaved": {}, "articles": "Статьи", "@articles": { "description": "As in scientific articles." }, "category": "Категория", - "@category": {}, "publisher": "Издатель", - "@publisher": {}, "publishedin": "Опубликовано в", - "@publishedin": {}, - "subjects": "Темы/Предметы", - "@subjects": {}, + "subjects": "Предметы", "latestpublications": "Последние публикации", - "@latestpublications": {}, "authors": "Авторы", - "@authors": {}, "abstract": "Аннотация", - "@abstract": {}, "publishedon": "Опубликовано {date}", "@publishedon": { "placeholders": { @@ -162,85 +115,60 @@ } } }, - "copydoi": "Скопировать DOI", - "@copydoi": {}, - "doicopied": "DOI скопирован в буфер обмена", + "copydoi": "Копировать DOI", + "doicopied": "DOI скопирован в буфер", "@doicopied": { "description": "Snackbar shown when the Copy DOI button is pressed." }, - "issnCopied": "ISSN скопирован в буфер обмена", - "@issnCopied": {}, - "apiQueryCopied": "Запрос API скопирован в буфер обмена", - "@apiQueryCopied": {}, + "issnCopied": "ISSN скопирован в буфер", + "apiQueryCopied": "Запрос API скопирован в буфер", "articleViewer": "Просмотрщик статей", - "@articleViewer": {}, - "openExternalBrowser": "Открыть в другом браузере", - "@openExternalBrowser": {}, + "openExternalBrowser": "Открыть во внешнем браузере", "errorOpenExternalBrowser": "Не удалось открыть ссылку в другом браузере", - "@errorOpenExternalBrowser": {}, "openExternalPdfApp": "Открыть в другой PDF-читалке", - "@openExternalPdfApp": {}, - "errorOpenExternalPdfApp": "Не удалось открыть PDF-файл в другой программе", - "@errorOpenExternalPdfApp": {}, + "errorOpenExternalPdfApp": "Не удалось открыть PDF в другом приложении", "favorite": "Избранное", - "@favorite": {}, - "favoriteadded": "Добавлено в избранные", + "favoriteadded": "Добавлено в избранное", "@favoriteadded": { "description": "Snackbar shown when an article is added to the user's favorites." }, - "favoriteremoved": "Удалено из избранных", + "favoriteremoved": "Удалено из избранного", "@favoriteremoved": { "description": "Snackbar shown when an article is removed from the user's favorites." }, "searchresults": "Результаты поиска", - "@searchresults": {}, "noresultsfound": "Ничего не найдено.", - "@noresultsfound": {}, - "noSavedQueries": "Нет сохраненных запросов.", - "@noSavedQueries": {}, - "abstractunavailable": "Аннотация недоступна. Издатель не предоставляет аннотации Crossref. Полный текст все еще доступен.", + "noSavedQueries": "Нет сохранённых запросов.", + "abstractunavailable": "Аннотация недоступна. Издатель не предоставляет аннотации Crossref. Полный текст всё равно доступен.", "@abstractunavailable": { "description": "Text shown in the place of the abstract when it is unavailable." }, - "noFavorites": "У вас нет статей в избранных. Используйте значок сердца на карточках публикаций, чтобы добавить их в избранные!", + "noFavorites": "У вас нет статей в избранном. Используйте значок сердца на карточках!", "@noFavorites": { "description": "The message shown when the user has no articles in their favorites." }, "displaySettings": "Настройки отображения", - "@displaySettings": {}, "appearance": "Облик", - "@appearance": {}, "theme": "Тема", - "@theme": {}, "light": "Светлая", - "@light": {}, "dark": "Тёмная", - "@dark": {}, "systemtheme": "Системная тема", - "@systemtheme": {}, "publicationCard": "Карточка публикации", - "@publicationCard": {}, "showAllAbstracts": "Показать все аннотации", - "@showAllAbstracts": {}, "hideMissingAbstracts": "Скрыть отсутствующие аннотации", - "@hideMissingAbstracts": {}, "hideAllAbstracts": "Скрыть все аннотации", - "@hideAllAbstracts": {}, - "unpaywallarticle": "Статья предоставлена через UnpaywallСтатья была предоставлена через Unpaywall", + "unpaywallarticle": "Статья предоставлена через Unpaywall", "@unpaywallarticle": { "description": "Snackbar shown when an article was fetched from Unpaywall." }, - "forwardedproxy": "Передано через прокси-сервер вашего учебного заведения", + "forwardedproxy": "Через прокси учреждения", "@forwardedproxy": { "description": "Snackbar shown when a request is intercepted and sent through the user's institution EZproxy." }, - "selectinstitution": "Выберите ваше учебное заведение", - "@selectinstitution": {}, + "selectinstitution": "Выберите ваше учреждение", "sortby": "Сортировать по", - "@sortby": {}, "sortorder": "Порядок сортировки", - "@sortorder": {}, - "followingsince": "Подписано с {date}", + "followingsince": "Подписка с {date}", "@followingsince": { "placeholders": { "date": { @@ -250,18 +178,12 @@ } }, "journaltitle": "Название журнала", - "@journaltitle": {}, "followingdate": "Дата подписки", - "@followingdate": {}, "ascending": "По возрастанию", - "@ascending": {}, "descending": "По убыванию", - "@descending": {}, "articletitle": "Название статьи", - "@articletitle": {}, "firstauthfamname": "Фамилия первого автора", - "@firstauthfamname": {}, - "addedtoyourfav": "Добавлено в избранные {date}", + "addedtoyourfav": "Добавлено в избранное {date}", "@addedtoyourfav": { "placeholders": { "date": { @@ -270,50 +192,36 @@ } } }, - "noinstitution": "Нет учебного заведения", - "@noinstitution": {}, - "fetchingArticleFromJournal": "Получение статей из {journalName}.", - "@fetchingArticleFromJournal": {}, + "noinstitution": "Нет учреждения", + "fetchingArticleFromJournal": "Загружаем статьи из {journalName}.", "datepublished": "Дата публикации", - "@datepublished": {}, - "dateaddedtofavorites": "Дата добавления в избранные", - "@dateaddedtofavorites": {}, - "noPublicationFound": "Нет публикаций найдено.", - "@noPublicationFound": {}, + "dateaddedtofavorites": "Дата добавления в избранное", + "noPublicationFound": "Публикации не найдены.", "failLoadMorePublication": "Не удалось загрузить больше публикаций.", - "@failLoadMorePublication": {}, - "homeFeedEmpty": "Нет доступных публикаций. Карточки публикаций будут добавлены, как только вы подпишетесь хотя бы на один журнал.", + "homeFeedEmpty": "Нет публикаций. Подпишитесь хотя бы на один журнал.", "@homeFeedEmpty": { "description": "The message shown when the feed in the home screen is empty." }, - "sharedMessage": "Поделиться через приложение Wispar", + "sharedMessage": "Поделиться через Wispar", "@sharedMessage": { "description": "Default sharing text." }, "shareArticle": "Поделиться статьей", - "@shareArticle": {}, "sendToZotero": "Отправить в Zotero", - "@sendToZotero": {}, "zoteroSettings": "Настройки Zotero", - "@zoteroSettings": {}, - "zoteroPermissions1": "Для использования интеграции Wispar требуется доступ на чтение и запись к вашему аккаунту Zotero.", - "@zoteroPermissions1": {}, - "zoteroPermissions2": "При создании нового ключа API Zotero вы должны выбрать как «Разрешить доступ к библиотеке», так и «Разрешить запись».", - "@zoteroPermissions2": {}, - "zoteroPermissions3": "После создания ключа API скопируйте его значение и вставьте в текстовое поле ниже.", - "@zoteroPermissions3": {}, + "zoteroPermissions1": "Для интеграции Wispar нужен доступ на чтение и запись к вашему Zotero.", + "zoteroPermissions2": "При создании API-ключа Zotero выберите «Доступ к библиотеке» и «Разрешение на запись».", + "zoteroPermissions3": "Скопируйте ключ API и вставьте ниже.", "zoteroCreateKey": "Создать новый API-ключ", - "@zoteroCreateKey": {}, "zoteroEnterKey": "Ввести API-ключ", "@zoteroEnterKey": { "description": "Hint text shown in the text field where users can enter their Zotero API key." }, - "zoteroInvalidKey": "API-ключ неверен!", + "zoteroInvalidKey": "Неверный API-ключ!", "@zoteroInvalidKey": { "description": "Snackbar shown when an attempt to save an invalid Zotero API key is made." }, "save": "Сохранить", - "@save": {}, "savedOn": "Сохранено {date}", "@savedOn": { "placeholders": { @@ -324,118 +232,64 @@ } }, "sourceCode": "Исходный код", - "@sourceCode": {}, "reportIssue": "Сообщить о проблеме", - "@reportIssue": {}, "enabled": "Включено", - "@enabled": {}, "disabled": "Отключено", - "@disabled": {}, "database": "База данных", - "@database": {}, "databaseSettings": "Настройки базы данных", - "@databaseSettings": {}, - "scrapeAbstracts": "Соскабливать недостающие аннотации", - "@scrapeAbstracts": {}, + "scrapeAbstracts": "Скачивать недостающие аннотации", "cleanupInterval": "Интервал очистки (дни)", - "@cleanupInterval": {}, "cleanupIntervalHint": "Введите количество дней (1-365)", - "@cleanupIntervalHint": {}, "apiFetchInterval": "Интервал загрузки API", - "@apiFetchInterval": {}, - "apiFetchIntervalHint": "Выберите, как часто загружать статьи", - "@apiFetchIntervalHint": {}, - "cleanupIntervalNumberNotBetween": "Пожалуйста, введите значение между 1 и 365.", - "@cleanupIntervalNumberNotBetween": {}, + "apiFetchIntervalHint": "Как часто загружать статьи", + "cleanupIntervalNumberNotBetween": "Введите значение от 1 до 365.", "databaseNotFound": "Файл базы данных не найден.", - "@databaseNotFound": {}, - "storagePermissionDenied": "Доступ запрещен.", - "@storagePermissionDenied": {}, - "databaseExported": "База данных экспортирована успешно!", - "@databaseExported": {}, - "cleanupIntervalInvalidNumber": "Пожалуйста, введите допустимое количество дней.", - "@cleanupIntervalInvalidNumber": {}, - "databaseExportFailed": "Не удалось выгрузить базу данных.", - "@databaseExportFailed": {}, + "storagePermissionDenied": "Доступ запрещён.", + "databaseExported": "База данных экспортирована!", + "cleanupIntervalInvalidNumber": "Введите корректное количество дней.", + "databaseExportFailed": "Ошибка экспорта базы данных.", "selectDBExportLocation": "Выберите место для экспорта базы данных.", - "@selectDBExportLocation": {}, "exportDatabase": "Экспорт базы данных", - "@exportDatabase": {}, "importDatabase": "Импорт базы данных", - "@importDatabase": {}, - "databaseImportFailed": "Не удалось импортировать базу данных.", - "@databaseImportFailed": {}, - "databaseImported": "База данных импортирована успешно!", - "@databaseImported": {}, - "settingsSaved": "Настройки сохранены успешно!", - "@settingsSaved": {}, + "databaseImportFailed": "Ошибка импорта базы данных.", + "databaseImported": "База данных импортирована!", + "settingsSaved": "Настройки сохранены!", "privacyPolicy": "Политика конфиденциальности", - "@privacyPolicy": {}, "about": "О приложении", - "@about": {}, "madeBy": "Создано {app_author}", - "@madeBy": {}, - "donate": "Сделать пожертвование", - "@donate": {}, + "donate": "Пожертвовать", "donateMessage": "Поддержите разработку Wispar", "@donateMessage": { "description": "Text shown in the subtitle of the Donate button in the settings." }, - "otherLicense": "Другие лицензии", - "@otherLicense": {}, + "otherLicense": "Другая лицензия", "unknownLicense": "Неизвестная лицензия", - "@unknownLicense": {}, "hours": "часы", - "@hours": {}, - "worksCount": "Кол-во работ", - "@worksCount": {}, + "worksCount": "Количество работ", "searchOpenAlex": "OpenAlex (рекомендуется)", - "@searchOpenAlex": {}, "source": "Источник: {search_provider}", - "@source": {}, "everything": "Всё", - "@everything": {}, "titleAndAbstract": "Название и аннотация", - "@titleAndAbstract": {}, "title": "Название", - "@title": {}, "searchIn": "Поиск в", - "@searchIn": {}, "addKeyword": "Добавить ключевое слово", - "@addKeyword": {}, "enterKeyword": "Введите ключевое слово", - "@enterKeyword": {}, - "displayName": "Показать название", - "@displayName": {}, + "displayName": "Отображаемое название", "citedByCount": "Количество цитирований", - "@citedByCount": {}, "publicationDate": "Дата публикации", - "@publicationDate": {}, "queryPreview": "Предпросмотр запроса:", - "@queryPreview": {}, - "zoteroArticleSent": "Статья была отправлена в Zotero.", - "@zoteroArticleSent": {}, - "deleteLogs": "Удалить журналы отладки", - "@deleteLogs": {}, - "logsDeleted": "Журналы отладки удалены!", - "@logsDeleted": {}, - "logsUnavailable": "Нет журналов отладки.", - "@logsUnavailable": {}, - "logCopied": "Журнал скопирован в буфер обмена!", - "@logCopied": {}, - "saveLogs": "Сохранить журналы отладки", - "@saveLogs": {}, - "selectLogsLocation": "Выберите место, где сохранить журналы.", - "@selectLogsLocation": {}, - "logsExportedSuccessfully": "Журналы сохранены успешно!", - "@logsExportedSuccessfully": {}, - "shareLogs": "Поделиться журналами отладки", - "@shareLogs": {}, - "errorOccured": "Произошла ошибка. Пожалуйста, проверьте журналы и подумайте о том, чтобы сообщить о проблеме на GitHub.", - "@errorOccured": {}, - "logsExportedError": "Невозможно сохранить журналы отладки.", - "@logsExportedError": {}, - "lastUpdatedMinutes": "{minutes, plural, one{Последнее обновление 1 минуту назад} other{Последнее обновление {minutes} минут}}", + "zoteroArticleSent": "Статья отправлена в Zotero.", + "deleteLogs": "Удалить логи", + "logsDeleted": "Логи удалены!", + "logsUnavailable": "Логов нет.", + "logCopied": "Лог скопирован в буфер!", + "saveLogs": "Сохранить логи", + "selectLogsLocation": "Выберите место для сохранения логов.", + "logsExportedSuccessfully": "Логи сохранены!", + "shareLogs": "Поделиться логами", + "errorOccured": "Произошла ошибка. Проверьте логи и сообщите на GitHub.", + "logsExportedError": "Не удалось сохранить логи.", + "lastUpdatedMinutes": "{minutes, plural, one{Обновлено 1 минуту назад} other{Обновлено {minutes} минут назад}}", "@lastUpdatedMinutes": { "placeholders": { "minutes": { @@ -443,9 +297,8 @@ } } }, - "zoteroApiKeyEmpty": "Ключ Zotero API ещё не установлен. Настройте ключ API в настройках приложения.", - "@zoteroApiKeyEmpty": {}, - "lastUpdatedHours": "{hours, plural, one{Последнее обновление 1 час назад} other{Последнее обновление {hours} часов назад}}", + "zoteroApiKeyEmpty": "Ключ Zotero API не настроен. Настройте в настройках приложения.", + "lastUpdatedHours": "{hours, plural, one{Обновлено 1 час назад} other{Обновлено {hours} часов назад}}", "@lastUpdatedHours": { "placeholders": { "hours": { @@ -453,7 +306,7 @@ } } }, - "lastUpdatedDays": "{days, plural, one{Последнее обновление 1 день назад} other{Последнее обновление{days} дней назад}}", + "lastUpdatedDays": "{days, plural, one{Обновлено 1 день назад} other{Обновлено {days} дней назад}}", "@lastUpdatedDays": { "placeholders": { "days": { @@ -462,147 +315,158 @@ } }, "hideArticle": "Скрыть эту публикацию", - "@hideArticle": {}, - "viewLogs": "Просмотр журналов отладки", - "@viewLogs": {}, - "logs": "Журналы отладки", - "@logs": {}, - "failedLoadMoreResults": "Не удалось загрузить больше результатов. Пожалуйста, проверьте журналы и подумайте о том, чтобы сообщить о проблеме на GitHub.", - "@failedLoadMoreResults": {}, - "viewHiddenArticles": "Просмотр скрытых публикаций", - "@viewHiddenArticles": {}, + "viewLogs": "Показать логи", + "logs": "Логи", + "failedLoadMoreResults": "Не удалось загрузить больше результатов. Проверьте логи и сообщите на GitHub.", + "viewHiddenArticles": "Показать скрытые публикации", "notifications": "Уведомления", - "@notifications": {}, "notifPermsGranted": "Разрешение дано", - "@notifPermsGranted": {}, "notifPermsNotGranted": "Разрешение не дано", - "@notifPermsNotGranted": {}, "openAppSettings": "Открыть настройки", - "@openAppSettings": {}, - "notificationSettingsMessage": "Уведомления постоянно отключены. Чтобы включить их, переходите к настройкам уведомления приложения.", - "@notificationSettingsMessage": {}, + "notificationSettingsMessage": "Уведомления постоянно отключены. Чтобы включить их, перейдите в настройки уведомлений приложения.", "notificationContent": "Доступны новые статьи!", - "@notificationContent": {}, - "notificationTitleJournal": "Журналы обновлялись", - "@notificationTitleJournal": {}, - "notificationTitleQuery": "Запросы были обновлены", - "@notificationTitleQuery": {}, + "notificationTitleJournal": "Журналы обновлены", + "notificationTitleQuery": "Запросы обновлены", "fgNotificationContent": "Wispar работает на фоне для обновления ваших журналов", - "@fgNotificationContent": {}, "fgNotificationTitle": "Служба обновления в фоне", - "@fgNotificationTitle": {}, "system": "Система", - "@system": {}, - "concurrentFetches": "Одновременные запросы к API: {number}", - "@concurrentFetches": {}, + "concurrentFetches": "Одновременные запросы API: {number}", "language": "Язык", - "@language": {}, - "unhideArticle": "Открыть эту публикацию", - "@unhideArticle": {}, - "pendingUpdate": "Ожидаемое обновление", - "@pendingUpdate": {}, + "unhideArticle": "Показать эту публикацию", + "pendingUpdate": "Ожидается обновление", "hiddenArticles": "Скрытые публикации", - "@hiddenArticles": {}, "noHiddenArticles": "Нет скрытых публикаций", - "@noHiddenArticles": {}, - "errorFeedNameAlreadyExists": "Лента с этим именем уже существует", - "@errorFeedNameAlreadyExists": {}, + "errorFeedNameAlreadyExists": "Лента с таким именем уже существует", "selectFeed": "Выберите ленту", - "@selectFeed": {}, "createCustomFeed": "Создать свою ленту", - "@createCustomFeed": {}, "customizeFeed": "Настроить ленту", - "@customizeFeed": {}, "feedName": "Название ленты", - "@feedName": {}, - "errorFeedNameEmpty": "Пожалуйста, введите название для ленты", - "@errorFeedNameEmpty": {}, + "errorFeedNameEmpty": "Введите название для ленты", "done": "Готово", - "@done": {}, "edit": "Изменить", - "@edit": {}, "clearAll": "Очистить всё", - "@clearAll": {}, "selectAll": "Выбрать всё", - "@selectAll": {}, - "followedJournals": "Читаемые журналы", - "@followedJournals": {}, + "followedJournals": "Подписанные журналы", "moreJournals": "Больше журналов", - "@moreJournals": {}, "includeKeywords": "Включить ключевые слова", - "@includeKeywords": {}, "excludeKeywords": "Исключить ключевые слова", - "@excludeKeywords": {}, "typePressSpace": "Введите и нажмите пробел…", - "@typePressSpace": {}, "errorSelectOneJournal": "Выберите хотя бы один журнал", - "@errorSelectOneJournal": {}, "copy": "Копировать", - "@copy": {}, - "copyAbstract": "Копировать абстрактно", - "@copyAbstract": {}, + "copyAbstract": "Копировать аннотацию", "copyTitle": "Копировать название", - "@copyTitle": {}, - "copyUrl": "Копировать URL-адрес", - "@copyUrl": {}, - "copiedToClipboard": "Скопировано в буфер обмена!", - "@copiedToClipboard": {}, + "copyUrl": "Копировать URL", + "copiedToClipboard": "Скопировано в буфер!", "sort": "Сортировать", - "@sort": {}, "translate": "Перевод", - "@translate": {}, "swapLanguages": "Сменить языки", - "@swapLanguages": {}, "cancel": "Отмена", - "@cancel": {}, - "pdfDownloadOptionsTitle": "Параметры скачивания PDF", - "@pdfDownloadOptionsTitle": {}, - "openInExternalPdfViewer": "Открыть в просмотрщике PDF", - "@openInExternalPdfViewer": {}, - "openInExternalPdfViewerSubtitle": "Открыть PDF-файл в обозревателе по умолчанию или PDF-приложении.", - "@openInExternalPdfViewerSubtitle": {}, + "pdfDownloadOptionsTitle": "Опции скачивания PDF", + "openInExternalPdfViewer": "Открыть во внешнем PDF-просмотрщике", + "openInExternalPdfViewerSubtitle": "Открыть PDF в браузере или PDF-приложении по умолчанию.", "downloadingFile": "Скачивается файл…", - "@downloadingFile": {}, - "downloadFailedInAppViewer": "Не удалось открыть в приложении. Пробуем внешний просмотрщик.", - "@downloadFailedInAppViewer": {}, + "downloadFailedInAppViewer": "Не удалось открыть в приложении. Попробуйте кнопку загрузки PDF на сайте или выберите внешний просмотрщик PDF.", "errorOpeningFile": "Не удалось открыть файл.", - "@errorOpeningFile": {}, "downloadStarting": "Скачивание началось.", - "@downloadStarting": {}, - "downloadFoundPdf": "Скачать найденый PDF", - "@downloadFoundPdf": {}, + "downloadFoundPdf": "Скачать найденный PDF", "downloadToApp": "Скачать в приложении", - "@downloadToApp": {}, - "downloadToAppSubtitle": "Пробуем скачать и просмотреть PDF прямо в Wispar для лучшей интеграции.", - "@downloadToAppSubtitle": {}, - "noAiApiKeySetError": "Ключ API от ИИ не установлен. Перейдите в настройки, чтобы настроить его.", - "@noAiApiKeySetError": {}, - "translationFailed": "Не удалось выполнить перевод", - "@translationFailed": {}, + "downloadToAppSubtitle": "Скачать и открыть PDF прямо в Wispar для лучшей интеграции.", + "noAiApiKeySetError": "API-ключ ИИ не настроен. Настройте в настройках.", + "translationFailed": "Ошибка перевода", "showTranslation": "Показать перевод", - "@showTranslation": {}, "showOriginal": "Показать оригинал", - "@showOriginal": {}, "aiSettings": "Настройки ИИ", - "@aiSettings": {}, "aiProvider": "Поставщик ИИ", - "@aiProvider": {}, "pleaseSelectProvider": "Выберите поставщика", - "@pleaseSelectProvider": {}, "apiKeyLabel": "Ключ API {providerName}", - "@apiKeyLabel": {}, "pleaseEnterAiAPIKey": "Введите ключ API для {providerName}", - "@pleaseEnterAiAPIKey": {}, - "overrideBaseUrl": "Переопределить базовый URL-адрес", - "@overrideBaseUrl": {}, - "customBaseUrl": "Свой базовый URL-адрес", - "@customBaseUrl": {}, - "pleaseEnterBaseUrl": "Введите базовый URL-адрес", - "@pleaseEnterBaseUrl": {}, - "invalidUrl": "Неправильный URL", - "@invalidUrl": {}, - "modelNameLabel": "Укажите название модели {provider}", - "@modelNameLabel": {}, - "pleaseEnterModelName": "Пожалуйста введите название модели от {provider}.", - "@pleaseEnterModelName": {} + "overrideBaseUrl": "Переопределить базовый URL", + "customBaseUrl": "Пользовательский базовый URL", + "pleaseEnterBaseUrl": "Введите базовый URL", + "invalidUrl": "Неверный URL", + "modelNameLabel": "Название модели {provider}", + "pleaseEnterModelName": "Введите название модели {provider}.", + "institutionalAccess": "Институциональный доступ", + "numberPublications": "{count, plural, =0{Публикаций нет} =1{1 публикация} other{{count} публикаций}}", + "@numberPublications": { + "placeholders": { + "count": {} + } + }, + "showPublicationCount": "Показать количество публикаций", + "graphicalAbstract": "Графический абстракт", + "openExternalApp": "Открыть во внешнем приложении", + "pdfTheme": "Тема просмотрщика PDF", + "pdfReadingOrientation": "Ориентация чтения PDF", + "vertical": "Вертикальная", + "horizontal": "Горизонтальная", + "publicationCardSettings": "Настройки карточек публикаций", + "gestures": "Жесты", + "infoDisplayOnCards": "Информация на карточках публикаций", + "none": "Ничего", + "addToFavorites": "Добавить в избранное", + "hidePublication": "Скрыть публикацию", + "swipeLeftAction": "Действие свайпа влево", + "swipeRightAction": "Действие свайпа вправо", + "licenseInfo": "Информация о лицензии", + "optionsMenu": "Меню опций", + "favoriteButton": "Кнопка избранного", + "unpaywallArticleAvailable": "Статья доступна через Unpaywall", + "unpaywallChoicePrompt": "Эта статья доступна через Unpaywall. Как продолжить?", + "useUnpaywall": "Открыть через Unpaywall", + "goToWebsite": "Перейти на сайт", + "proxySuccess": "Прокси работает успешно", + "proxyFailure": "Прокси не работает", + "proxyLogin": "Это страница входа", + "editKnownUrl": "Редактировать известный URL", + "addKnownUrl": "Добавить известный URL", + "redirectsSuccessfully": "Перенаправление успешно", + "failsToRedirect": "Ошибка перенаправления", + "loginPage": "Страница входа", + "manageUrlsAndRedirect": "Управление URL и статусом перенаправления", + "cachedArticleRetentionDays": "Хранение кэшированных статей (дни)", + "cachedArticleRetentionDaysDesc": "Установите количество дней для хранения кэшированных статей. Более старые статьи будут удалены из базы данных вместе с PDF и графическими абстрактами. Избранное, скачанные PDF и скрытые статьи останутся. Значение 0 отключает очистку, но осиротевшие файлы удалятся.", + "exportingDatabase": "Экспорт базы данных, пожалуйста, подождите.", + "importingDatabase": "Импорт базы данных, пожалуйста, подождите.", + "customDatabaseLocation": "Пользовательское расположение базы данных", + "selectCustomDBLocation": "Выберите расположение для файлов базы данных", + "currentDBLocation": "Текущее расположение: {path}", + "movingDatabase": "Перемещение файлов базы данных. Пожалуйста, подождите.", + "databaseMoved": "Файлы базы данных перемещены!", + "databaseMoveFailed": "Не удалось переместить файлы базы данных: {error}", + "databaseConflictTitle": "Найдены данные Wispar.", + "databaseConflictMessage": "Данные Wispar найдены в папке. Использовать существующие файлы или заменить текущей базой?", + "useExistingFiles": "Использовать существующие файлы", + "overwriteFiles": "Заменить текущей базой данных", + "overrideUserAgent": "Переопределить User Agent", + "customUserAgent": "Пользовательский User Agent", + "hideAiFeatures": "Скрыть все функции ИИ", + "aiTemperature": "Температура", + "aiCustomPrompts": "Пользовательские подсказки перевода", + "aiCustomPromptsDescription": "Используйте $src и $dst для языков-источника и цели, $text для текста. Пример: Переведите текст с $src на $dst: $text", + "prompt": "Подсказка", + "missingPlaceholders": "Отсутствуют заполнители: {placeholders}", + "pdfNotReadyForChat": "PDF не готов к чату. Подождите или попробуйте снова.", + "chatWithPdf": "Чат с PDF", + "typeYourMessage": "Введите сообщение...", + "askAboutPdf": "Привет! Готов обсудить этот PDF. Что узнать или обобщить? Чат с PDF тратит много токенов!", + "pdfNotFound": "Файл PDF не найден.", + "apiTokenMissing": "Нет API-ключа для {aiModel}. Настройте его.", + "@apiTokenMissing": { + "placeholders": { + "aiModel": { + "type": "String" + } + } + }, + "noResponseFromAI": "Нет ответа от ИИ.", + "errorConnectingToAI": "Ошибка подключения к ИИ ({statusCode}). Проверьте интернет или API.", + "@errorConnectingToAI": { + "placeholders": { + "statusCode": { + "type": "int" + } + } + }, + "networkError": "Сетевая ошибка или проблема с ИИ-сервисом." }