TMDB's `collection/{id}?language=fr` returns one default `poster_path` /
`backdrop_path` per part — almost always the English-favored asset
regardless of the language query param. The only way to actually get
artwork in the user's language is to call
`/movie/{id}/images?include_image_language=fr,null,en` separately and
pick the best localized poster/backdrop.
Two consumers were affected:
- `TmdbCollectionSourceResolver.resolveCollection` — Collection-folder
rows on home (user-defined "Star Wars Saga", "Marvel", etc.) showed
English posters even when the app's TMDB language is `fr`.
- `TmdbMetadataService.fetchCollection` — the "Saga" / "Belongs to
collection" row on movie detail pages had the same problem.
Both now fan out one parallel `/images` call per part, ranked through the
existing `selectBestLocalizedImagePath` helper (already used for logos),
and fall back to `part.posterPath` / `part.backdropPath` only when no
localized image is available.
The new helper `TmdbMetadataService.fetchLocalizedArtwork()` is shared
and cached per `(tmdbId, mediaType, language)`. For English locales the
extra call is skipped — the default poster path is already English-favored.
Mirrors the equivalent fix in NuvioTV (the `fetchMovieCollection` path
already does this; `resolveCollection` did not).
- Synchronized strings.xml with the latest source strings.
- Fixed inconsistent terms to match the current app context.
- Added missing translation keys.
Added Indonesian (Bahasa Indonesia) translation to the project.
Files updated:
- Translated strings added to the `values-id` directory.
- Hooked up the new language option in `AppLanguage.kt`.
- Registered the `id` locale in Android's `locale_config.xml`.
`updates_downloading_progress` in values-fr/strings.xml used `%1$d%%` —
Compose Multiplatform Resources does NOT interpret `%%` as an escape
for a literal `%`. The runtime substitutes `%1$d` with the integer arg
and leaves the rest of the string verbatim, so the user sees
`Téléchargement 26%%` instead of `Téléchargement 26 %`.
Same change applied to two adjacent FR keys that already only had a
single trailing `%` (no doubled bug), but now also use NBSP (U+00A0)
before the symbol to match French typography:
- `streams_resume_from_percent`: `Reprendre depuis %1$d%` → `... %1$d %`
- `settings_playback_threshold_percentage_value`: `%1$s%` → `%1$s %`
EN strings keep `Downloading %1$d%` / `Resume from %1$d%` / `%1$s%`
(English convention: no space before `%`).
Port of NuvioMedia/NuvioTV#1704.
Adds a Sort Order setting to the Continue Watching section with two modes:
- Default: sort all items by most recently watched
- Streaming Style: released/in-progress items first (by recency), unaired
next-up items pushed to the end sorted by ascending air date