Fix/hebrew localization#329
Conversation
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.
|
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. |
…paces, and force LTR for HomeHeroLayer
|
Thanks for the review! I've pushed a new commit addressing all your points:
|
|
Sorry this pr slipped my mind. Can you resolve the conflicts? Then I can merge. |
fix |
🐛 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.