mirror of https://github.com/mpv-player/mpv
loadfile: use mp_match_lang_single
This adds basic support for IETF language tags, as well as matching 2-letter language codes against 3-letter ones (and vice versa).
This commit is contained in:
parent
eb14dbff3e
commit
76009bf7a6
|
@ -5,10 +5,11 @@ Track Selection
|
|||
---------------
|
||||
|
||||
``--alang=<languagecode[,languagecode,...]>``
|
||||
Specify a priority list of audio languages to use. Different container
|
||||
formats employ different language codes. DVDs use ISO 639-1 two-letter
|
||||
language codes, Matroska, MPEG-TS and NUT use ISO 639-2 three-letter
|
||||
language codes, while OGM uses a free-form identifier. See also ``--aid``.
|
||||
Specify a priority list of audio languages to use, as IETF language tags.
|
||||
Equivalent ISO 639-1 two-letter and ISO 639-2 three-letter codes are treated the same.
|
||||
The first tag in the list whose language matches a track in the file will be used.
|
||||
A track that matches more subtags will be preferred over one that matches fewer,
|
||||
with preference given to earlier subtags over later ones. See also ``--aid``.
|
||||
|
||||
This is a string list option. See `List Options`_ for details.
|
||||
|
||||
|
@ -20,10 +21,7 @@ Track Selection
|
|||
audio.
|
||||
|
||||
``--slang=<languagecode[,languagecode,...]>``
|
||||
Specify a priority list of subtitle languages to use. Different container
|
||||
formats employ different language codes. DVDs use ISO 639-1 two letter
|
||||
language codes, Matroska uses ISO 639-2 three letter language codes while
|
||||
OGM uses a free-form identifier. See also ``--sid``.
|
||||
Equivalent to ``--alang``, for subtitle tracks.
|
||||
|
||||
This is a string list option. See `List Options`_ for details.
|
||||
|
||||
|
@ -33,6 +31,8 @@ Track Selection
|
|||
a DVD and falls back on English if Hungarian is not available.
|
||||
- ``mpv --slang=jpn example.mkv`` plays a Matroska file with Japanese
|
||||
subtitles.
|
||||
- ``mpv --slang=pt-BR example.mkv`` plays a Matroska file with Brazilian
|
||||
Portuguese subtitles if available, and otherwise any Portuguese subtitles.
|
||||
|
||||
``--vlang=<...>``
|
||||
Equivalent to ``--alang`` and ``--slang``, for video tracks.
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
#include "common/recorder.h"
|
||||
#include "common/stats.h"
|
||||
#include "input/input.h"
|
||||
#include "misc/language.h"
|
||||
|
||||
#include "audio/out/ao.h"
|
||||
#include "filters/f_decoder_wrapper.h"
|
||||
|
@ -447,8 +448,9 @@ static int match_lang(char **langs, const char *lang)
|
|||
if (!lang)
|
||||
return 0;
|
||||
for (int idx = 0; langs && langs[idx]; idx++) {
|
||||
if (lang && strcasecmp(langs[idx], lang) == 0)
|
||||
return INT_MAX - idx;
|
||||
int score = mp_match_lang_single(langs[idx], lang);
|
||||
if (score > 0)
|
||||
return INT_MAX - (idx + 1) * LANGUAGE_SCORE_MAX + score - 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue