diff --git a/docs/i18n.md b/docs/i18n.md index 65422c8c..5c2f531a 100644 --- a/docs/i18n.md +++ b/docs/i18n.md @@ -12,6 +12,7 @@ This guide explains the multi-language support system in CrossPoint Reader. - Swedish - Czech - Russian +- Ukrainian --- diff --git a/docs/translators.md b/docs/translators.md index 7f986509..f93d824f 100644 --- a/docs/translators.md +++ b/docs/translators.md @@ -39,4 +39,7 @@ If you'd like to add your name to this list, please open a PR adding yourself an - [ariel-lindemann](https://github.com/ariel-lindemann) ## Catalan -- [angeldenom](https://github.com/angeldenom) \ No newline at end of file +- [angeldenom](https://github.com/angeldenom) + +## Ukrainian +- [mirus-ua](https://github.com/mirus-ua) \ No newline at end of file diff --git a/lib/I18n/I18nKeys.h b/lib/I18n/I18nKeys.h index 006a5719..7bbdbb3a 100644 --- a/lib/I18n/I18nKeys.h +++ b/lib/I18n/I18nKeys.h @@ -15,6 +15,7 @@ extern const char* const STRINGS_RU[]; extern const char* const STRINGS_SV[]; extern const char* const STRINGS_RO[]; extern const char* const STRINGS_CA[]; +extern const char* const STRINGS_UK[]; } // namespace i18n_strings // Language enum @@ -29,6 +30,7 @@ enum class Language : uint8_t { SWEDISH = 7, ROMANIAN = 8, CATALAN = 9, + UKRAINIAN = 10, _COUNT }; @@ -383,6 +385,8 @@ inline const char* const* getStringArray(Language lang) { return i18n_strings::STRINGS_RO; case Language::CATALAN: return i18n_strings::STRINGS_CA; + case Language::UKRAINIAN: + return i18n_strings::STRINGS_UK; default: return i18n_strings::STRINGS_EN; } diff --git a/lib/I18n/I18nStrings.h b/lib/I18n/I18nStrings.h index 6efacb70..c1039cd9 100644 --- a/lib/I18n/I18nStrings.h +++ b/lib/I18n/I18nStrings.h @@ -17,5 +17,6 @@ extern const char* const STRINGS_RU[]; extern const char* const STRINGS_SV[]; extern const char* const STRINGS_RO[]; extern const char* const STRINGS_CA[]; +extern const char* const STRINGS_UK[]; } // namespace i18n_strings diff --git a/lib/I18n/translations/ukrainian.yaml b/lib/I18n/translations/ukrainian.yaml new file mode 100644 index 00000000..e06e0a27 --- /dev/null +++ b/lib/I18n/translations/ukrainian.yaml @@ -0,0 +1,319 @@ +_language_name: "Українська" +_language_code: "UKRAINIAN" +_order: "10" + +STR_CROSSPOINT: "CrossPoint" +STR_BOOTING: "ЗАВАНТАЖЕННЯ" +STR_SLEEPING: "СПИТЬ" +STR_ENTERING_SLEEP: "Перехід у режим сну" +STR_BROWSE_FILES: "Перегляд файлів" +STR_FILE_TRANSFER: "Передача файлів" +STR_SETTINGS_TITLE: "Налаштування" +STR_CALIBRE_LIBRARY: "Бібліотека Calibre" +STR_CONTINUE_READING: "Продовжити читання" +STR_NO_OPEN_BOOK: "Немає відкритої книги" +STR_START_READING: "Почніть читання нижче" +STR_BOOKS: "Книги" +STR_NO_BOOKS_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_LOAD_XTC_FAILED: "Не вдалося завантажити XTC" +STR_LOAD_TXT_FAILED: "Не вдалося завантажити TXT" +STR_LOAD_EPUB_FAILED: "Не вдалося завантажити EPUB" +STR_SD_CARD_ERROR: "Помилка SD картки" +STR_WIFI_NETWORKS: "Мережі WiFi" +STR_NO_NETWORKS: "Мереж не знайдено" +STR_NETWORKS_FOUND: "знайдено %zu мереж" +STR_SCANNING: "Сканування..." +STR_CONNECTING: "Підключення..." +STR_CONNECTED: "Підключено!" +STR_CONNECTION_FAILED: "Помилка підключення" +STR_CONNECTION_TIMEOUT: "Таймаут підключення" +STR_FORGET_NETWORK: "Забути мережу?" +STR_SAVE_PASSWORD: "Зберегти пароль на наступний раз?" +STR_REMOVE_PASSWORD: "Видалити збережений пароль?" +STR_PRESS_OK_SCAN: "Натисніть OK для повторного сканування" +STR_PRESS_ANY_CONTINUE: "Натисніть будь-яку кнопку для продовження" +STR_SELECT_HINT: "ЛІВО/ПРАВО: Вибір | OK: Підтвердити" +STR_HOW_CONNECT: "Як ви хочете підключитися?" +STR_JOIN_NETWORK: "Приєднатися до мережі" +STR_CREATE_HOTSPOT: "Створити точку доступу" +STR_JOIN_DESC: "Підключитися до існуючої мережі WiFi" +STR_HOTSPOT_DESC: "Створити мережу WiFi, до якої можуть підключитися інші" +STR_STARTING_HOTSPOT: "Запуск точки доступу..." +STR_HOTSPOT_MODE: "Режим точки доступу" +STR_CONNECT_WIFI_HINT: "Підключіть ваш пристрій до цієї мережі WiFi" +STR_OPEN_URL_HINT: "Відкрийте цю URL-адресу у вашому браузері" +STR_OR_HTTP_PREFIX: "або http://" +STR_SCAN_QR_HINT: "або відскануйте QR-код телефоном:" +STR_CALIBRE_WIRELESS: "Calibre бездротовий" +STR_CALIBRE_WEB_URL: "URL Calibre Web" +STR_CONNECT_WIRELESS: "Підключитися як бездротовий пристрій" +STR_NETWORK_LEGEND: "* = Зашифровано | + = Збережено" +STR_MAC_ADDRESS: "MAC адреса:" +STR_CHECKING_WIFI: "Перевірка WiFi..." +STR_ENTER_WIFI_PASSWORD: "Введіть пароль WiFi" +STR_ENTER_TEXT: "Введіть текст" +STR_TO_PREFIX: "до " +STR_CALIBRE_DISCOVERING: "Пошук Calibre..." +STR_CALIBRE_CONNECTING_TO: "Підключення до " +STR_CALIBRE_CONNECTED_TO: "Підключено до " +STR_CALIBRE_WAITING_COMMANDS: "Очікування команд..." +STR_CONNECTION_FAILED_RETRYING: "(Помилка підключення, повторна спроба)" +STR_CALIBRE_DISCONNECTED: "Calibre відключено" +STR_CALIBRE_WAITING_TRANSFER: "Очікування передачі..." +STR_CALIBRE_TRANSFER_HINT: "Якщо передача не вдалася, увімкніть\\n'Ігнорувати вільний простір' в налаштуваннях\\nплагіна SmartDevice Calibre." +STR_CALIBRE_RECEIVING: "Отримання: " +STR_CALIBRE_RECEIVED: "Отримано: " +STR_CALIBRE_WAITING_MORE: "Очікування ще..." +STR_CALIBRE_FAILED_CREATE_FILE: "Не вдалося створити файл" +STR_CALIBRE_PASSWORD_REQUIRED: "Потрібен пароль" +STR_CALIBRE_TRANSFER_INTERRUPTED: "Передачу перервано" +STR_CALIBRE_INSTRUCTION_1: "1) Встановіть плагін CrossPoint Reader" +STR_CALIBRE_INSTRUCTION_2: "2) Перебувайте в тій самій мережі WiFi" +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_SLEEP_COVER_MODE: "Режим обкладинки екрана сну" +STR_STATUS_BAR: "Панель стану" +STR_HIDE_BATTERY: "Приховати % батареї" +STR_EXTRA_SPACING: "Додатковий інтервал між абзацами" +STR_TEXT_AA: "Згладжування тексту" +STR_SHORT_PWR_BTN: "Коротке натискання кнопки живлення" +STR_ORIENTATION: "Орієнтація читання" +STR_FRONT_BTN_LAYOUT: "Розташування передніх кнопок" +STR_SIDE_BTN_LAYOUT: "Розташування бічних кнопок (читач)" +STR_LONG_PRESS_SKIP: "Пропуск розділу при довгому натисканні" +STR_FONT_FAMILY: "Сімейство шрифтів" +STR_EXT_READER_FONT: "Зовнішній шрифт" +STR_EXT_CHINESE_FONT: "Шрифт" +STR_EXT_UI_FONT: "Шрифт інтерфейсу" +STR_FONT_SIZE: "Розмір шрифту інтерфейсу" +STR_LINE_SPACING: "Міжрядковий інтервал" +STR_ASCII_LETTER_SPACING: "Інтервал між літерами ASCII" +STR_ASCII_DIGIT_SPACING: "Інтервал між цифрами ASCII" +STR_CJK_SPACING: "Інтервал CJK" +STR_COLOR_MODE: "Колірний режим" +STR_SCREEN_MARGIN: "Поле екрана" +STR_PARA_ALIGNMENT: "Вирівнювання абзаців" +STR_HYPHENATION: "Перенос слів" +STR_TIME_TO_SLEEP: "Час до сну" +STR_REFRESH_FREQ: "Частота оновлення" +STR_CALIBRE_SETTINGS: "Налаштування Calibre" +STR_KOREADER_SYNC: "Синхронізація KOReader" +STR_CHECK_UPDATES: "Перевірити оновлення" +STR_LANGUAGE: "Мова" +STR_SELECT_WALLPAPER: "Виберіть шпалеру" +STR_CLEAR_READING_CACHE: "Очистити кеш читання" +STR_CALIBRE: "Calibre" +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: "Помилка підключення WiFi" +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: "Перевірте послідовний вивід для деталей" +STR_DARK: "Темний" +STR_LIGHT: "Світлий" +STR_CUSTOM: "Користувацький" +STR_COVER: "Обкладинка" +STR_NONE_OPT: "Нічого" +STR_FIT: "Підігнати" +STR_CROP: "Обрізати" +STR_NO_PROGRESS: "Немає прогресу" +STR_FULL_OPT: "Повний" +STR_NEVER: "Ніколи" +STR_IN_READER: "В читачі" +STR_ALWAYS: "Завжди" +STR_IGNORE: "Ігнорувати" +STR_SLEEP: "Сон" +STR_PAGE_TURN: "Перегортання сторінки" +STR_PORTRAIT: "Портрет" +STR_LANDSCAPE_CW: "Альбомний за годинниковою" +STR_INVERTED: "Перевернутий" +STR_LANDSCAPE_CCW: "Альбомний проти годинникової" +STR_FRONT_LAYOUT_BCLR: "Назад, Підтв, Ліво, Право" +STR_FRONT_LAYOUT_LRBC: "Ліво, Право, Назад, Підтв" +STR_FRONT_LAYOUT_LBCR: "Ліво, Назад, Підтв, Право" +STR_PREV_NEXT: "Попер/Наст" +STR_NEXT_PREV: "Наст/Попер" +STR_BOOKERLY: "Bookerly" +STR_NOTO_SANS: "Noto Sans" +STR_OPEN_DYSLEXIC: "Open Dyslexic" +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_MIN_1: "1 хв" +STR_MIN_5: "5 хв" +STR_MIN_10: "10 хв" +STR_MIN_15: "15 хв" +STR_MIN_30: "30 хв" +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_EXTERNAL_FONT: "Зовнішній шрифт" +STR_BUILTIN_DISABLED: "Вбудований (Вимкнено)" +STR_NO_ENTRIES: "Записів не знайдено" +STR_DOWNLOADING: "Завантаження..." +STR_DOWNLOAD_FAILED: "Завантаження не вдалося" +STR_ERROR_MSG: "Помилка:" +STR_UNNAMED: "Без назви" +STR_NO_SERVER_URL: "URL сервера не налаштовано" +STR_FETCH_FEED_FAILED: "Не вдалося отримати стрічку" +STR_PARSE_FEED_FAILED: "Не вдалося розпарсити стрічку" +STR_NETWORK_PREFIX: "Мережа: " +STR_IP_ADDRESS_PREFIX: "IP адреса: " +STR_SCAN_QR_WIFI_HINT: "або відскануйте QR-код телефоном для підключення до WiFi." +STR_ERROR_GENERAL_FAILURE: "Помилка: Загальна помилка" +STR_ERROR_NETWORK_NOT_FOUND: "Помилка: Мережу не знайдено" +STR_ERROR_CONNECTION_TIMEOUT: "Помилка: Таймаут підключення" +STR_SD_CARD: "SD картка" +STR_BACK: "« Назад" +STR_EXIT: "« Вихід" +STR_HOME: "« Додому" +STR_SAVE: "« Зберегти" +STR_SELECT: "Вибрати" +STR_TOGGLE: "Обрати" +STR_CONFIRM: "Підтвердити" +STR_CANCEL: "Скасувати" +STR_CONNECT: "Приєдн." +STR_OPEN: "Відкрити" +STR_DOWNLOAD: "Завант." +STR_RETRY: "Повтор." +STR_YES: "Так" +STR_NO: "Ні" +STR_STATE_ON: "УВІМК" +STR_STATE_OFF: "ВИМК" +STR_SET: "Встановити" +STR_NOT_SET: "Не встановлено" +STR_DIR_LEFT: "Ліво" +STR_DIR_RIGHT: "Право" +STR_DIR_UP: "Вгору" +STR_DIR_DOWN: "Вниз" +STR_CAPS_ON: "ВЕЛИКІ" +STR_CAPS_OFF: "малі" +STR_OK_BUTTON: "OK" +STR_ON_MARKER: "[УВІМК]" +STR_SLEEP_COVER_FILTER: "Фільтр обкладинки екрана сну" +STR_FILTER_CONTRAST: "Контраст" +STR_STATUS_BAR_FULL_PERCENT: "Повна з відсотками" +STR_STATUS_BAR_FULL_BOOK: "Повна з прогресом книги" +STR_STATUS_BAR_BOOK_ONLY: "Тільки прогрес книги" +STR_STATUS_BAR_FULL_CHAPTER: "Повна з панеллю розділу" +STR_UI_THEME: "Тема інтерфейсу" +STR_THEME_CLASSIC: "Класична" +STR_THEME_LYRA: "Lyra" +STR_THEME_LYRA_EXTENDED: "Lyra Extended" +STR_SUNLIGHT_FADING_FIX: "Виправлення вицвітання на сонці" +STR_REMAP_FRONT_BUTTONS: "Налаштувати передні кнопки" +STR_OPDS_BROWSER: "Браузер OPDS" +STR_COVER_CUSTOM: "Обкладинка + Користувацька" +STR_RECENTS: "Останні" +STR_MENU_RECENT_BOOKS: "Останні книги" +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_CHAPTER_PREFIX: "Розділ: " +STR_PAGES_SEPARATOR: " сторінок | " +STR_BOOK_PREFIX: "Книга: " +STR_KBD_SHIFT: "shift" +STR_KBD_SHIFT_CAPS: "SHIFT" +STR_KBD_LOCK: "LOCK" +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, %.2f%% загалом" +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_SECTION_PREFIX: "Розділ " +STR_UPLOAD: "Завантажити" +STR_BOOK_S_STYLE: "Стиль книги" +STR_EMBEDDED_STYLE: "Вбудований стиль" +STR_OPDS_SERVER_URL: "URL сервера OPDS"