Skip to content

Fix/hebrew localization#329

Merged
ProdigyV21 merged 13 commits into
ProdigyV21:mainfrom
test01203:fix/hebrew-localization
Jun 12, 2026
Merged

Fix/hebrew localization#329
ProdigyV21 merged 13 commits into
ProdigyV21:mainfrom
test01203:fix/hebrew-localization

Conversation

@test01203

Copy link
Copy Markdown
Contributor

🐛 Bug Fixes & Improvements
Global RTL Support: Forced RTL layout direction globally across the app when Hebrew (iw or he) is selected as the app language.
Player UI Excluded from RTL: Explicitly wrapped PlayerScreen in a CompositionLocalProvider with LayoutDirection.Ltr. This ensures that the video player controls, scrubbers, and icons remain in their standard Left-to-Right orientation, preventing confusing reversed playback controls.
TMDB API Localization: Added a custom OkHttp Interceptor (TmdbInterceptor) to inject language=he into all TMDB API requests when the app is set to Hebrew.
Locale Code Mapping: Added a mapping in MediaRepository to convert Android's legacy iw locale code to the standard he required by TMDB for proper metadata and poster fetching.
Category Translations: Added localized strings for the dynamically generated "Top 10 Movies/Shows Today" rows when Hebrew is active.
Text Readability (Drop Shadows): Added Shadow parameters to text components in HomeScreen, MediaCard, and ContinueWatchingCard. This ensures that category titles and metadata text below posters remain clearly visible and readable even when placed over bright or white background art.
📸 UI Changes
D-Pad navigation now correctly moves left/right visually according to the RTL layout on the Home Screen.
Media titles and years now have a subtle black drop-shadow for improved contrast.

NuvioTV Dev added 7 commits June 6, 2026 14:54
Details:

- Force RTL layout direction globally when Hebrew is selected.

- Keep PlayerScreen in LTR so video controls remain standard.

- Add drop shadow to category titles and card texts to improve contrast on bright backgrounds.

- Add OkHttp Interceptor to force TMDB API to use 'he' language when Hebrew is selected.

- Map 'iw' to 'he' in MediaRepository for TMDB compatibility.
Map physical Left/Right keys to logical keys based on LayoutDirection so navigation correctly moves left/right when RTL layout is active.
Map physical Left/Right keys to logical keys based on LayoutDirection so navigation between sidebar and content columns correctly moves left/right when RTL layout is active.
Map physical Left/Right keys to logical keys based on LayoutDirection so navigation between tabs and streams correctly moves left/right when RTL layout is active.
Resolved conflicts in StreamSelector.kt by preserving the new filter UI from main while re-applying RTL D-Pad navigation fix. Resolved strings.xml trivially by keeping both sets of new strings.
Added streamSearchStartTime, pluginScrapersLoading, and loadingPluginNames to StreamSelector signature to match DetailsScreen usage after merge.
@ProdigyV21

Copy link
Copy Markdown
Owner

I checked PR329. It merges cleanly and both Play + Sideload Kotlin compiles pass.

The feature is useful, especially for Hebrew users, but I would not merge yet because there is one real behavior issue:

In DetailsViewModel, plugin scrapers can keep isLoadingStreams=true forever if normal addons finish with no streams and plugin scrapers also return no results. The plugin job clears pluginScrapersLoading in finally, but it does not clear isLoadingStreams. So the stream selector can stay stuck in a loading state even when all searching is done.

Please set isLoadingStreams=false when the plugin scraper job finishes and there are no remaining streams/loading jobs.

Also please clean the trailing whitespace from git diff --check before merge.

After those two fixes, I think this is safe and useful to merge.

@test01203

Copy link
Copy Markdown
Contributor Author

Thanks for the review! I've pushed a new commit addressing all your points:

  1. Fixed isLoadingStreams logic: Updated the finally block of the pluginScraperJob in DetailsViewModel.kt. It now correctly evaluates whether all other stream-fetching jobs (loadStreamsJob, vodAppendJob, homeServerAppendJob) have finished and clears isLoadingStreams accordingly, preventing the infinite loading state.
  2. Cleaned Trailing Whitespaces: Removed all the trailing whitespaces that showed up in git diff --check.
  3. Hero UI Improvement (Bonus): I also wrapped the HeroSection in HomeScreen.kt with a LayoutDirection.Ltr provider. Previously, in RTL mode, the hero text (title and synopsis) was mirrored to the right side of the screen. This caused it to obscure the main character/faces in most background images (since backdrops usually place characters on the right). Now it stays neatly on the left side, which significantly improves readability for Hebrew users!
    Everything compiles cleanly. Let me know if it's good to merge! 🚀

@ProdigyV21

Copy link
Copy Markdown
Owner

Sorry this pr slipped my mind. Can you resolve the conflicts? Then I can merge.

@test01203

Copy link
Copy Markdown
Contributor Author

Sorry this pr slipped my mind. Can you resolve the conflicts? Then I can merge.

fix

@ProdigyV21 ProdigyV21 merged commit be8d1c2 into ProdigyV21:main Jun 12, 2026
1 check passed
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.

2 participants