## Summary This PR enhances the EPUB reader's bookmark system with two complementary improvements: a per-page bookmark indicator icon and toggle behavior on the existing long-press action. --- ### What Changed **Bookmark Toggle (was: add-only)** The long-press Confirm action now toggles bookmarks rather than always adding. `addBookmark()` checks whether a bookmark with the same xpath already exists in the in-memory cache: - If found → removes it and shows "Bookmark removed." - If not found → adds it and shows "Bookmark added." A new `STR_BOOKMARK_REMOVED` translation string was added to support the removal message. **Bookmark Icon Indicator** A `BookmarkIcon` is now drawn at the top-right corner of the page whenever the current page has a bookmark. `updateBookmarkFlag()` is called at render time to determine whether the current page is bookmarked. **In-Memory Bookmark Cache** Bookmarks are now loaded into `cachedBookmarks` on `onEnter()` rather than being re-read from disk on every toggle. All subsequent add/remove operations work against this cache and flush to disk, avoiding redundant file reads on each bookmark action. **Faster bookmarks list** Previously, calculating "page X/Y" for each entry required decompressing the entire spine item. We now persist `si`/`pc`/`pp` (spine index, page count, and page progress) in the bookmark JSON when saving, and restore them when loading. This avoids the expensive `toCrossPoint()` loop in `onEnter()`, significantly reducing the cost of initializing the bookmarks list. --- ### Files Changed - `EpubReaderActivity.cpp` — `addBookmark()` toggle logic, `updateBookmarkFlag()` (new), icon rendering in `renderContents()`, cache initialization in `onEnter()` - `EpubReaderActivity.h` — new fields: `currentPageBookmarked`, `bookmarkRemoved`, `cachedBookmarks`; new method declaration `updateBookmarkFlag()` --- ### AI Usage While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it helps set the right context for reviewers. Did you use AI tools to help write this code? _**< PARTIALLY >**_ --------- Co-authored-by: Julia Nguyen <julia@uxj.io>
385 lines
20 KiB
YAML
385 lines
20 KiB
YAML
_language_name: "Русский"
|
||
_language_code: "RU"
|
||
_order: "6"
|
||
|
||
STR_CROSSPOINT: "CrossPoint"
|
||
STR_BOOTING: "Загрузка"
|
||
STR_SLEEPING: "Спящий режим"
|
||
STR_ENTERING_SLEEP: "Переход в сон"
|
||
STR_BROWSE_FILES: "Обзор файлов"
|
||
STR_FILE_TRANSFER: "Передача файлов"
|
||
STR_SETTINGS_TITLE: "Настройки"
|
||
STR_CONTINUE_READING: "Продолжить чтение"
|
||
STR_NO_OPEN_BOOK: "Нет открытой книги"
|
||
STR_START_READING: "Начать чтение ниже"
|
||
STR_NO_FILES_FOUND: "Файлы не найдены"
|
||
STR_SELECT_CHAPTER: "Выберите главу"
|
||
STR_NO_CHAPTERS: "Глав нет"
|
||
STR_END_OF_BOOK: "Конец книги"
|
||
STR_EMPTY_CHAPTER: "Пустая глава"
|
||
STR_INDEXING: "Индексация"
|
||
STR_MEMORY_ERROR: "Ошибка памяти"
|
||
STR_PAGE_LOAD_ERROR: "Ошибка загрузки страницы"
|
||
STR_EMPTY_FILE: "Пустой файл"
|
||
STR_OUT_OF_BOUNDS: "Выход за пределы"
|
||
STR_LOADING: "Загрузка..."
|
||
STR_LOADING_POPUP: "Загрузка"
|
||
STR_WIFI_NETWORKS: "Wi-Fi сети"
|
||
STR_NO_NETWORKS: "Сети не найдены"
|
||
STR_NETWORKS_FOUND: "Найдено сетей: %zu"
|
||
STR_SCANNING: "Сканирование..."
|
||
STR_CONNECTING: "Подключение..."
|
||
STR_CONNECTED: "Подключено!"
|
||
STR_CONNECTION_FAILED: "Ошибка подключения"
|
||
STR_FORGET_NETWORK: "Забыть сеть?"
|
||
STR_SAVE_PASSWORD: "Сохранить пароль?"
|
||
STR_PRESS_OK_SCAN: "Нажмите OK для повторного поиска"
|
||
STR_JOIN_NETWORK: "Подключиться к сети"
|
||
STR_CREATE_HOTSPOT: "Создать точку доступа"
|
||
STR_JOIN_DESC: "Подключение к существующей сети Wi-Fi"
|
||
STR_HOTSPOT_DESC: "Создать сеть Wi-Fi для подключения других"
|
||
STR_STARTING_HOTSPOT: "Запуск точки доступа..."
|
||
STR_HOTSPOT_MODE: "Режим точки доступа"
|
||
STR_CONNECT_WIFI_HINT: "Подключите устройство к этой сети Wi-Fi"
|
||
STR_OPEN_URL_HINT: "Откройте этот адрес в браузере"
|
||
STR_OR_HTTP_PREFIX: "или http://"
|
||
STR_SCAN_QR_HINT: "или отсканируйте QR-код:"
|
||
STR_CALIBRE_WIRELESS: "Calibre по Wi-Fi"
|
||
STR_NETWORK_LEGEND: "* = Защищена | + = Сохранена"
|
||
STR_MAC_ADDRESS: "MAC-адрес:"
|
||
STR_CHECKING_WIFI: "Проверка Wi-Fi..."
|
||
STR_ENTER_WIFI_PASSWORD: "Введите пароль Wi-Fi"
|
||
STR_TO_PREFIX: "к "
|
||
STR_CALIBRE_RECEIVING: "Получение:"
|
||
STR_CALIBRE_RECEIVED: "Получено:"
|
||
STR_CALIBRE_INSTRUCTION_1: "1) Установите плагин CrossPoint Reader"
|
||
STR_CALIBRE_INSTRUCTION_2: "2) Подключитесь к той же сети Wi-Fi"
|
||
STR_CALIBRE_INSTRUCTION_3: "3) В Calibre выберите: «Отправить на устройство»"
|
||
STR_CALIBRE_INSTRUCTION_4: "Не закрывайте этот экран во время отправки"
|
||
STR_CAT_DISPLAY: "Экран"
|
||
STR_CAT_READER: "Чтение"
|
||
STR_CAT_CONTROLS: "Управление"
|
||
STR_CAT_SYSTEM: "Система"
|
||
STR_SLEEP_SCREEN: "Экран сна"
|
||
STR_QUICK_RESUME_TIMEOUT: "Быстрое возобновление по таймауту"
|
||
STR_SLEEP_COVER_MODE: "Режим обложки сна"
|
||
STR_HIDE_BATTERY: "Скрыть % батареи"
|
||
STR_EXTRA_SPACING: "Доп. интервал абзаца"
|
||
STR_TEXT_AA: "Сглаживание текста"
|
||
STR_IMAGES: "Изображения"
|
||
STR_IMAGES_DISPLAY: "Показать"
|
||
STR_IMAGES_PLACEHOLDER: "Заглушки"
|
||
STR_IMAGES_SUPPRESS: "Скрыть"
|
||
STR_SHORT_PWR_BTN: "Короткое нажатие PWR"
|
||
STR_ORIENTATION: "Ориентация чтения"
|
||
STR_SIDE_BTN_LAYOUT: "Боковые кнопки"
|
||
STR_FRONT_BTN_FOLLOW_ORIENTATION: "Ориентировать передние кнопки"
|
||
STR_LONG_PRESS_BEHAVIOR: "Долгое нажатие"
|
||
STR_LONG_PRESS_BEHAVIOR_OFF: "Ничего"
|
||
STR_LONG_PRESS_BEHAVIOR_SKIP: "Пропуск главы"
|
||
STR_LONG_PRESS_BEHAVIOR_ORIENTATION: "Изменить ориентацию"
|
||
STR_LONG_PRESS_MENU: "Долгое нажатие меню"
|
||
STR_FONT_PREVIEW_TEXT: "Съешь ещё этих мягких французских булок, да выпей же чаю"
|
||
STR_FONT_FAMILY: "Шрифт чтения"
|
||
STR_FONT_SIZE: "Размер шрифта интерфейса"
|
||
STR_LINE_SPACING: "Межстрочный интервал"
|
||
STR_SCREEN_MARGIN: "Поля экрана"
|
||
STR_PARA_ALIGNMENT: "Выравнивание абзаца"
|
||
STR_HYPHENATION: "Перенос слов"
|
||
STR_TIME_TO_SLEEP: "Сон через"
|
||
STR_SHOW_HIDDEN_FILES: "Показать скрытые файлы"
|
||
STR_REMOVE_READ_FROM_RECENTS: "Очищать прочитанные книги из списка недавних"
|
||
STR_MOVE_FINISHED_TO_READ: "Перемещать прочитанные книги в папку Read"
|
||
STR_REFRESH_FREQ: "Частота обновления"
|
||
STR_KOREADER_SYNC: "Синхронизация KOReader"
|
||
STR_CHECK_UPDATES: "Проверить обновления"
|
||
STR_LANGUAGE: "Язык"
|
||
STR_CLEAR_READING_CACHE: "Очистить кэш чтения"
|
||
STR_USERNAME: "Имя пользователя"
|
||
STR_PASSWORD: "Пароль"
|
||
STR_SYNC_SERVER_URL: "URL сервера синхронизации"
|
||
STR_DOCUMENT_MATCHING: "Сопоставление документов"
|
||
STR_AUTHENTICATE: "Авторизация"
|
||
STR_KOREADER_USERNAME: "Имя пользователя KOReader"
|
||
STR_KOREADER_PASSWORD: "Пароль KOReader"
|
||
STR_FILENAME: "Имя файла"
|
||
STR_BINARY: "Бинарный"
|
||
STR_SET_CREDENTIALS_FIRST: "Сначала укажите данные"
|
||
STR_WIFI_CONN_FAILED: "Не удалось подключиться к Wi-Fi"
|
||
STR_AUTHENTICATING: "Авторизация..."
|
||
STR_AUTH_SUCCESS: "Авторизация успешна!"
|
||
STR_KOREADER_AUTH: "Авторизация KOReader"
|
||
STR_SYNC_READY: "Синхронизация KOReader готова"
|
||
STR_AUTH_FAILED: "Ошибка авторизации"
|
||
STR_DONE: "Готово"
|
||
STR_CLEAR_CACHE_WARNING_1: "Будут удалены все данные кэша книг."
|
||
STR_CLEAR_CACHE_WARNING_2: "Весь прогресс чтения будет потерян!"
|
||
STR_CLEAR_CACHE_WARNING_3: "Книги потребуется переиндексировать"
|
||
STR_CLEAR_CACHE_WARNING_4: "при повторном открытии."
|
||
STR_CLEARING_CACHE: "Очистка кэша..."
|
||
STR_CACHE_CLEARED: "Кэш очищен"
|
||
STR_ITEMS_REMOVED: "элементов удалено"
|
||
STR_FAILED_LOWER: "ошибка"
|
||
STR_CLEAR_CACHE_FAILED: "Не удалось очистить кэш"
|
||
STR_CHECK_SERIAL_OUTPUT: "Проверьте вывод по UART для деталей"
|
||
STR_DARK: "Тёмный"
|
||
STR_LIGHT: "Светлый"
|
||
STR_CUSTOM: "Свой"
|
||
STR_PWR_BTN_FOOTNOTE_BACK: "Быстрый возврат из примечаний"
|
||
STR_COVER: "Обложка"
|
||
STR_NONE_OPT: "Нет"
|
||
STR_FIT: "Вписать"
|
||
STR_CROP: "Обрезать"
|
||
STR_NEVER: "Никогда"
|
||
STR_IN_READER: "В режиме чтения"
|
||
STR_ALWAYS: "Всегда"
|
||
STR_IGNORE: "Игнорировать"
|
||
STR_SLEEP: "Сон"
|
||
STR_PAGE_TURN: "Перелистывание"
|
||
STR_FORCE_REFRESH: "Обновление экрана"
|
||
STR_PORTRAIT: "Портрет"
|
||
STR_LANDSCAPE_CW: "Ландшафт (CW)"
|
||
STR_INVERTED: "Инверсия"
|
||
STR_LANDSCAPE_CCW: "Ландшафт (CCW)"
|
||
STR_PREV_NEXT: "Назад/Вперёд"
|
||
STR_NEXT_PREV: "Вперёд/Назад"
|
||
STR_KOSYNC: "KOSync"
|
||
STR_BOOKMARK_OPTION: "Закладка"
|
||
STR_DISABLED: "Выключено"
|
||
STR_NOTO_SERIF: "Noto Serif"
|
||
STR_NOTO_SANS: "Noto Sans"
|
||
STR_SMALL: "Маленький"
|
||
STR_MEDIUM: "Средний"
|
||
STR_LARGE: "Большой"
|
||
STR_X_LARGE: "Очень большой"
|
||
STR_TIGHT: "Узкий"
|
||
STR_NORMAL: "Обычный"
|
||
STR_WIDE: "Широкий"
|
||
STR_JUSTIFY: "По ширине"
|
||
STR_ALIGN_LEFT: "По левому краю"
|
||
STR_CENTER: "По центру"
|
||
STR_ALIGN_RIGHT: "По правому краю"
|
||
STR_PAGES_1: "1 стр."
|
||
STR_PAGES_5: "5 стр."
|
||
STR_PAGES_10: "10 стр."
|
||
STR_PAGES_15: "15 стр."
|
||
STR_PAGES_30: "30 стр."
|
||
STR_UPDATE: "Обновление"
|
||
STR_CHECKING_UPDATE: "Проверка обновлений..."
|
||
STR_NEW_UPDATE: "Доступно новое обновление!"
|
||
STR_CURRENT_VERSION: "Текущая версия:"
|
||
STR_NEW_VERSION: "Новая версия:"
|
||
STR_UPDATING: "Обновление..."
|
||
STR_NO_UPDATE: "Обновлений нет"
|
||
STR_UPDATE_FAILED: "Ошибка обновления"
|
||
STR_UPDATE_COMPLETE: "Обновление завершено"
|
||
STR_POWER_ON_HINT: "Удерживайте кнопку питания для включения"
|
||
STR_RESTARTING_HINT: "Перезапуск... Если устройство не перезагружается, удерживайте кнопку питания несколько секунд"
|
||
STR_NO_ENTRIES: "Записи не найдены"
|
||
STR_DOWNLOADING: "Загрузка..."
|
||
STR_DOWNLOAD_FAILED: "Ошибка загрузки"
|
||
STR_ERROR_MSG: "Ошибка:"
|
||
STR_UNNAMED: "Без имени"
|
||
STR_HOLD_OPEN_TO_DELETE: "Удерживайте Открыть для удаления"
|
||
STR_NO_SERVER_URL: "URL сервера не настроен"
|
||
STR_FETCH_FEED_FAILED: "Не удалось получить ленту"
|
||
STR_PARSE_FEED_FAILED: "Не удалось обработать ленту"
|
||
STR_NEXT_PAGE: "Следующая страница »"
|
||
STR_PREV_PAGE: "« Предыдущая страница"
|
||
STR_NETWORK_PREFIX: "Сеть: "
|
||
STR_IP_ADDRESS_PREFIX: "IP-адрес: "
|
||
STR_ERROR_GENERAL_FAILURE: "Ошибка: Общая ошибка"
|
||
STR_ERROR_NETWORK_NOT_FOUND: "Ошибка: Сеть не найдена"
|
||
STR_ERROR_CONNECTION_TIMEOUT: "Ошибка: Тайм-аут соединения"
|
||
STR_SD_CARD: "SD-карта"
|
||
STR_BACK: "« Назад"
|
||
STR_EXIT: "« Выход"
|
||
STR_HOME: "« Главная"
|
||
STR_SELECT: "Выбрать"
|
||
STR_SELECTED: "Выбран"
|
||
STR_TOGGLE: "Выбор"
|
||
STR_TOGGLE_BOOKMARK: "Переключить закладку"
|
||
STR_CONFIRM: "Подтв."
|
||
STR_CANCEL: "Отмена"
|
||
STR_CONNECT: "Подкл."
|
||
STR_OPEN: "Открыть"
|
||
STR_DOWNLOAD: "Скачать"
|
||
STR_RETRY: "Повторить"
|
||
STR_YES: "Да"
|
||
STR_NO: "Нет"
|
||
STR_SHOW: "Показать"
|
||
STR_HIDE: "Скрыть"
|
||
STR_STATE_ON: "ВКЛ"
|
||
STR_STATE_OFF: "ВЫКЛ"
|
||
STR_NOT_SET: "Не установлено"
|
||
STR_DIR_LEFT: "Влево"
|
||
STR_DIR_RIGHT: "Вправо"
|
||
STR_DIR_UP: "Вверх"
|
||
STR_DIR_DOWN: "Вниз"
|
||
STR_OK_BUTTON: "OK"
|
||
STR_SLEEP_COVER_FILTER: "Фильтр экрана сна"
|
||
STR_FILTER_CONTRAST: "Контраст"
|
||
STR_CUSTOMISE_STATUS_BAR: "Настройка строки состояния"
|
||
STR_CHAPTER_PAGE_COUNT: "Количество страниц главы"
|
||
STR_BOOK_PROGRESS_PERCENTAGE: "% прочтения книги"
|
||
STR_PROGRESS_BAR: "Полоса прогресса"
|
||
STR_PROGRESS_BAR_THICKNESS: "Толщина индикатора прогресса"
|
||
STR_PROGRESS_BAR_THIN: "Тонкий"
|
||
STR_PROGRESS_BAR_MEDIUM: "Средний"
|
||
STR_PROGRESS_BAR_THICK: "Толстый"
|
||
STR_BOOK: "Книга"
|
||
STR_CHAPTER: "Глава"
|
||
STR_EXAMPLE_CHAPTER: "Глава 21"
|
||
STR_EXAMPLE_BOOK: "Название книги"
|
||
STR_PREVIEW: "Предпросмотр"
|
||
STR_TITLE: "Заглавие"
|
||
STR_BATTERY: "Батарея"
|
||
STR_XTC_STATUS_BAR: "Строка состояния XTC"
|
||
STR_BOTTOM: "Низ"
|
||
STR_TOP: "Верх"
|
||
STR_CLOCK: "Часы"
|
||
STR_CLOCK_UTC_OFFSET: "Смещение по UTC"
|
||
STR_CLOCK_FORMAT: "Формат времени"
|
||
STR_CLOCK_FORMAT_24H: "24-часовой"
|
||
STR_CLOCK_FORMAT_12H: "12-часовой"
|
||
STR_CURRENT_TIME: "Текущее время:"
|
||
STR_NEXT_FIELD: "Дальше"
|
||
STR_CLOCK_SYNC: "Синхронизация часов"
|
||
STR_CLOCK_SYNC_NOW: "Синхронизировать часы"
|
||
STR_CLOCK_SYNCING: "Синхронизация по NTP..."
|
||
STR_CLOCK_SYNC_OK: "Часы синхронизированы"
|
||
STR_CLOCK_SYNC_FAIL: "Ошибка синхронизации"
|
||
STR_CLOCK_SYNC_NO_WIFI: "Wi-Fi не подключен"
|
||
STR_CLOCK_SYNC_NO_WIFI_HINT: "Подключите Wi-Fi и попробуйте снова."
|
||
STR_CLOCK_SYNCED: "Часы синхронизированы"
|
||
STR_UI_THEME: "Тема интерфейса"
|
||
STR_THEME_CLASSIC: "Классическая"
|
||
STR_THEME_LYRA: "Lyra"
|
||
STR_THEME_ROUNDEDRAFF: "RoundedRaff"
|
||
STR_THEME_LYRA_EXTENDED: "Lyra Extended"
|
||
STR_SUNLIGHT_FADING_FIX: "Компенсация выцветания"
|
||
STR_REMAP_FRONT_BUTTONS: "Переназначить передние кнопки"
|
||
STR_BOOKMARKS: "Закладки"
|
||
STR_BOOKMARK_ADDED: "Закладка добавлена"
|
||
STR_BOOKMARK_REMOVED: "Закладка удалена"
|
||
STR_OPDS_BROWSER: "OPDS браузер"
|
||
STR_SEARCH: "Поиск"
|
||
STR_COVER_CUSTOM: "Обложка + Свой"
|
||
STR_QUICK_RESUME: "Быстрое возобновление"
|
||
STR_MENU_RECENT_BOOKS: "Недавние книги"
|
||
STR_REMOVE_FROM_RECENTS: "Удалить из недавних книг?"
|
||
STR_NO_RECENT_BOOKS: "Нет недавних книг"
|
||
STR_CALIBRE_DESC: "Использовать беспроводную передачу Calibre"
|
||
STR_FORGET_AND_REMOVE: "Забыть сеть и удалить сохранённый пароль?"
|
||
STR_FORGET_BUTTON: "Забыть"
|
||
STR_CALIBRE_STARTING: "Запуск Calibre..."
|
||
STR_CALIBRE_SETUP: "Настройка"
|
||
STR_CALIBRE_STATUS: "Статус"
|
||
STR_CLEAR_BUTTON: "Очистить"
|
||
STR_DEFAULT_VALUE: "По умолчанию"
|
||
STR_REMAP_PROMPT: "Назначьте роль для каждой кнопки"
|
||
STR_UNASSIGNED: "Не назначено"
|
||
STR_ALREADY_ASSIGNED: "Уже назначено"
|
||
STR_REMAP_RESET_HINT: "Боковая кнопка вверх: сбросить по умолчанию"
|
||
STR_REMAP_CANCEL_HINT: "Боковая кнопка вниз: отменить переназначение"
|
||
STR_HW_BACK_LABEL: "Назад (1-я кнопка)"
|
||
STR_HW_CONFIRM_LABEL: "Подтвердить (2-я кнопка)"
|
||
STR_HW_LEFT_LABEL: "Влево (3-я кнопка)"
|
||
STR_HW_RIGHT_LABEL: "Вправо (4-я кнопка)"
|
||
STR_GO_TO_PERCENT: "Перейти к %"
|
||
STR_GO_HOME_BUTTON: "На главную"
|
||
STR_SYNC_PROGRESS: "Синхронизировать прогресс"
|
||
STR_DELETE_CACHE: "Удалить кэш книги"
|
||
STR_DELETE: "Удалить"
|
||
STR_CONFIRM_DELETE_BOOKMARK: "Удалить эту закладку?"
|
||
STR_DISPLAY_QR: "Показать страницу в виде QR-кода"
|
||
STR_CHAPTER_PREFIX: "Глава: "
|
||
STR_PAGES_SEPARATOR: " стр. | "
|
||
STR_BOOK_PREFIX: "Книга: "
|
||
STR_CALIBRE_URL_HINT: "Для Calibre добавьте /opds к URL"
|
||
STR_PERCENT_STEP_HINT: "Влево/Вправо: 1% Вверх/Вниз: 10%"
|
||
STR_SYNCING_TIME: "Синхронизация времени..."
|
||
STR_CALC_HASH: "Расчёт хэша документа..."
|
||
STR_HASH_FAILED: "Не удалось вычислить хэш документа"
|
||
STR_FETCH_PROGRESS: "Получение удалённого прогресса..."
|
||
STR_UPLOAD_PROGRESS: "Отправка прогресса..."
|
||
STR_NO_CREDENTIALS_MSG: "Данные для входа не настроены"
|
||
STR_KOREADER_SETUP_HINT: "Настройте аккаунт KOReader в настройках"
|
||
STR_PROGRESS_FOUND: "Прогресс найден!"
|
||
STR_REMOTE_LABEL: "Удалённый:"
|
||
STR_LOCAL_LABEL: "Локальный:"
|
||
STR_PAGE_OVERALL_FORMAT: "Страница %d, %.2f%% всего"
|
||
STR_PAGE_TOTAL_OVERALL_FORMAT: "Страница %d/%d"
|
||
STR_DEVICE_FROM_FORMAT: "От: %s"
|
||
STR_APPLY_REMOTE: "Применить удалённый прогресс"
|
||
STR_UPLOAD_LOCAL: "Отправить локальный прогресс"
|
||
STR_NO_REMOTE_MSG: "Удалённый прогресс не найден"
|
||
STR_UPLOAD_PROMPT: "Отправить текущую позицию?"
|
||
STR_UPLOAD_SUCCESS: "Прогресс отправлен!"
|
||
STR_SYNC_FAILED_MSG: "Ошибка синхронизации"
|
||
STR_SAVE_PROGRESS_FAILED: "Не удалось сохранить прогресс"
|
||
STR_SECTION_PREFIX: "Раздел "
|
||
STR_UPLOAD: "Отправить"
|
||
STR_BOOK_S_STYLE: "Стиль книги"
|
||
STR_EMBEDDED_STYLE: "Встроенный стиль"
|
||
STR_FOCUS_READING: "Фокусное чтение"
|
||
STR_OPDS_SERVER_URL: "URL OPDS сервера"
|
||
STR_SET_SLEEP_COVER: "Обложкой"
|
||
STR_FOOTNOTES: "Примечания"
|
||
STR_NO_FOOTNOTES: "На данной странице нет примечаний"
|
||
STR_LINK: "[ссылка]"
|
||
STR_SCREENSHOT_BUTTON: "Сделать снимок экрана"
|
||
STR_SLEEP_TIMER_VALUE_FORMAT: "%u мин"
|
||
STR_SLEEP_NEVER: "Никогда"
|
||
STR_SLEEP_TIMER_STEP_HINT: "Влево/Вправо: 1 мин Вверх/Вниз: 5 мин"
|
||
STR_ADD_SERVER: "Добавить сервер"
|
||
STR_SERVER_NAME: "Имя сервера"
|
||
STR_NO_SERVERS: "Нет настроенных серверов OPDS"
|
||
STR_DELETE_SERVER: "Удалить сервер"
|
||
STR_OPDS_SERVERS: "Серверы OPDS"
|
||
STR_AUTO_TURN_ENABLED: "Автоперелистывание: "
|
||
STR_AUTO_TURN_PAGES_PER_MIN: "Автоперелистывание (стр./мин)"
|
||
STR_MANAGE_FONTS: "Управление шрифтами"
|
||
STR_FONT_BROWSER: "Обзор шрифтов"
|
||
STR_LOADING_FONT_LIST: "Загрузка списка шрифтов..."
|
||
STR_NO_FONTS_AVAILABLE: "Шрифты недоступны"
|
||
STR_FONT_INSTALLED: "Шрифт установлен!"
|
||
STR_FONT_INSTALL_FAILED: "Не удалоь установить шрифт"
|
||
STR_INSTALLED: "Установлен"
|
||
STR_DOWNLOAD_ALL: "Загрузить все"
|
||
STR_UPDATE_ALL: "Обновить всё"
|
||
STR_UPDATE_AVAILABLE: "Обновить"
|
||
STR_CRASH_TITLE: "Сбой системы"
|
||
STR_CRASH_DESCRIPTION: "Подробный отчёт сохранён в crash_report.txt. Пожалуйста, приложите этот файл к вашему отчёту об ошибке."
|
||
STR_CRASH_REASON: "Причина сбоя:"
|
||
STR_CRASH_NO_REASON: "(Причина не указана)"
|
||
STR_TILT_PAGE_TURN: "Перелистывание наклоном"
|
||
STR_KB_HINT_MOVE_CURSOR: "Нажмите ВЛЕВО или ВПРАВО для перемещения курсора"
|
||
STR_KB_HINT_RETURN_CURSOR: "Нажмите ВЛЕВО, чтобы вернуться к позиции курсора"
|
||
STR_KB_HINT_HIDE_PASSWORD: "Удерживайте ВПРАВО, затем нажмите [***], чтобы скрыть пароль"
|
||
STR_KB_HINT_SHOW_PASSWORD: "Удерживайте ВПРАВО, затем нажмите [abc], чтобы показать пароль"
|
||
STR_KB_HINT_TOGGLE_HIDE_PASSWORD: "Нажмите [***], чтобы скрыть пароль"
|
||
STR_KB_HINT_TOGGLE_SHOW_PASSWORD: "Нажмите [abc], чтобы показать пароль"
|
||
STR_KB_HINT_EDIT_ENTRY: "Удерживайте ВВЕРХ для редактирования записи"
|
||
STR_KB_TIPS: "Подсказки:"
|
||
STR_KB_HINT_RETURN_KEYBOARD: "Нажмите ВНИЗ, чтобы вернуться к клавиатуре"
|
||
STR_KB_HINT_EXIT_URL_MODE: "Нажмите ABC для выхода из режима URL"
|
||
STR_KB_HINT_CLEAR_TEXT: "Удерживайте <— чтобы очитисть весь текст"
|
||
STR_KB_HINT_SECONDARY_CHAR: "Удерживайте ВЫБРАТЬ для дополнительного символа"
|
||
STR_KB_HINT_UPPER_SECONDARY: "Удерживайте ВЫБРАТЬ для ВЕРХНЕГО РЕГИСТРА или дополнительного символа"
|
||
STR_KB_HINT_LOWER_SECONDARY: "Удерживайте ВЫБРАТЬ для нижнего регистра или дополнительного символа"
|
||
STR_KB_HINT_URL_SNIPPETS: "Нажмите URL для выбора шаблонов"
|
||
STR_SD_FIRMWARE_UPDATE: "Обновление системы с SD-карты"
|
||
STR_SELECT_FIRMWARE_FILE: "Выберите файл прошивки (.bin)"
|
||
STR_NO_BIN_FILES: ".bin файлы не найдены"
|
||
STR_VALIDATING_FIRMWARE: "Проверка файла прошивки..."
|
||
STR_INVALID_FIRMWARE: "Не подходящий файл прошивки"
|
||
STR_FIRMWARE_TOO_LARGE: "Прошивка слишком велика для раздела"
|
||
STR_FIRMWARE_TOO_SMALL: "Файл прошивки слишком мал"
|
||
STR_FIRMWARE_UPDATE_PROMPT: "Обновить прошивку?"
|
||
STR_FIRMWARE_FILE_OPEN_FAILED: "Не могу открыть файл"
|
||
STR_FIRMWARE_WRITE_FAILED: "Ошибка записи прошивки"
|
||
STR_FIRMWARE_UPDATE_DO_NOT_POWER_OFF: "Не выключайте питание!"
|
||
STR_RECOVERY_MODE: "Режим восстановления"
|
||
STR_RECOVERY_MODE_HINT: "Поместите firmware.bin в корень SD-карты и выберите его"
|