Skip to content

fix: skip selectDubbedLanguage when disable_auto_dubbing is enabled#3955

Open
muhamedfazalps wants to merge 2 commits into
code-charity:masterfrom
muhamedfazalps:fix/disable-auto-dubbing-override
Open

fix: skip selectDubbedLanguage when disable_auto_dubbing is enabled#3955
muhamedfazalps wants to merge 2 commits into
code-charity:masterfrom
muhamedfazalps:fix/disable-auto-dubbing-override

Conversation

@muhamedfazalps

Copy link
Copy Markdown

Problem

Fixes #3950 — "Disable auto dubbing" option ignored when defaultDubbedLanguage is set

When "Disable auto dubbing" and "Hide auto-dubbed options in menu" are both enabled, and a language is selected in defaultDubbedLanguage, YouTube still plays auto-dubbed audio.

Root Cause

In functions.js L461, selectDubbedLanguage() is called whenever player_default_dubbed_language is set — regardless of whether disable_auto_dubbing is enabled.

Execution order:

  1. disableAutoDubbing() runs → selects original audio track
  2. selectDubbedLanguage() runs → overwrites with auto-dubbed track

Since selectDubbedLanguage() runs last, it overrides the original track selection.

Fix

Add disable_auto_dubbing !== true check before calling selectDubbedLanguage():

// Before:
if (ImprovedTube.storage.player_default_dubbed_language && ImprovedTube.storage.player_default_dubbed_language !== 'disabled') {
    ImprovedTube.selectDubbedLanguage();
}

// After:
if (ImprovedTube.storage.player_default_dubbed_language && ImprovedTube.storage.player_default_dubbed_language !== 'disabled' && ImprovedTube.storage.disable_auto_dubbing !== true) {
    ImprovedTube.selectDubbedLanguage();
}

Testing

  • Enable "Disable auto dubbing" + set defaultDubbedLanguage → should play original audio
  • Disable "Disable auto dubbing" + set defaultDubbedLanguage → should play dubbed audio
  • Enable "Disable auto dubbing" without defaultDubbedLanguage → should play original audio

If this fix helped, consider buying me a coffee! ☕
Buy Me A Coffee

When "Disable auto dubbing" and "defaultDubbedLanguage" are both
enabled, selectDubbedLanguage() was still called and overrode the
original audio track selection made by disableAutoDubbing().

Add check for disable_auto_dubbing before calling selectDubbedLanguage
so that when auto-dubbing is disabled, the original audio track is
preserved.

Fixes code-charity#3950
@communism420

Copy link
Copy Markdown

Hi!

When "Disable auto dubbing" is enabled, the extension should completely avoid auto-generated dubs.

The logic should be:

  • If the user has selected a language in defaultDubbedLanguage and there is a real (non-auto-generated) dub available for that language → use it.
  • If there is no real dub for the selected defaultDubbedLanguage (or only auto-generated dubs exist), then fall back to the original audio track.

In other words: we should only use the language from defaultDubbedLanguage when it's a real dub. Otherwise, original audio should be preferred over any auto-generated dubbing.

@communism420

Copy link
Copy Markdown

@muhamedfazalps

Address maintainer feedback: when disable_auto_dubbing is true and
defaultDubbedLanguage is set, the extension should still try to find
a real (non-auto-generated) dub for the selected language. Only fall
back to original audio if no real dub exists.

Changes:
- selectDubbedLanguage() now accepts skipAutoGenerated parameter
- When true, only matches exact language codes (e.g. 'en') and skips
  auto-generated dubs with numeric suffixes (e.g. 'en.1', 'en.2')
- Caller passes skipAutoGenerated=true when disable_auto_dubbing is
  enabled, so real dubs are still used when available

This preserves the expected behavior:
1. disableAutoDubbing() selects original audio (fallback)
2. selectDubbedLanguage(true) tries to find a real dub
3. If found → uses it (overriding the original selection)
4. If not found → original audio remains (from step 1)
@muhamedfazalps

Copy link
Copy Markdown
Author

@communism420 Thanks for the detailed feedback! I have updated the fix to match the expected behavior:

Updated logic:

  1. disableAutoDubbing() runs first and selects the original audio track (fallback)
  2. selectDubbedLanguage(skipAutoGenerated=true) then tries to find a real (non-auto) dub for the selected language
  3. If a real dub exists → uses it (overriding the original selection)
  4. If no real dub exists → original audio remains from step 1

Key change: selectDubbedLanguage() now accepts a skipAutoGenerated parameter. When true, it only matches exact language codes (e.g. "en") and skips auto-generated dubs with numeric suffixes (e.g. "en.1", "en.2").

This means:

  • Real dubs are still used when available (even with disable_auto_dubbing)
  • Auto-generated dubs are properly skipped
  • Original audio is the fallback when no real dub exists

Please review the updated changes!

@naeem2345

naeem2345 commented Jun 26, 2026 via email

Copy link
Copy Markdown

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.

🐞"Disable auto dubbing" option doesn't work when defaultDubbedLanguage is set

3 participants