There are two options:
- repair missing media flags
- change subtitle language in Kodi setting to a fixed language.
Repair missing media flags
Setting Force flag works, but it is by design used to mark a subtitle, which translates alien (i.e. Klingon) language to a movie's selected actual audio language.
Such subtitle would for example contain Klingon translation to English, if you're watching the Movie with English audio.
Because not many humans understand Klingon, such subtitle is always shown. Forced.
If you're going through the trouble of fixing a movie's tags,
you can do it properly by adding missing flags of audio and subtitle languages and selecting one subtitle as the Default. (whichever is missing):
using mkvpropedit
shell:
mkvpropedit /share/path/test.mkv --edit track:a1 --set language=eng
shell:
mkvpropedit /share/path/test.mkv --edit track:s1 --set language=eng
shell:
mkvpropedit /share/path/test.mkv --edit track:s1 --set flag-default=1
FFmpeg can do this too, with a limitation
“FFmpeg cannot edit existing files in-place.”
shell:
ffmpeg -i /path/test.mkv -c copy -metadata:s:a:0 language=eng /path/test-out.mkv
shell:
ffmpeg -i /path/test.mkv -c copy -metadata:s:s:0 language=eng /path/test-out.mkv
shell:
ffmpeg -i /path/test.mkv -c copy -disposition:s:0 default /path/test-out.mkv
it can be done in one go:
shell:
ffmpeg -i /path/test.mkv -c copy -metadata:s:a:0 language=eng -metadata:s:s:0 language=eng -disposition:s:0 default /path/test-out.mkv
"s" in -metadata:s:a:0 stands for "stream"
"s" in -disposition:s:0 stands for "subtitle"
Above commands assume both audio and subtitle streams which we are editing are first: ffmpeg "0" or mkvpropedit "1". If they are not, change numbers accordingly.
Change subtitle language in Kodi
as an alternative to repair missing flags in media files, you can change default subtitle language in Kodi's settings to a fixed one.
Settings > Player > Language > Subtitles
from:
- Original Language (default)
Language will be detected from Audio stream's language. It must match Subtitle's language AND one of such subtitle's must be flagged as Default
to:
- Fixed language, which means "English", "<ANY OTHER LANGUAGE>", or "User Interface Language" which is also fixed because it's a language of the UI, independent from the Movie's audio language.
In this case audio does not need to have Language flag specified and Subtitle does not need to be Default.
This is by design and supposedly not a bug.
But who for is such a feature which does not work in real life,
because most mkv are missing some flags?
I would suggest:
- if there is only one subtitle of one particular language, it should be considered "Default" even if not set as such explicitly.
- plus a setting: If language flag in media is missing, assume "User Interface Language" for it.
Of course in addition you also need to select "Set as default for all videos", while having subtitles on or off in subtitle submenu in player, as was mentioned in the original post.