Repository navigation
feat(settings): choose the content language, with upload dates read in it - #177
Merged
Merged
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
A-EDev
force-pushed
the
feat/player-audio-video
branch
from
October 24, 2026 11:14
10b463d to
aa0ba89
Compare
A-EDev
force-pushed
the
feat/content-language
branch
from
October 24, 2026 11:14
e50a4d3 to
6e37c1f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Third and last Phase 5 PR of the InnerTube parity plan (K5, Q3). It is stacked on #176.
core/locale.rskeeps the language and normalises it the way Flow for Android does (normalizeYouTubeHostLanguage, with Android's test vectors): Brazilian and European Portuguese and three Chinese variants stay apart, other regional variants collapse to their language.playerrequests, video and music, which stay English so every playability rule keeps working. Requests whose body has no context of its own get it from the transport, which keepsplayerEnglish too.json/age_patterns.rs): 80 tables including Hebrew's dual forms.Related issue
Change type
Validation
pnpm test: 366 tests passedpnpm build: passedcargo fmt --manifest-path src-tauri/Cargo.toml --all -- --check: passedcargo clippy --manifest-path src-tauri/Cargo.toml --all-targets --all-features: no errors; lib warnings 545 (main: 773). No new warnings on changed lines beyond thetoo_many_linesone feat(player): Stable volume and volume normalized across videos #176 notes.cargo test --manifest-path src-tauri/Cargo.toml --all-targets --all-features: 781 passed, 0 failed, 6 ignoredI smoke-tested the affected desktop behavior.
A new
tests/innertube_locale.rsreads real captures in German, French, Japanese, Spanish, Russian and Brazilian Portuguese. For each language:It runs in its own binary because it sets the process-wide language.
Unit tests cover ages in nine languages (including Hebrew's "יומיים" and Chinese "3天前"), word bounds, counts in five scripts, and the normaliser.
Every language in the setting resolves to a date table.
Smoke test on macOS (Apple Silicon), test profile, content language German:
Not checked:
Screenshots or recordings
Risk and compatibility
No migrations and no new dependencies.
Off by default: with no language set, requests and parsing are as before.
Outside English, abbreviated view counts have no number, so FlowNeuro and Home score those videos without their popularity.
Cached pages keep the language they were fetched in until they refresh.
No new secrets, private data, telemetry, or broad Tauri permissions were introduced.
User-facing documentation was updated where needed.
Dependency and lockfile changes are intentional and limited to this PR.
Breaking changes and upgrade steps are clearly documented.