feat: update Russian translation#2017
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📜 Recent review details⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
📝 WalkthroughWalkthroughThis PR updates the Russian translations YAML adding new UI strings (refresh, restart hint, navigation, XTC labels, search) and a large block for OPDS, auto page-turn, font management, crash/firmware recovery, and interaction hints; two keys were reordered. ChangesRussian Translation Updates
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@lib/I18n/translations/russian.yaml`:
- Line 324: Fix the spelling of the Russian size label by updating the
STR_SIZE_LABEL entry in russian.yaml: change the value from "Раземер: " to the
correct "Размер: " so the translation key STR_SIZE_LABEL contains the proper
Cyrillic spelling.
- Line 301: The key STR_SET_SLEEP_COVER contains English text; replace its value
with the Russian translation — update STR_SET_SLEEP_COVER: "Установить обложку"
(or another context-appropriate Russian phrasing) so the translation file is
fully localized and consistent.
- Line 341: The translation string STR_KB_HINT_EDIT_ENTRY contains a typo
("записиy"); open the translations resource and update the value for
STR_KB_HINT_EDIT_ENTRY from "Удерживайте ВВЕРХ для редактирования записиy" to
"Удерживайте ВВЕРХ для редактирования записи" (remove the stray Latin 'y') and
save the russian.yaml so the corrected Russian keyboard hint is used.
- Line 345: The translation string STR_KB_HINT_CLEAR_TEXT contains typos; update
its value to use correct Russian: replace "что бы" with the conjunction "чтобы"
and fix "отчитисть" to "очистить" so the string reads: Удерживайте <— чтобы
очистить весь текст. Locate STR_KB_HINT_CLEAR_TEXT in the russian.yaml and
replace the existing value accordingly.
- Line 349: Fix the spelling in the Russian translation for the key
STR_KB_HINT_URL_SNIPPETS by changing the value string from "Нажмите URL для
выбора шабонов" to "Нажмите URL для выбора шаблонов" so the word "шаблонов"
(templates) is correct; locate the STR_KB_HINT_URL_SNIPPETS entry in the
translations and update its value accordingly.
- Around line 318-319: Fix the typos in the Russian translations for the font
installation messages: update the value for STR_FONT_INSTALLED from "Шрив
установлен!" to "Шрифт установлен!" and update STR_FONT_INSTALL_FAILED from "Не
удалоь установить шрифт" to "Не удалось установить шрифт" so the keys
STR_FONT_INSTALLED and STR_FONT_INSTALL_FAILED contain the corrected Russian
words.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 2cf5b4bb-fcb3-437a-8860-75bf4e1e348a
📒 Files selected for processing (1)
lib/I18n/translations/russian.yaml
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: build
- GitHub Check: cppcheck
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2026-02-23T22:11:42.181Z
Learnt from: ariel-lindemann
Repo: crosspoint-reader/crosspoint-reader PR: 1133
File: lib/I18n/translations/finnish.yaml:92-92
Timestamp: 2026-02-23T22:11:42.181Z
Learning: In translation YAML files located in lib/I18n/translations/, literal percent signs (%) in strings (e.g., STR_HIDE_BATTERY, STR_GO_TO_PERCENT, STR_PERCENT_STEP_HINT) do not require escaping as %% and this convention is consistent across all language translations. Ensure that this pattern is followed for all YAML files in this directory to avoid introducing incorrect formatting markers in localized strings.
Applied to files:
lib/I18n/translations/russian.yaml
📚 Learning: 2026-03-25T10:28:30.516Z
Learnt from: jpirnay
Repo: crosspoint-reader/crosspoint-reader PR: 1495
File: lib/I18n/translations/german.yaml:294-322
Timestamp: 2026-03-25T10:28:30.516Z
Learning: In crosspoint-reader, it is expected to include “pre-emptive” translation keys in non-English YAML files before the corresponding English keys exist (e.g., german.yaml ahead of en.yaml). When reviewing changes to files under lib/I18n/translations/*.yaml, do not flag missing corresponding English keys in non-English locales as an error if the repo’s gen_i18n.py fallback mechanism is intended to handle missing English keys safely until the pending PRs land.
Applied to files:
lib/I18n/translations/russian.yaml
📚 Learning: 2026-04-17T18:59:20.878Z
Learnt from: KymAndriy
Repo: crosspoint-reader/crosspoint-reader PR: 1684
File: lib/I18n/translations/ukrainian.yaml:29-29
Timestamp: 2026-04-17T18:59:20.878Z
Learning: For Ukrainian (and other Slavic-language) translation YAML strings in lib/I18n/translations/*.yaml: if a format string contains a numeric placeholder produced via snprintf-style formatting (e.g., %zu) and runtime noun inflection is not feasible, place the relevant noun in genitive plural before the number in the string (e.g., "мереж %zu") rather than after it (e.g., "мережу %zu"). This avoids incorrect case forms that would otherwise result from the value affecting inflection (e.g., wrong forms like "мережу/мережі/мереж"). In such cases, do not flag the word order as incorrect.
Applied to files:
lib/I18n/translations/russian.yaml
🔇 Additional comments (10)
lib/I18n/translations/russian.yaml (10)
133-133: LGTM!Also applies to: 174-174, 183-184
232-234: LGTM!Also applies to: 243-243, 270-270
302-304: LGTM!
312-317: LGTM!
320-323: LGTM!
325-334: LGTM!
335-340: LGTM!
342-344: LGTM!
346-348: LGTM!
350-362: LGTM!
* fix: silent-reboot on wifi activity exit to clear heap fragmentation (crosspoint-reader#1908) WiFi/LWIP/netif teardown scatters long-lived allocations across the heap, leaving ~50KB of contiguous space unrecoverable without a reboot. Reboot the SoC on exit from any wifi-using activity to guarantee a clean heap. An RTC_NOINIT flag survives the reboot and tells setup() to skip the boot splash and route the user back where they came from: - File transfer / Calibre / OPDS / Font download -> home - KOReader sync -> currently-open EPUB Activities check WiFi.getMode() before rebooting, so backing out of the network mode menu without joining doesn't trigger a cycle. KOSync also esp_wifi_stop()s after the sync result so the radio is off while the user reads it; full teardown happens at the reboot. ## Additional Context The silent reboot skips the booting splash screen - it visibly looks like a screen refresh. This does cause a disconnection/reconnection blip for developers actively pulling logs over serial, but `pio device monitor` and the like successfully reconnect and feed in the early boot serial. as an example: ``` [256676] [DBG] [ACT] Exiting activity: KOReaderSync [256706] [DBG] [MAIN] Silent restart (target=reader) ESP-ROM:esp32c3-api1-20210207 Build:Feb 7 2021 rst:0xc (RTC_SW_CPU_RST),boot:0xf (SPI_FAST_FLASH_BOOT) Saved PC:0x403872bc SPIWP:0xee mode:DIO, clock div:1 load:0x3fcd72a0,len:0x990 load:0x403cbf10,len:0xac8 load:0x403ce710,len:0x4d28 entry 0x403cbf10 [22] [INF] [MAIN] Hardware detect: X4 [29] [SD] SD card detected [43] [DBG] [CPS] Settings loaded from file [58] [DBG] [KRS] Loaded KOReader credentials for user: jeremydk [69] [DBG] [OPS] Loaded 1 OPDS servers from file [69] [DBG] [UI] Using Lyra theme [70] [DBG] [MAIN] Starting CrossPoint version 1.2.0-dev-detached-bde75787 ... [203] [DBG] [ACT] Entering activity: Reader [211] [DBG] [EBP] Loading ePub: /Halting State - Charles Stross.epub [221] [DBG] [BMC] Loaded cache data: 51 spine, 41 TOC entries [246] [DBG] [CSS] Loaded 41 rules from cache [247] [DBG] [EBP] Loaded ePub: /Halting State - Charles Stross.epub ``` --- ### 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_ * fix: update Italian translation (crosspoint-reader#1970) ## Summary * **What is the goal of this PR?** Update the Italian translation. * **What changes are included?** Took the latest `english.yaml` as reference and updated `italian.yaml` accordingly, translating new strings and revising existing ones where needed. Specific changes can be inspected from the diff. ## Additional Context * Nothing special to flag — happy to adjust any wording the reviewer disagrees with. --- ### 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**_ — Claude provided a first-pass draft; I revised and rewrote a substantial portion by hand. * fix: several QoL updates for SD font's UI (crosspoint-reader#1965) ## Summary * **What is the goal of this PR?** Improve the UI based on feedback from someone on discord > Downloading ALL fonts feature. > 1.1 Disable sleep when downloading, in my case went directly to sleep just right after downloading. > 1.2 It would be great to have and overall progress indicator as we only have the indication of each font family > 1.3 Any cancel or pause function might come in handy in case battery is running out and then resume or retry with pending fonts * **What changes are included?** - Now the UI can show overall progress across every file being downloaded in the batch, not just progress inside the current family. - Extended `HttpDownloader::downloadToFile()` to accept a cancel flag and abort the download. - Rendered a cancel button in the font download UI while a download is in progress. - `preventAutoSleep()` in `FontDownloadActivity.h` now returns true for `state_ == COMPLETE` and `state_ == ERROR` in addition to `LOADING_MANIFEST` and `DOWNLOADING` ## Additional Context Not very satisfied with how `HttpDownloader.cpp` is right now, might try to refactor it after v1.3.0 --- ### 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**_ * feat: Add swedish hyphenation (crosspoint-reader#1637) ## Summary * Add swedish hyphenation using scripts/update_hypenation.sh * Add hyphenation test data using the Swedish translation of Andy Weir's Project Hail Mary --- ### 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? _**NO**_ * fix: use power button held time for shutdown logic (crosspoint-reader#1890) ## Summary * **What is the goal of this PR?** Fix incorrect power button long-press detection during shutdown/wake verification by introducing dedicated power button timing logic. * **What changes are included?** * Added getPowerButtonHeldTime() to HalGPIO as a wrapper over input manager logic * Replaced generic getHeldTime() usage with power-button-specific timing in verifyPowerButtonWakeup() * Ensures shutdown/wake decision is based only on actual power button hold duration, not any-button timing * Minor header update for new API exposure in HalGPIO.h ## Additional Context This fixes a bug where holding another button while briefly pressing the power button could incorrectly trigger shutdown behavior due to shared timing state (getHeldTime()). The change isolates power button timing to prevent cross-button interference and makes shutdown logic reliable during multi-button interactions. No behavioral changes are expected outside of power-button handling logic. **Dependencies** - SDK PR: crosspoint-reader/community-sdk#3 This PR requires the `community-sdk` submodule to be updated after the SDK change is merged. - Fixes: crosspoint-reader#1881 --- ### AI Usage Did you use AI tools to help write this code? _**PARTIALLY**_ * fix: prevent card overflow on screens (crosspoint-reader#1943) ## Summary prevent card overflow ## Additional Context <img width="1920" height="1080" alt="bug" src="https://github.com/user-attachments/assets/df84e233-908e-4ce1-8289-d0e9b579bc13" /> <img width="1920" height="1080" alt="Bug" src="https://github.com/user-attachments/assets/cfd20f51-6421-4271-9a62-9c1987cc0dd0" /> <img width="1920" height="1080" alt="fix" src="https://github.com/user-attachments/assets/4fbe83fe-5376-4393-bd45-a825f24e19e3" /> <img width="1920" height="1080" alt="fix2" src="https://github.com/user-attachments/assets/4397848e-d8fa-4c51-ab4d-c32b2fcf33d1" /> --- ### AI Usage Did you use AI tools to help write this code? _**NO**_ * fix: update URL-encoded image during EPUB optimization (crosspoint-reader#1985) ## Summary * **What is the goal of this PR?** Fix EPUB optimization when XHTML image references are URL-encoded. * **What changes are included?** The optimizer already converts image files to `.jpg`, but XHTML files could still reference the original URL-encoded image path, for example: ```html <img src="images/wensday%201%20full%202.png"> ```` The optimized EPUB then contained the converted file: ```text images/wensday 1 full 2.jpg ``` but the XHTML still pointed to the old `.png`, so CrossPoint failed to extract/render the image. The issue was that the previous replacement logic matched only the plain filename form, such as: ```text wensday 1 full 2.png ``` but not the URL-encoded form: ```text wensday%201%20full%202.png ``` This PR updates XHTML image `src` attributes through the existing DOMParser pass by decoding and resolving the image path before matching it against renamed images. After this fix, the optimized EPUB correctly rewrites the XHTML image reference to the generated `.jpg`, and the image renders correctly. --- ### 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**_ --- Please let me know if you have questions, Thank you! * chore: Update spanish.yaml (crosspoint-reader#2011) * fix: prune books missing form sd card in recent books list (crosspoint-reader#1959) * fix: bump open-x4-sdk to clear grayscale state after AA cleanup (crosspoint-reader#2022) Pulls in community-sdk PR #9, which clears inGrayscaleMode inside cleanupGrayscaleBuffers() after the restored BW frame is written back into RED RAM. Without this, the next BW page turn would still see the flag set and trigger a redundant grayscaleRevert() refresh, producing visible ghosting on the X4 with text anti-aliasing enabled. Regression introduced by SDK commit 0a8ada2 (factory LUT grayscale support), which removed a redundant inGrayscaleMode guard in grayscaleRevert() and so caused the cleanup to actually run for the first time. Bypassing rules to avoid this going stale and all nightly builds being broken for x4 users * feat: add the Domitian font family (crosspoint-reader#2016) * fix: harden EPUB optimiser UI gating, size reporting, and picker teardown (crosspoint-reader#1947) Co-authored-by: Justin Mitchell <justin@jmitch.com> * feat: update Russian translation (crosspoint-reader#2017) Co-authored-by: muhas <mail@muhas.name> * chore: add 3-minute sleep option (crosspoint-reader#1948) * fix: address upstream sync review comments --------- Co-authored-by: Jeremy Klein <jeremydk@gmail.com> Co-authored-by: luca <31419534+alan0ford@users.noreply.github.com> Co-authored-by: WuTofu <5987870+WuTofu@users.noreply.github.com> Co-authored-by: Stefan Blixten Karlsson <sbkarlsson@gmail.com> Co-authored-by: marcinoktawian <marcin.oktawian@gmail.com> Co-authored-by: Kira <104837532+Kirillka8996@users.noreply.github.com> Co-authored-by: Blue <felicisimone9@gmail.com> Co-authored-by: mvidelatraduc <113857985+mvidelatraduc@users.noreply.github.com> Co-authored-by: KemoNine <mcrosson@users.noreply.github.com> Co-authored-by: Justin Mitchell <justin@jmitch.com> Co-authored-by: Matteo Scopel <matteo@scopel.email> Co-authored-by: zgredex <112968378+zgredex@users.noreply.github.com> Co-authored-by: muhas <muhas@muhas.ru> Co-authored-by: muhas <mail@muhas.name>
Co-authored-by: muhas <mail@muhas.name>
Summary
Adds new Russian strings for recently merged features!
And the lines in russian.yaml are sorted the same way as in the english.yaml file to simplify future translations.
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? NO