From 487613b08267df45c73819d3f5883ed92139bbd4 Mon Sep 17 00:00:00 2001 From: Julia Date: Thu, 25 Jun 2026 00:47:06 -0400 Subject: [PATCH] fix: split inverted orientation label from color filter label (#2421) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary * **What is the goal of this PR?** * Fix the “Inverted” translation so reader orientation and color/filter inversion can use separate labels. * **What changes are included?** * Adds `STR_ORIENTATION_INVERTED` for the inverted portrait orientation option. * Updates the reader orientation setting to use `STR_ORIENTATION_INVERTED` instead of reusing `STR_INVERTED`. * Leaves `STR_INVERTED` for the sleep cover filter and tilt page-turn mode * Adds the new orientation string across all 26 locale YAML files. ## Additional Context * The original issue was found by a user in German, where `STR_INVERTED` was translated as `Hochformat 180°`, which made sense for orientation but not for color filters. * This is a UI-label-only change. It does not change persisted orientation values or settings behavior. * Reviewer note: non-English wording may still benefit from native-speaker review, especially for the new orientation-specific labels and to verify the interchangeable usage between inverted color and inverted tilt page turn direction. --- ### 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? _**< YES >**_ --- lib/I18n/translations/belarusian.yaml | 1 + lib/I18n/translations/catalan.yaml | 1 + lib/I18n/translations/czech.yaml | 1 + lib/I18n/translations/danish.yaml | 1 + lib/I18n/translations/dutch.yaml | 3 ++- lib/I18n/translations/english.yaml | 1 + lib/I18n/translations/finnish.yaml | 3 ++- lib/I18n/translations/french.yaml | 1 + lib/I18n/translations/german.yaml | 3 ++- lib/I18n/translations/hebrew.yaml | 3 ++- lib/I18n/translations/hungarian.yaml | 3 ++- lib/I18n/translations/italian.yaml | 3 ++- lib/I18n/translations/kazakh.yaml | 3 ++- lib/I18n/translations/lithuanian.yaml | 3 ++- lib/I18n/translations/polish.yaml | 3 ++- lib/I18n/translations/portuguese.yaml | 1 + lib/I18n/translations/romanian.yaml | 1 + lib/I18n/translations/russian.yaml | 1 + lib/I18n/translations/slovak.yaml | 3 ++- lib/I18n/translations/slovenian.yaml | 3 ++- lib/I18n/translations/spanish.yaml | 1 + lib/I18n/translations/swedish.yaml | 1 + lib/I18n/translations/turkish.yaml | 3 ++- lib/I18n/translations/ukrainian.yaml | 3 ++- lib/I18n/translations/valencian.yaml | 1 + lib/I18n/translations/vietnamese.yaml | 3 ++- src/SettingsList.h | 7 ++++--- 27 files changed, 44 insertions(+), 17 deletions(-) diff --git a/lib/I18n/translations/belarusian.yaml b/lib/I18n/translations/belarusian.yaml index 3ba890b8..de79ac91 100644 --- a/lib/I18n/translations/belarusian.yaml +++ b/lib/I18n/translations/belarusian.yaml @@ -126,6 +126,7 @@ STR_PAGE_TURN: "Перагортванне" STR_PORTRAIT: "Партрэт" STR_LANDSCAPE_CW: "Ландшафт (CW)" STR_INVERTED: "Інверсія" +STR_ORIENTATION_INVERTED: "Партрэт 180°" STR_LANDSCAPE_CCW: "Ландшафт (CCW)" STR_PREV_NEXT: "Назад/Наперад" STR_NEXT_PREV: "Наперад/Назад" diff --git a/lib/I18n/translations/catalan.yaml b/lib/I18n/translations/catalan.yaml index 7f3680cb..c1bf6c6b 100644 --- a/lib/I18n/translations/catalan.yaml +++ b/lib/I18n/translations/catalan.yaml @@ -136,6 +136,7 @@ STR_PAGE_TURN: "Canvi de pàgina" STR_PORTRAIT: "Vertical" STR_LANDSCAPE_CW: "Horitzontal horari" STR_INVERTED: "Invertit" +STR_ORIENTATION_INVERTED: "Vertical 180°" STR_LANDSCAPE_CCW: "Horitzontal antihorari" STR_PREV_NEXT: "Anterior/Següent" STR_NEXT_PREV: "Següent/Anterior" diff --git a/lib/I18n/translations/czech.yaml b/lib/I18n/translations/czech.yaml index c46b5ab9..696cdd33 100644 --- a/lib/I18n/translations/czech.yaml +++ b/lib/I18n/translations/czech.yaml @@ -131,6 +131,7 @@ STR_PAGE_TURN: "Otáčení stránek" STR_PORTRAIT: "Na výšku" STR_LANDSCAPE_CW: "Na šířku po směru hod. ručiček" STR_INVERTED: "Invertovaný" +STR_ORIENTATION_INVERTED: "Na výšku 180°" STR_LANDSCAPE_CCW: "Na šířku proti směru hod. ručiček" STR_PREV_NEXT: "Předchozí/Další" STR_NEXT_PREV: "Další/Předchozí" diff --git a/lib/I18n/translations/danish.yaml b/lib/I18n/translations/danish.yaml index e6f96b45..cd4ba1ba 100644 --- a/lib/I18n/translations/danish.yaml +++ b/lib/I18n/translations/danish.yaml @@ -136,6 +136,7 @@ STR_PAGE_TURN: "Sideskift" STR_PORTRAIT: "Portræt" STR_LANDSCAPE_CW: "Liggende med uret" STR_INVERTED: "Inverteret" +STR_ORIENTATION_INVERTED: "Portræt 180°" STR_LANDSCAPE_CCW: "Liggende mod uret" STR_PREV_NEXT: "Forrige/Næste" STR_NEXT_PREV: "Næste/Forrige" diff --git a/lib/I18n/translations/dutch.yaml b/lib/I18n/translations/dutch.yaml index d9461477..ee4ca64e 100644 --- a/lib/I18n/translations/dutch.yaml +++ b/lib/I18n/translations/dutch.yaml @@ -135,7 +135,8 @@ STR_SLEEP: "Slaap" STR_PAGE_TURN: "Pagina omslaan" STR_PORTRAIT: "Staand" STR_LANDSCAPE_CW: "Liggend (rechtsom)" -STR_INVERTED: "Omgekeerd" +STR_INVERTED: "Geïnverteerd" +STR_ORIENTATION_INVERTED: "Staand 180°" STR_LANDSCAPE_CCW: "Liggend (linksom)" STR_PREV_NEXT: "Vorige/Volgende" STR_NEXT_PREV: "Volgende/Vorige" diff --git a/lib/I18n/translations/english.yaml b/lib/I18n/translations/english.yaml index 96ebbdd3..ecd7b0e0 100644 --- a/lib/I18n/translations/english.yaml +++ b/lib/I18n/translations/english.yaml @@ -139,6 +139,7 @@ STR_FORCE_REFRESH: "Refresh Screen" STR_PORTRAIT: "Portrait" STR_LANDSCAPE_CW: "Landscape CW" STR_INVERTED: "Inverted" +STR_ORIENTATION_INVERTED: "Portrait 180°" STR_LANDSCAPE_CCW: "Landscape CCW" STR_PREV_NEXT: "Prev/Next" STR_NEXT_PREV: "Next/Prev" diff --git a/lib/I18n/translations/finnish.yaml b/lib/I18n/translations/finnish.yaml index 3ccaa39c..ebe120c1 100644 --- a/lib/I18n/translations/finnish.yaml +++ b/lib/I18n/translations/finnish.yaml @@ -130,7 +130,8 @@ STR_SLEEP: "Lepotila" STR_PAGE_TURN: "Sivunkääntö" STR_PORTRAIT: "Pysty" STR_LANDSCAPE_CW: "Vaaka myötäpäivään" -STR_INVERTED: "Käännetty" +STR_INVERTED: "Käänteinen" +STR_ORIENTATION_INVERTED: "Pysty 180°" STR_LANDSCAPE_CCW: "Vaaka vastapäivään" STR_PREV_NEXT: "Edell/Seur" STR_NEXT_PREV: "Seur/Edell" diff --git a/lib/I18n/translations/french.yaml b/lib/I18n/translations/french.yaml index 9d9e32cd..db4db7ec 100644 --- a/lib/I18n/translations/french.yaml +++ b/lib/I18n/translations/french.yaml @@ -136,6 +136,7 @@ STR_PAGE_TURN: "Page suivante" STR_PORTRAIT: "Portrait" STR_LANDSCAPE_CW: "Paysage" STR_INVERTED: "Inversé" +STR_ORIENTATION_INVERTED: "Portrait 180°" STR_LANDSCAPE_CCW: "Paysage inversé" STR_PREV_NEXT: "Préc/Suiv" STR_NEXT_PREV: "Suiv/Préc" diff --git a/lib/I18n/translations/german.yaml b/lib/I18n/translations/german.yaml index a0f57fdd..e3770ae2 100644 --- a/lib/I18n/translations/german.yaml +++ b/lib/I18n/translations/german.yaml @@ -129,7 +129,8 @@ STR_PAGE_TURN: "Umblättern" STR_FORCE_REFRESH: "Bildschirm regenerieren" STR_PORTRAIT: "Hochformat" STR_LANDSCAPE_CW: "Querformat rechts" -STR_INVERTED: "Hochformat 180°" +STR_INVERTED: "Invertiert" +STR_ORIENTATION_INVERTED: "Hochformat 180°" STR_LANDSCAPE_CCW: "Querformat links" STR_PREV_NEXT: "Zurück/Weiter" STR_NEXT_PREV: "Weiter/Zurück" diff --git a/lib/I18n/translations/hebrew.yaml b/lib/I18n/translations/hebrew.yaml index 43a0beac..7d0835cf 100644 --- a/lib/I18n/translations/hebrew.yaml +++ b/lib/I18n/translations/hebrew.yaml @@ -134,7 +134,8 @@ STR_PAGE_TURN: "העברת דף" STR_FORCE_REFRESH: "רענון מסך מלא" STR_PORTRAIT: "לאורך" STR_LANDSCAPE_CW: "לרוחב (ימינה)" -STR_INVERTED: "הפוך" +STR_INVERTED: "היפוך צבעים" +STR_ORIENTATION_INVERTED: "לאורך 180°" STR_LANDSCAPE_CCW: "לרוחב (שמאלה)" STR_PREV_NEXT: "הקודם/הבא" STR_NEXT_PREV: "הבא/הקודם" diff --git a/lib/I18n/translations/hungarian.yaml b/lib/I18n/translations/hungarian.yaml index 14a5358e..b6f10036 100644 --- a/lib/I18n/translations/hungarian.yaml +++ b/lib/I18n/translations/hungarian.yaml @@ -132,7 +132,8 @@ STR_SLEEP: "Alvás" STR_PAGE_TURN: "Lapozás" STR_PORTRAIT: "Álló" STR_LANDSCAPE_CW: "Fekvő jobbra" -STR_INVERTED: "Fordított" +STR_INVERTED: "Invertált" +STR_ORIENTATION_INVERTED: "Álló 180°" STR_LANDSCAPE_CCW: "Fekvő balra" STR_PREV_NEXT: "Előző/Következő" STR_NEXT_PREV: "Következő/Előző" diff --git a/lib/I18n/translations/italian.yaml b/lib/I18n/translations/italian.yaml index 9ef433b6..f799e256 100644 --- a/lib/I18n/translations/italian.yaml +++ b/lib/I18n/translations/italian.yaml @@ -137,7 +137,8 @@ STR_PAGE_TURN: "Cambio pagina" STR_FORCE_REFRESH: "Refresh" STR_PORTRAIT: "Verticale" STR_LANDSCAPE_CW: "Orizzontale Dx" -STR_INVERTED: "Capovolto" +STR_INVERTED: "Invertito" +STR_ORIENTATION_INVERTED: "Verticale 180°" STR_LANDSCAPE_CCW: "Orizzontale Sx" STR_PREV_NEXT: "Prec/Succ" STR_NEXT_PREV: "Succ/Prec" diff --git a/lib/I18n/translations/kazakh.yaml b/lib/I18n/translations/kazakh.yaml index dfccc77b..067aaa56 100644 --- a/lib/I18n/translations/kazakh.yaml +++ b/lib/I18n/translations/kazakh.yaml @@ -126,7 +126,8 @@ STR_SLEEP: "Ұйқы" STR_PAGE_TURN: "Бет аудару" STR_PORTRAIT: "Тік бағдар" STR_LANDSCAPE_CW: "Көлденең (сағат бағытымен)" -STR_INVERTED: "Төңкерілген" +STR_INVERTED: "Инверсия" +STR_ORIENTATION_INVERTED: "Тік бағдар 180°" STR_LANDSCAPE_CCW: "Көлденең (сағат тіліне қарсы)" STR_PREV_NEXT: "Алдыңғы/Келесі" STR_NEXT_PREV: "Келесі/Алдыңғы" diff --git a/lib/I18n/translations/lithuanian.yaml b/lib/I18n/translations/lithuanian.yaml index d3c43ed3..f79a3222 100644 --- a/lib/I18n/translations/lithuanian.yaml +++ b/lib/I18n/translations/lithuanian.yaml @@ -132,7 +132,8 @@ STR_SLEEP: "Miegas" STR_PAGE_TURN: "Versti psl." STR_PORTRAIT: "Stačias" STR_LANDSCAPE_CW: "Gulsčias (P)" -STR_INVERTED: "Apverstas" +STR_INVERTED: "Invertuotas" +STR_ORIENTATION_INVERTED: "Stačias 180°" STR_LANDSCAPE_CCW: "Gulsčias (A)" STR_PREV_NEXT: "Atgal/Pirmyn" STR_NEXT_PREV: "Pirmyn/Atgal" diff --git a/lib/I18n/translations/polish.yaml b/lib/I18n/translations/polish.yaml index ba46e715..0cb8f698 100644 --- a/lib/I18n/translations/polish.yaml +++ b/lib/I18n/translations/polish.yaml @@ -136,7 +136,8 @@ STR_PAGE_TURN: "Nast. str." STR_FORCE_REFRESH: "Odśwież ekran" STR_PORTRAIT: "Pionowo" STR_LANDSCAPE_CW: "Poziomo P" -STR_INVERTED: "Odwrócony" +STR_INVERTED: "Inwersja" +STR_ORIENTATION_INVERTED: "Pionowo 180°" STR_LANDSCAPE_CCW: "Poziomo L" STR_PREV_NEXT: "Poprz./Nast." STR_NEXT_PREV: "Nast./Poprz." diff --git a/lib/I18n/translations/portuguese.yaml b/lib/I18n/translations/portuguese.yaml index 516651ab..7b68383c 100644 --- a/lib/I18n/translations/portuguese.yaml +++ b/lib/I18n/translations/portuguese.yaml @@ -131,6 +131,7 @@ STR_PAGE_TURN: "Virar página" STR_PORTRAIT: "Retrato" STR_LANDSCAPE_CW: "Paisagem H" STR_INVERTED: "Invertido" +STR_ORIENTATION_INVERTED: "Retrato 180°" STR_LANDSCAPE_CCW: "Paisagem AH" STR_PREV_NEXT: "Ant/Próx" STR_NEXT_PREV: "Próx/Ant" diff --git a/lib/I18n/translations/romanian.yaml b/lib/I18n/translations/romanian.yaml index 67052d10..0fbae3c4 100644 --- a/lib/I18n/translations/romanian.yaml +++ b/lib/I18n/translations/romanian.yaml @@ -136,6 +136,7 @@ STR_PAGE_TURN: "Răsfoire pagină" STR_PORTRAIT: "Vertical" STR_LANDSCAPE_CW: "Orizontal dreapta" STR_INVERTED: "Invers" +STR_ORIENTATION_INVERTED: "Vertical 180°" STR_LANDSCAPE_CCW: "Orizontal stânga" STR_PREV_NEXT: "Înainte/Înapoi" STR_NEXT_PREV: "Înapoi/Înainte" diff --git a/lib/I18n/translations/russian.yaml b/lib/I18n/translations/russian.yaml index ff1187d4..bac25717 100644 --- a/lib/I18n/translations/russian.yaml +++ b/lib/I18n/translations/russian.yaml @@ -140,6 +140,7 @@ STR_FORCE_REFRESH: "Обновление экрана" STR_PORTRAIT: "Портрет" STR_LANDSCAPE_CW: "Ландшафт (CW)" STR_INVERTED: "Инверсия" +STR_ORIENTATION_INVERTED: "Портрет 180°" STR_LANDSCAPE_CCW: "Ландшафт (CCW)" STR_PREV_NEXT: "Назад/Вперёд" STR_NEXT_PREV: "Вперёд/Назад" diff --git a/lib/I18n/translations/slovak.yaml b/lib/I18n/translations/slovak.yaml index b3210422..f13d5b3e 100644 --- a/lib/I18n/translations/slovak.yaml +++ b/lib/I18n/translations/slovak.yaml @@ -137,7 +137,8 @@ STR_PAGE_TURN: "Otáčanie stránok" STR_FORCE_REFRESH: "Obnoviť obrazovku" STR_PORTRAIT: "Na výšku" STR_LANDSCAPE_CW: "Na šírku v smere hodinových ručičiek" -STR_INVERTED: "Obrátený" +STR_INVERTED: "Invertovaný" +STR_ORIENTATION_INVERTED: "Na výšku 180°" STR_LANDSCAPE_CCW: "Na šírku proti smeru hodinových ručičiek" STR_PREV_NEXT: "Predchádzajúca/Nasledujúca" STR_NEXT_PREV: "Nasledujúca/Predchádzajúca" diff --git a/lib/I18n/translations/slovenian.yaml b/lib/I18n/translations/slovenian.yaml index c01ebc14..317bcb43 100644 --- a/lib/I18n/translations/slovenian.yaml +++ b/lib/I18n/translations/slovenian.yaml @@ -132,7 +132,8 @@ STR_SLEEP: "Spanje" STR_PAGE_TURN: "Obračanje strani" STR_PORTRAIT: "Pokončno" STR_LANDSCAPE_CW: "Ležeče (v smeri urinega kazalca)" -STR_INVERTED: "Obrnjeno" +STR_INVERTED: "Invertirano" +STR_ORIENTATION_INVERTED: "Pokončno 180°" STR_LANDSCAPE_CCW: "Ležeče (proti smeri urinega kazalca)" STR_PREV_NEXT: "Nazaj/Naprej" STR_NEXT_PREV: "Naprej/Nazaj" diff --git a/lib/I18n/translations/spanish.yaml b/lib/I18n/translations/spanish.yaml index 8156f891..4ffe66e4 100644 --- a/lib/I18n/translations/spanish.yaml +++ b/lib/I18n/translations/spanish.yaml @@ -138,6 +138,7 @@ STR_FORCE_REFRESH: "Refrescar pant." STR_PORTRAIT: "Vertical" STR_LANDSCAPE_CW: "Horizontal (horario)" STR_INVERTED: "Invertido" +STR_ORIENTATION_INVERTED: "Al reves" STR_LANDSCAPE_CCW: "Horizontal (antihorario)" STR_PREV_NEXT: "Ant./Sig." STR_NEXT_PREV: "Sig./Ant." diff --git a/lib/I18n/translations/swedish.yaml b/lib/I18n/translations/swedish.yaml index ad588f19..19105830 100644 --- a/lib/I18n/translations/swedish.yaml +++ b/lib/I18n/translations/swedish.yaml @@ -138,6 +138,7 @@ STR_FORCE_REFRESH: "Uppdatera skärmen" STR_PORTRAIT: "Porträtt" STR_LANDSCAPE_CW: "Landskap medurs" STR_INVERTED: "Inverterad" +STR_ORIENTATION_INVERTED: "Porträtt 180°" STR_LANDSCAPE_CCW: "Landskap moturs" STR_PREV_NEXT: "Förra/Nästa" STR_NEXT_PREV: "Nästa/Förra" diff --git a/lib/I18n/translations/turkish.yaml b/lib/I18n/translations/turkish.yaml index 0faa13ec..ac6dd32c 100644 --- a/lib/I18n/translations/turkish.yaml +++ b/lib/I18n/translations/turkish.yaml @@ -130,7 +130,8 @@ STR_SLEEP: "Uyku" STR_PAGE_TURN: "Sayfa Çevirme" STR_PORTRAIT: "Dikey" STR_LANDSCAPE_CW: "Yatay (Saat Yönü)" -STR_INVERTED: "Ters" +STR_INVERTED: "Negatif" +STR_ORIENTATION_INVERTED: "Dikey 180°" STR_LANDSCAPE_CCW: "Yatay (Saat Yönü Tersi)" STR_PREV_NEXT: "Önceki/Sonraki" STR_NEXT_PREV: "Sonraki/Önceki" diff --git a/lib/I18n/translations/ukrainian.yaml b/lib/I18n/translations/ukrainian.yaml index c60de68f..6a34e1a9 100644 --- a/lib/I18n/translations/ukrainian.yaml +++ b/lib/I18n/translations/ukrainian.yaml @@ -137,7 +137,8 @@ STR_PAGE_TURN: "Наст. сторінка" STR_FORCE_REFRESH: "Оновити екран" STR_PORTRAIT: "Книжкова" STR_LANDSCAPE_CW: "Альбом. за год." -STR_INVERTED: "Перевернутий" +STR_INVERTED: "Інверсія" +STR_ORIENTATION_INVERTED: "Книжкова 180°" STR_LANDSCAPE_CCW: "Альбом. проти год." STR_PREV_NEXT: "Попер/Наст" STR_NEXT_PREV: "Наст/Попер" diff --git a/lib/I18n/translations/valencian.yaml b/lib/I18n/translations/valencian.yaml index 6dd28a25..89a7d962 100644 --- a/lib/I18n/translations/valencian.yaml +++ b/lib/I18n/translations/valencian.yaml @@ -141,6 +141,7 @@ STR_PAGE_TURN: "Canvi de pàgina" STR_PORTRAIT: "Vertical" STR_LANDSCAPE_CW: "Horitzontal horari" STR_INVERTED: "Invertit" +STR_ORIENTATION_INVERTED: "Vertical 180°" STR_LANDSCAPE_CCW: "Horitzontal antihorari" STR_PREV_NEXT: "Anterior/Següent" STR_NEXT_PREV: "Següent/Anterior" diff --git a/lib/I18n/translations/vietnamese.yaml b/lib/I18n/translations/vietnamese.yaml index 2551b275..e73385fc 100644 --- a/lib/I18n/translations/vietnamese.yaml +++ b/lib/I18n/translations/vietnamese.yaml @@ -137,7 +137,8 @@ STR_PAGE_TURN: "Lật trang" STR_FORCE_REFRESH: "Làm tươi màn hình" STR_PORTRAIT: "Dọc" STR_LANDSCAPE_CW: "Ngang (thuận)" -STR_INVERTED: "Lật ngược" +STR_INVERTED: "Đảo màu" +STR_ORIENTATION_INVERTED: "Dọc 180°" STR_LANDSCAPE_CCW: "Ngang (ngược)" STR_PREV_NEXT: "Trước/Sau" STR_NEXT_PREV: "Sau/Trước" diff --git a/src/SettingsList.h b/src/SettingsList.h index 695e8eec..a0e43cc8 100644 --- a/src/SettingsList.h +++ b/src/SettingsList.h @@ -151,9 +151,10 @@ inline std::vector getSettingsList(const SdCardFontRegistry* regist StrId::STR_CAT_READER), SettingInfo::Toggle(StrId::STR_HYPHENATION, &CrossPointSettings::hyphenationEnabled, "hyphenationEnabled", StrId::STR_CAT_READER), - SettingInfo::Enum(StrId::STR_ORIENTATION, &CrossPointSettings::orientation, - {StrId::STR_PORTRAIT, StrId::STR_LANDSCAPE_CW, StrId::STR_INVERTED, StrId::STR_LANDSCAPE_CCW}, - "orientation", StrId::STR_CAT_READER), + SettingInfo::Enum( + StrId::STR_ORIENTATION, &CrossPointSettings::orientation, + {StrId::STR_PORTRAIT, StrId::STR_LANDSCAPE_CW, StrId::STR_ORIENTATION_INVERTED, StrId::STR_LANDSCAPE_CCW}, + "orientation", StrId::STR_CAT_READER), SettingInfo::Toggle(StrId::STR_EXTRA_SPACING, &CrossPointSettings::extraParagraphSpacing, "extraParagraphSpacing", StrId::STR_CAT_READER), SettingInfo::Toggle(StrId::STR_TEXT_AA, &CrossPointSettings::textAntiAliasing, "textAntiAliasing",