Skip to content

refactor(reader): rename page isolation to solo naming - #1233

Merged
everpcpc merged 5 commits into
mainfrom
refactor/page-solo-naming
Oct 9, 2026
Merged

everpcpc merged 5 commits into
mainfrom
refactor/page-solo-naming

Conversation

@everpcpc

@everpcpc everpcpc commented Oct 9, 2026 •

Copy link
Copy Markdown
Member

What

Renames the page "isolation" vocabulary to solo throughout the app, matching what the feature actually does: a solo page is not paired with its neighbor in dual-page mode.

UI strings (English source):

  • Isolate → Show Solo
  • Cancel Isolation → Cancel Solo
  • Isolate Page %d → Show Page %d Solo
  • Isolate Cover Page → Solo Cover Page (the dual-page cover preference, DIVINA and PDF)
  • The image context-menu settings description now reads "sharing or showing a page solo"

All 10 supported languages re-translated; zh-Hans/zh-Hant/ja/ko keep their existing (already correct) "show alone" wording. The revert action is Cancel Solo rather than a "show paired" phrasing because un-soloing does not guarantee the page pairs (its neighbor may also be solo, or dual-page mode may be off).

Code symbols renamed end to end: ReaderPageIsolationActions → ReaderPageSoloActions, toggleIsolatePage → toggleSoloPage, isPageIsolated/isCurrentPageIsolated → isPageSolo/isCurrentPageSolo, supportsPageIsolationActions → supportsPageSoloActions, canIsolatePageFromCurrentPresentation → canSoloPageFromCurrentPresentation, isolateCoverPage/pdfIsolateCoverPage → soloCoverPage/pdfSoloCoverPage, fetchIsolatePages/updateIsolatePages → fetchSoloPages/updateSoloPages, and the file ReaderPageSoloActions.swift.

Persisted names intentionally kept, with a note at each site:

  • GRDB column isolate_pages_raw — renaming it would buy nothing but a migration.
  • UserDefaults keys isolateCoverPage / pdfIsolateCoverPage — renaming them would silently reset existing users' preferences.

Why

"Isolate" reads as exclusion or export (quarantine the page, take it out of the book), which is misleading — the page stays right where it is, it just shows alone instead of paired. The misleading source string already propagated: de/es/it/ru translated it as quarantine vocabulary, while zh/ja/ko/fr were translated by actual behavior ("show alone"). Aligning the source string with the behavior fixes both halves.

Validation

  • make format
  • make build — iOS, macOS, tvOS all built successfully
  • make localize + ./misc/translate.py list → no missing translations; the five replaced keys were removed with translate.py remove
  • No behavior change; verified by inspection that persisted keys/columns are untouched and every former isolate symbol/string reference was renamed (repo-wide grep), including the title-compare sites and the macOS menu selectors.

Includes make bump to build 642.

Also fixes the root cause of recurring extractionState: stale churn on "Enter Offline Mode": ServerView and ServerCardView built their label with a ternary inside String(localized:), which the strings extractor cannot resolve statically. Both call sites now hoist the branch outside the localized call so every key is a static literal — verified that make localize no longer flags the key.

@everpcpc
everpcpc force-pushed the refactor/page-solo-naming branch from 9b9054d to 433c62b Compare October 9, 2026 05:08
@everpcpc
everpcpc merged commit cd2029f into main Oct 9, 2026
3 checks passed
@everpcpc
everpcpc deleted the refactor/page-solo-naming branch October 9, 2026 05:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant