mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2024-10-22 07:21:21 +00:00
ISO 639: rename to alpha_2/3_code instead of iso639_1/2_code
Preparation for adding alpha 3 codes from ISO 639-3 and ISO 639-5.
This commit is contained in:
parent
c640556ac1
commit
f412aeaf15
@ -136,7 +136,7 @@ language_c::parse_language(std::string const &code) {
|
||||
return false;
|
||||
}
|
||||
|
||||
m_language = !language->iso639_1_code.empty() ? language->iso639_1_code : language->iso639_2_code;
|
||||
m_language = !language->alpha_2_code.empty() ? language->alpha_2_code : language->alpha_3_code;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -290,22 +290,22 @@ language_c::parse(std::string const &language) {
|
||||
}
|
||||
|
||||
std::string
|
||||
language_c::get_iso639_2_code()
|
||||
language_c::get_iso639_alpha_3_code()
|
||||
const noexcept {
|
||||
if (!has_valid_iso639_code())
|
||||
return {};
|
||||
|
||||
auto language = mtx::iso639::look_up(m_language);
|
||||
if (language)
|
||||
return language->iso639_2_code;
|
||||
return language->alpha_3_code;
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
std::string
|
||||
language_c::get_iso639_2_code_or(std::string const &value_if_invalid)
|
||||
language_c::get_iso639_alpha_3_code_or(std::string const &value_if_invalid)
|
||||
const noexcept {
|
||||
auto code = get_iso639_2_code();
|
||||
auto code = get_iso639_alpha_3_code();
|
||||
return !code.empty() ? code : value_if_invalid;
|
||||
}
|
||||
|
||||
|
@ -39,8 +39,8 @@ public:
|
||||
void clear() noexcept;
|
||||
|
||||
bool has_valid_iso639_code() const noexcept;
|
||||
std::string get_iso639_2_code() const noexcept;
|
||||
std::string get_iso639_2_code_or(std::string const &value_if_invalid) const noexcept;
|
||||
std::string get_iso639_alpha_3_code() const noexcept;
|
||||
std::string get_iso639_alpha_3_code_or(std::string const &value_if_invalid) const noexcept;
|
||||
|
||||
std::string dump() const noexcept;
|
||||
std::string format(bool force = false) const noexcept;
|
||||
|
@ -24,7 +24,7 @@ std::shared_ptr<libmatroska::KaxChapters>
|
||||
convert_mpls_chapters_kax_chapters(mtx::bluray::mpls::chapters_t const &mpls_chapters,
|
||||
mtx::bcp47::language_c const &main_language_,
|
||||
std::string const &name_template_) {
|
||||
auto main_language = !main_language_.has_valid_iso639_code() || (main_language_.get_iso639_2_code() == "und") ? mtx::bcp47::language_c::parse("eng"s) : main_language_;
|
||||
auto main_language = !main_language_.has_valid_iso639_code() || (main_language_.get_iso639_alpha_3_code() == "und") ? mtx::bcp47::language_c::parse("eng"s) : main_language_;
|
||||
auto name_template = name_template_.empty() ? mtx::chapters::g_chapter_generation_name_template.get_translated() : name_template_;
|
||||
auto chapter_number = 0;
|
||||
auto kax_chapters = std::make_shared<libmatroska::KaxChapters>();
|
||||
@ -50,12 +50,12 @@ convert_mpls_chapters_kax_chapters(mtx::bluray::mpls::chapters_t const &mpls_cha
|
||||
|
||||
if (!name.empty())
|
||||
atom->PushElement(*mtx::construct::cons<libmatroska::KaxChapterDisplay>(new libmatroska::KaxChapterString, name,
|
||||
new libmatroska::KaxChapterLanguage, main_language.get_iso639_2_code_or("und"s)));
|
||||
new libmatroska::KaxChapterLanguage, main_language.get_iso639_alpha_3_code_or("und"s)));
|
||||
|
||||
for (auto const &[entry_language, entry_name] : entry.names)
|
||||
if ((entry_language != main_language) && !entry_name.empty())
|
||||
atom->PushElement(*mtx::construct::cons<libmatroska::KaxChapterDisplay>(new libmatroska::KaxChapterString, entry_name,
|
||||
new libmatroska::KaxChapterLanguage, entry_language.get_iso639_2_code_or("und"s)));
|
||||
new libmatroska::KaxChapterLanguage, entry_language.get_iso639_alpha_3_code_or("und"s)));
|
||||
|
||||
edition.PushElement(*atom);
|
||||
}
|
||||
|
@ -226,7 +226,7 @@ parse_simple(mm_text_io_c *in,
|
||||
|
||||
GetChild<KaxChapterString>(display).SetValueUTF8(do_convert ? cc_utf8->utf8(name) : name);
|
||||
if (use_language.is_valid()) {
|
||||
GetChild<KaxChapterLanguage>(display).SetValue(use_language.get_iso639_2_code_or("und"));
|
||||
GetChild<KaxChapterLanguage>(display).SetValue(use_language.get_iso639_alpha_3_code_or("und"));
|
||||
if (!mtx::bcp47::language_c::is_disabled())
|
||||
GetChild<KaxChapLanguageIETF>(display).SetValue(use_language.format());
|
||||
else
|
||||
@ -1196,7 +1196,7 @@ create_editions_and_chapters(std::vector<std::vector<timestamp_c>> const &editio
|
||||
|
||||
if (!name.empty())
|
||||
atom->PushElement(*mtx::construct::cons<libmatroska::KaxChapterDisplay>(new libmatroska::KaxChapterString, name,
|
||||
new libmatroska::KaxChapterLanguage, use_language.get_iso639_2_code_or("und")));
|
||||
new libmatroska::KaxChapterLanguage, use_language.get_iso639_alpha_3_code_or("und")));
|
||||
|
||||
edition->PushElement(*atom);
|
||||
}
|
||||
@ -1214,7 +1214,7 @@ set_languages_in_display(libmatroska::KaxChapterDisplay &display,
|
||||
GetChild<libmatroska::KaxChapLanguageIETF>(display).SetValue(parsed_language.format());
|
||||
|
||||
if (parsed_language.has_valid_iso639_code())
|
||||
GetChild<libmatroska::KaxChapterLanguage>(display).SetValue(parsed_language.get_iso639_2_code());
|
||||
GetChild<libmatroska::KaxChapterLanguage>(display).SetValue(parsed_language.get_iso639_alpha_3_code());
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -278,7 +278,7 @@ add_elements_for_cue_entry(cue_parser_args_t &a,
|
||||
|
||||
auto &display = GetChild<KaxChapterDisplay>(*a.atom);
|
||||
GetChild<KaxChapterString>(display).SetValue(cue_str_internal_to_utf(a, a.name));
|
||||
GetChild<KaxChapterLanguage>(display).SetValue(a.language.get_iso639_2_code_or("und"));
|
||||
GetChild<KaxChapterLanguage>(display).SetValue(a.language.get_iso639_alpha_3_code_or("und"));
|
||||
|
||||
add_subchapters_for_index_entries(a);
|
||||
|
||||
|
@ -48,8 +48,8 @@ list_languages() {
|
||||
|
||||
for (auto &lang : g_languages) {
|
||||
longest[0] = std::max(longest[0], get_width_in_em(to_wide(gettext(lang.english_name.c_str()))));
|
||||
longest[1] = std::max(longest[1], get_width_in_em(to_wide(lang.iso639_2_code)));
|
||||
longest[2] = std::max(longest[2], get_width_in_em(to_wide(lang.iso639_1_code)));
|
||||
longest[1] = std::max(longest[1], get_width_in_em(to_wide(lang.alpha_3_code)));
|
||||
longest[2] = std::max(longest[2], get_width_in_em(to_wide(lang.alpha_2_code)));
|
||||
}
|
||||
|
||||
mxinfo(FILL(w_col1, 0) + L" | " + FILL(w_col2, 1) + L" | " + FILL(w_col3, 2) + L"\n");
|
||||
@ -57,8 +57,8 @@ list_languages() {
|
||||
|
||||
for (auto &lang : g_languages) {
|
||||
std::wstring english = to_wide(gettext(lang.english_name.c_str()));
|
||||
std::wstring code2 = to_wide(lang.iso639_2_code);
|
||||
std::wstring code1 = to_wide(lang.iso639_1_code);
|
||||
std::wstring code2 = to_wide(lang.alpha_3_code);
|
||||
std::wstring code1 = to_wide(lang.alpha_2_code);
|
||||
mxinfo(FILL(english, 0) + L" | " + FILL(code2, 1) + L" | " + FILL(code1, 2) + L"\n");
|
||||
}
|
||||
}
|
||||
@ -85,7 +85,7 @@ look_up(std::string const &s,
|
||||
if (deprecated_code != s_deprecated_1_and_2_codes.end())
|
||||
source = deprecated_code->second;
|
||||
|
||||
auto lang_code = std::find_if(g_languages.begin(), g_languages.end(), [&source](auto const &lang) { return (lang.iso639_2_code == source) || (lang.terminology_abbrev == source) || (lang.iso639_1_code == source); });
|
||||
auto lang_code = std::find_if(g_languages.begin(), g_languages.end(), [&source](auto const &lang) { return (lang.alpha_3_code == source) || (lang.terminology_abbrev == source) || (lang.alpha_2_code == source); });
|
||||
if (lang_code != g_languages.end())
|
||||
return *lang_code;
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
namespace mtx::iso639 {
|
||||
|
||||
struct language_t {
|
||||
std::string const english_name, iso639_2_code, iso639_1_code, terminology_abbrev;
|
||||
std::string const english_name, alpha_3_code, alpha_2_code, terminology_abbrev;
|
||||
};
|
||||
|
||||
extern std::vector<language_t> const g_languages;
|
||||
|
@ -285,7 +285,7 @@ set_simple(KaxTag &tag,
|
||||
return;
|
||||
|
||||
if (language.has_valid_iso639_code())
|
||||
GetChild<KaxTagLangue>(k_simple_tag).SetValue(language.get_iso639_2_code());
|
||||
GetChild<KaxTagLangue>(k_simple_tag).SetValue(language.get_iso639_alpha_3_code());
|
||||
|
||||
GetChild<KaxTagLanguageIETF>(k_simple_tag).SetValue(language.format());
|
||||
}
|
||||
|
@ -98,19 +98,19 @@ mtx::bcp47::language_c
|
||||
parse_language(std::string key_language) {
|
||||
auto language = mtx::iso639::look_up(key_language, true);
|
||||
if (language)
|
||||
return mtx::bcp47::language_c::parse(language->iso639_2_code);
|
||||
return mtx::bcp47::language_c::parse(language->alpha_3_code);
|
||||
|
||||
mtx::regex::jp::VecNum matches;
|
||||
if (mtx::regex::match(key_language, matches, mtx::regex::jp::Regex{".*\\[(.+?)\\]"})) {
|
||||
auto language2 = mtx::iso639::look_up(boost::to_lower_copy(matches[0][1]), true);
|
||||
if (language2)
|
||||
return mtx::bcp47::language_c::parse(language2->iso639_2_code);
|
||||
return mtx::bcp47::language_c::parse(language2->alpha_3_code);
|
||||
}
|
||||
|
||||
if (mtx::regex::match(key_language, matches, mtx::regex::jp::Regex{".*\\((.+?)\\)"})) {
|
||||
auto language2 = mtx::iso639::look_up(boost::to_lower_copy(matches[0][1]), true);
|
||||
if (language2)
|
||||
return mtx::bcp47::language_c::parse(language2->iso639_2_code);
|
||||
return mtx::bcp47::language_c::parse(language2->alpha_3_code);
|
||||
}
|
||||
|
||||
return {};
|
||||
|
@ -43,7 +43,7 @@ std::vector<translation_c> translation_c::ms_available_translations;
|
||||
int translation_c::ms_active_translation_idx = 0;
|
||||
std::string translation_c::ms_default_iso639_ui_language;
|
||||
|
||||
translation_c::translation_c(std::string iso639_2_code,
|
||||
translation_c::translation_c(std::string iso639_alpha_3_code,
|
||||
std::string unix_locale,
|
||||
std::string windows_locale,
|
||||
std::string windows_locale_sysname,
|
||||
@ -52,7 +52,7 @@ translation_c::translation_c(std::string iso639_2_code,
|
||||
bool line_breaks_anywhere,
|
||||
int language_id,
|
||||
int sub_language_id)
|
||||
: m_iso639_2_code{std::move(iso639_2_code)}
|
||||
: m_iso639_alpha_3_code{std::move(iso639_alpha_3_code)}
|
||||
, m_unix_locale{std::move(unix_locale)}
|
||||
, m_windows_locale{std::move(windows_locale)}
|
||||
, m_windows_locale_sysname{std::move(windows_locale_sysname)}
|
||||
@ -175,7 +175,7 @@ translation_c::determine_default_iso639_ui_language() {
|
||||
|
||||
auto language = mtx::iso639::look_up(language_code);
|
||||
if (language)
|
||||
ms_default_iso639_ui_language = language->iso639_2_code;
|
||||
ms_default_iso639_ui_language = language->alpha_3_code;
|
||||
}
|
||||
|
||||
std::string
|
||||
|
@ -24,11 +24,11 @@ public:
|
||||
static std::string ms_default_iso639_ui_language;
|
||||
|
||||
public:
|
||||
std::string m_iso639_2_code, m_unix_locale, m_windows_locale, m_windows_locale_sysname, m_english_name, m_translated_name;
|
||||
std::string m_iso639_alpha_3_code, m_unix_locale, m_windows_locale, m_windows_locale_sysname, m_english_name, m_translated_name;
|
||||
bool m_line_breaks_anywhere;
|
||||
int m_language_id, m_sub_language_id;
|
||||
|
||||
translation_c(std::string iso639_2_code,
|
||||
translation_c(std::string iso639_alpha_3_code,
|
||||
std::string unix_locale,
|
||||
std::string windows_locale,
|
||||
std::string windows_locale_sysname,
|
||||
|
@ -164,7 +164,7 @@ ebml_chapters_converter_c::fix_display(KaxChapterDisplay &display)
|
||||
display.PushElement(*clanguage);
|
||||
}
|
||||
|
||||
clanguage->SetValue(parsed_language.get_iso639_2_code());
|
||||
clanguage->SetValue(parsed_language.get_iso639_alpha_3_code());
|
||||
|
||||
} else if (clanguage) {
|
||||
auto language_opt = mtx::iso639::look_up(clanguage->GetValue());
|
||||
|
@ -127,7 +127,7 @@ ebml_tags_converter_c::fix_tag(KaxTag &tag)
|
||||
simple->PushElement(*tlanguage);
|
||||
}
|
||||
|
||||
tlanguage->SetValue(parsed_language.get_iso639_2_code());
|
||||
tlanguage->SetValue(parsed_language.get_iso639_alpha_3_code());
|
||||
|
||||
} else if (tlanguage) {
|
||||
auto language_opt = mtx::iso639::look_up(tlanguage->GetValue());
|
||||
|
@ -27,7 +27,7 @@ options_c::mode_options_c::dump(std::string const &prefix)
|
||||
"{0}simple chapter language: {2}\n"
|
||||
"{0}extraction mode: {3}\n"
|
||||
"{0}num track specs: {4}\n",
|
||||
prefix, m_simple_chapter_format, m_simple_chapter_language.get_iso639_2_code_or("<none>"), static_cast<int>(m_extraction_mode), m_tracks.size()));
|
||||
prefix, m_simple_chapter_format, m_simple_chapter_language.get_iso639_alpha_3_code_or("<none>"), static_cast<int>(m_extraction_mode), m_tracks.size()));
|
||||
|
||||
|
||||
for (auto idx = 0u; idx < m_tracks.size(); ++idx) {
|
||||
|
@ -265,7 +265,7 @@ void
|
||||
xtr_vobsub_c::write_idx(mm_io_c &idx,
|
||||
int index) {
|
||||
auto language = mtx::iso639::look_up(m_language);
|
||||
auto iso639_1 = language ? language->iso639_1_code : "en"s;
|
||||
auto iso639_1 = language ? language->alpha_2_code : "en"s;
|
||||
idx.puts(fmt::format("\nid: {0}, index: {1}\n", iso639_1.empty() ? "en"s : iso639_1, index));
|
||||
|
||||
size_t i;
|
||||
|
@ -2702,7 +2702,7 @@ kax_reader_c::identify() {
|
||||
info.set(mtx::id::codec_private_length, track->private_data ? track->private_data->get_size() : 0u);
|
||||
info.add(mtx::id::codec_delay, track->codec_delay.to_ns(0));
|
||||
info.add(mtx::id::codec_name, track->codec_name);
|
||||
info.add(mtx::id::language, track->language.get_iso639_2_code());
|
||||
info.add(mtx::id::language, track->language.get_iso639_alpha_3_code());
|
||||
info.add(mtx::id::language_ietf, track->language_ietf.format());
|
||||
info.add(mtx::id::track_name, track->track_name);
|
||||
info.add(mtx::id::stereo_mode, static_cast<int>(track->v_stereo_mode), static_cast<int>(stereo_mode_c::unspecified));
|
||||
|
@ -1397,7 +1397,7 @@ reader_c::identify() {
|
||||
|
||||
for (auto const &track : m_tracks) {
|
||||
info = mtx::id::info_c{};
|
||||
info.add(mtx::id::language, track->language.get_iso639_2_code());
|
||||
info.add(mtx::id::language, track->language.get_iso639_alpha_3_code());
|
||||
info.set(mtx::id::stream_id, track->pid);
|
||||
info.set(mtx::id::number, track->pid);
|
||||
|
||||
@ -2397,7 +2397,7 @@ reader_c::create_srt_subtitles_packetizer(track_ptr const &track) {
|
||||
auto &converter = dynamic_cast<teletext_to_srt_packet_converter_c &>(*track->converter);
|
||||
|
||||
converter.demux_page(*track->m_ttx_wanted_page, PTZR(track->ptzr));
|
||||
converter.override_encoding(*track->m_ttx_wanted_page, track->language.get_iso639_2_code());
|
||||
converter.override_encoding(*track->m_ttx_wanted_page, track->language.get_iso639_alpha_3_code());
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -683,7 +683,7 @@ ogm_reader_c::identify() {
|
||||
info = mtx::id::info_c{};
|
||||
|
||||
info.set(mtx::id::number, dmx->serialno);
|
||||
info.add(mtx::id::language, dmx->language.get_iso639_2_code());
|
||||
info.add(mtx::id::language, dmx->language.get_iso639_alpha_3_code());
|
||||
|
||||
if (!dmx->title.empty() && !dmx->ms_compat)
|
||||
info.add(mtx::id::track_name, dmx->title);
|
||||
|
@ -2027,7 +2027,7 @@ qtmp4_reader_c::identify() {
|
||||
else if (dmx.codec.is(codec_c::type_e::V_MPEGH_P2))
|
||||
info.add(mtx::id::packetizer, dmx.m_hevc_is_annex_b ? mtx::id::mpegh_p2_es_video : mtx::id::mpegh_p2_video);
|
||||
|
||||
info.add(mtx::id::language, dmx.language.get_iso639_2_code());
|
||||
info.add(mtx::id::language, dmx.language.get_iso639_alpha_3_code());
|
||||
|
||||
if (dmx.is_video())
|
||||
info.add(mtx::id::pixel_dimensions, fmt::format("{0}x{1}", dmx.v_width, dmx.v_height));
|
||||
|
@ -226,7 +226,7 @@ usf_reader_c::identify() {
|
||||
auto track = m_tracks[i];
|
||||
auto info = mtx::id::info_c{};
|
||||
|
||||
info.add(mtx::id::language, track->m_language.get_iso639_2_code());
|
||||
info.add(mtx::id::language, track->m_language.get_iso639_alpha_3_code());
|
||||
|
||||
id_result_track(i, ID_RESULT_TRACK_SUBTITLES, codec_c::get_name(codec_c::type_e::S_USF, "USF"), info.get());
|
||||
}
|
||||
|
@ -636,7 +636,7 @@ vobsub_reader_c::identify() {
|
||||
for (i = 0; i < tracks.size(); i++) {
|
||||
auto info = mtx::id::info_c{};
|
||||
|
||||
info.add(mtx::id::language, tracks[i]->language.get_iso639_2_code());
|
||||
info.add(mtx::id::language, tracks[i]->language.get_iso639_alpha_3_code());
|
||||
|
||||
id_result_track(i, ID_RESULT_TRACK_SUBTITLES, codec_c::get_name(codec_c::type_e::S_VOBSUB, "VobSub"), info.get());
|
||||
}
|
||||
|
@ -132,48 +132,48 @@ teletext_to_srt_packet_converter_c::teletext_to_srt_packet_converter_c()
|
||||
|
||||
void
|
||||
teletext_to_srt_packet_converter_c::override_encoding(int page,
|
||||
std::string const &iso639_2_code) {
|
||||
std::string const &iso639_alpha_3_code) {
|
||||
auto itr = m_track_data.find(page);
|
||||
if (itr == m_track_data.end())
|
||||
return;
|
||||
|
||||
if (mtx::included_in(iso639_2_code, "fre"))
|
||||
if (mtx::included_in(iso639_alpha_3_code, "fre"))
|
||||
itr->second->m_forced_char_map_idx = 1;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "swe", "fin", "hun"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "swe", "fin", "hun"))
|
||||
itr->second->m_forced_char_map_idx = 2;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "cze", "slo"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "cze", "slo"))
|
||||
itr->second->m_forced_char_map_idx = 3;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "ger"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "ger"))
|
||||
itr->second->m_forced_char_map_idx = 4;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "por", "spa"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "por", "spa"))
|
||||
itr->second->m_forced_char_map_idx = 5;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "ita"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "ita"))
|
||||
itr->second->m_forced_char_map_idx = 6;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "rum"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "rum"))
|
||||
itr->second->m_forced_char_map_idx = 7;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "lav", "lit"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "lav", "lit"))
|
||||
itr->second->m_forced_char_map_idx = 8;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "pol"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "pol"))
|
||||
itr->second->m_forced_char_map_idx = 9;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "srp", "hrv", "slv"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "srp", "hrv", "slv"))
|
||||
itr->second->m_forced_char_map_idx = 10;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "est"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "est"))
|
||||
itr->second->m_forced_char_map_idx = 11;
|
||||
|
||||
else if (mtx::included_in(iso639_2_code, "tur"))
|
||||
else if (mtx::included_in(iso639_alpha_3_code, "tur"))
|
||||
itr->second->m_forced_char_map_idx = 12;
|
||||
|
||||
mxdebug_if(m_debug, fmt::format("Overriding encoding for ISO 639-2 code {0}; result: {1}\n", iso639_2_code, itr->second->m_forced_char_map_idx ? *itr->second->m_forced_char_map_idx : -1));
|
||||
mxdebug_if(m_debug, fmt::format("Overriding encoding for ISO 639-2 code {0}; result: {1}\n", iso639_alpha_3_code, itr->second->m_forced_char_map_idx ? *itr->second->m_forced_char_map_idx : -1));
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -76,7 +76,7 @@ public:
|
||||
virtual bool convert(packet_cptr const &packet) override;
|
||||
virtual void flush() override;
|
||||
|
||||
virtual void override_encoding(int page, std::string const &iso639_2_code);
|
||||
virtual void override_encoding(int page, std::string const &iso639_alpha_3_code);
|
||||
virtual void demux_page(int page, generic_packetizer_c *ptzr);
|
||||
|
||||
protected:
|
||||
|
@ -662,7 +662,7 @@ generic_packetizer_c::set_language(mtx::bcp47::language_c const &language) {
|
||||
return;
|
||||
|
||||
if (language.has_valid_iso639_code())
|
||||
GetChild<KaxTrackLanguage>(m_track_entry).SetValue(language.get_iso639_2_code());
|
||||
GetChild<KaxTrackLanguage>(m_track_entry).SetValue(language.get_iso639_alpha_3_code());
|
||||
if (!mtx::bcp47::language_c::is_disabled())
|
||||
GetChild<KaxLanguageIETF>(m_track_entry).SetValue(language.format());
|
||||
}
|
||||
@ -1044,9 +1044,9 @@ generic_packetizer_c::set_headers() {
|
||||
else if (g_default_tracks[idx] == m_hserialno)
|
||||
g_default_tracks[idx] = 0;
|
||||
|
||||
auto iso639_2_code = m_ti.m_language.has_valid_iso639_code() ? m_ti.m_language.get_iso639_2_code() : g_default_language.get_iso639_2_code();
|
||||
auto language = m_ti.m_language.is_valid() ? m_ti.m_language : g_default_language;
|
||||
GetChild<KaxTrackLanguage>(m_track_entry).SetValue(iso639_2_code);
|
||||
auto iso639_alpha_3_code = m_ti.m_language.has_valid_iso639_code() ? m_ti.m_language.get_iso639_alpha_3_code() : g_default_language.get_iso639_alpha_3_code();
|
||||
auto language = m_ti.m_language.is_valid() ? m_ti.m_language : g_default_language;
|
||||
GetChild<KaxTrackLanguage>(m_track_entry).SetValue(iso639_alpha_3_code);
|
||||
if (!mtx::bcp47::language_c::is_disabled())
|
||||
GetChild<KaxLanguageIETF>(m_track_entry).SetValue(language.format());
|
||||
|
||||
|
@ -1498,7 +1498,7 @@ prepare_additional_chapter_atoms_for_rendering() {
|
||||
GetChild<KaxChapterString>(display).SetValueUTF8(ch_name);
|
||||
|
||||
if (ch_language.is_valid()) {
|
||||
GetChild<KaxChapterLanguage>(display).SetValue(ch_language.get_iso639_2_code_or("und"));
|
||||
GetChild<KaxChapterLanguage>(display).SetValue(ch_language.get_iso639_alpha_3_code_or("und"));
|
||||
if (!mtx::bcp47::language_c::is_disabled())
|
||||
GetChild<KaxChapLanguageIETF>(display).SetValue(ch_language.format());
|
||||
else
|
||||
|
@ -240,10 +240,10 @@ App::initializeIso639Languages() {
|
||||
s_commonIso639Languages.reserve(cfg.m_oftenUsedLanguages.size());
|
||||
|
||||
for (auto const &language : mtx::iso639::g_languages) {
|
||||
auto languageCode = Q(language.iso639_2_code);
|
||||
auto languageCodes = language.iso639_1_code.empty() ? languageCode : Q("%1; %2").arg(Q(language.iso639_1_code)).arg(languageCode);
|
||||
auto description = Q("%1 (%2)").arg(Q(gettext(language.english_name.c_str()))).arg(languageCodes);
|
||||
auto isCommon = cfg.m_oftenUsedLanguages.indexOf(languageCode) != -1;
|
||||
auto languageCode = Q(language.alpha_3_code);
|
||||
auto languageCodes = language.alpha_2_code.empty() ? languageCode : Q("%1; %2").arg(Q(language.alpha_2_code)).arg(languageCode);
|
||||
auto description = Q("%1 (%2)").arg(Q(gettext(language.english_name.c_str()))).arg(languageCodes);
|
||||
auto isCommon = cfg.m_oftenUsedLanguages.indexOf(languageCode) != -1;
|
||||
|
||||
s_iso639Languages.emplace_back(description, languageCode);
|
||||
if (isCommon)
|
||||
|
@ -184,7 +184,7 @@ ChapterModel::chapterNameForLanguage(KaxChapterAtom &chapter,
|
||||
auto actualLanguage = mtx::chapters::get_language_from_display(*kDisplay, "eng"s);
|
||||
if ( language.empty()
|
||||
|| (language == actualLanguage.get_language())
|
||||
|| (language == actualLanguage.get_iso639_2_code()))
|
||||
|| (language == actualLanguage.get_iso639_alpha_3_code()))
|
||||
return Q(FindChildValue<KaxChapterString>(kDisplay));
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ QWidget *
|
||||
LanguageValuePage::createInputControl() {
|
||||
m_originalValue = m_element ? static_cast<EbmlString *>(m_element)->GetValue() : "eng";
|
||||
auto languageOpt = mtx::iso639::look_up(m_originalValue, true);
|
||||
auto currentValue = languageOpt ? languageOpt->iso639_2_code : m_originalValue;
|
||||
auto currentValue = languageOpt ? languageOpt->alpha_3_code : m_originalValue;
|
||||
|
||||
m_cbValue = new Util::LanguageComboBox{this};
|
||||
m_cbValue->setFrame(true);
|
||||
|
@ -48,14 +48,14 @@ setupLanguageDerivationSubPatterns() {
|
||||
auto &cfg = Util::Settings::get();
|
||||
|
||||
for (auto const &language : mtx::iso639::g_languages) {
|
||||
if (!cfg.m_recognizedTrackLanguagesInFileNames.contains(Q(language.iso639_2_code)))
|
||||
if (!cfg.m_recognizedTrackLanguagesInFileNames.contains(Q(language.alpha_3_code)))
|
||||
continue;
|
||||
|
||||
if (!language.iso639_1_code.empty())
|
||||
codes1List << Q(language.iso639_1_code);
|
||||
if (!language.alpha_2_code.empty())
|
||||
codes1List << Q(language.alpha_2_code);
|
||||
|
||||
if (!language.iso639_2_code.empty())
|
||||
codes2List << Q(language.iso639_2_code);
|
||||
if (!language.alpha_3_code.empty())
|
||||
codes2List << Q(language.alpha_3_code);
|
||||
if (!language.terminology_abbrev.empty())
|
||||
codes2List << Q(language.terminology_abbrev);
|
||||
|
||||
@ -450,11 +450,11 @@ SourceFile::deriveLanguageFromFileName() {
|
||||
|
||||
auto languageOpt = mtx::iso639::look_up(to_utf8(capture.toLower()));
|
||||
if (languageOpt)
|
||||
language = Q(languageOpt->iso639_2_code);
|
||||
language = Q(languageOpt->alpha_3_code);
|
||||
|
||||
else {
|
||||
for (auto const &languageElt : mtx::iso639::g_languages) {
|
||||
if (!cfg.m_recognizedTrackLanguagesInFileNames.contains(Q(languageElt.iso639_2_code)))
|
||||
if (!cfg.m_recognizedTrackLanguagesInFileNames.contains(Q(languageElt.alpha_3_code)))
|
||||
continue;
|
||||
|
||||
for (auto name : Q(languageElt.english_name).split(splitter)) {
|
||||
@ -462,7 +462,7 @@ SourceFile::deriveLanguageFromFileName() {
|
||||
if (name != capture)
|
||||
continue;
|
||||
|
||||
language = Q(languageElt.iso639_2_code);
|
||||
language = Q(languageElt.alpha_3_code);
|
||||
}
|
||||
|
||||
if (!language.isEmpty())
|
||||
|
@ -193,7 +193,7 @@ Track::setDefaults(mtx::bcp47::language_c const &languageDerivedFromFileName) {
|
||||
|
||||
else {
|
||||
language = !m_language.is_valid() ? mtx::bcp47::language_c::parse("und"s) : m_language;
|
||||
m_muxThis = settings.m_enableMuxingTracksByTheseLanguages.contains(Q(language.get_iso639_2_code()));
|
||||
m_muxThis = settings.m_enableMuxingTracksByTheseLanguages.contains(Q(language.get_iso639_alpha_3_code()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -177,7 +177,7 @@ LanguageDialog::setAdditionalLanguages(QStringList const &additionalLanguages) {
|
||||
auto parsedLanguage = mtx::bcp47::language_c::parse(to_utf8(language));
|
||||
|
||||
if (parsedLanguage.is_valid() && parsedLanguage.has_valid_iso639_code())
|
||||
p.additionalISO639_2Codes << Q(parsedLanguage.get_iso639_2_code());
|
||||
p.additionalISO639_2Codes << Q(parsedLanguage.get_iso639_alpha_3_code());
|
||||
}
|
||||
|
||||
reinitializeLanguageComboBox();
|
||||
@ -188,7 +188,7 @@ LanguageDialog::setLanguage(mtx::bcp47::language_c const &language) {
|
||||
auto &p = *p_func();
|
||||
|
||||
if (language.is_valid() && language.has_valid_iso639_code()) {
|
||||
p.initialISO639_2Code = Q(language.get_iso639_2_code());
|
||||
p.initialISO639_2Code = Q(language.get_iso639_alpha_3_code());
|
||||
reinitializeLanguageComboBox();
|
||||
}
|
||||
|
||||
@ -520,7 +520,7 @@ LanguageDialog::setComponentsFromLanguageTag(mtx::bcp47::language_c const &tag)
|
||||
if (!tag.is_valid())
|
||||
return;
|
||||
|
||||
setComboBoxTextByData(p.ui->cbLanguage, Q(tag.get_iso639_2_code_or({})));
|
||||
setComboBoxTextByData(p.ui->cbLanguage, Q(tag.get_iso639_alpha_3_code_or({})));
|
||||
setComboBoxTextByData(p.ui->cbRegion, Q(tag.get_region()).toLower());
|
||||
setComboBoxTextByData(p.ui->cbScript, Q(tag.get_script()));
|
||||
|
||||
|
@ -455,7 +455,7 @@ Settings::setDefaults(std::optional<QVariant> enableMuxingTracksByTheseTypes) {
|
||||
|
||||
if (m_recognizedTrackLanguagesInFileNames.isEmpty())
|
||||
for (auto const &language : mtx::iso639::g_languages)
|
||||
m_recognizedTrackLanguagesInFileNames << Q(language.iso639_2_code);
|
||||
m_recognizedTrackLanguagesInFileNames << Q(language.alpha_3_code);
|
||||
|
||||
if (m_regexForDerivingTrackLanguagesFromFileNames.isEmpty())
|
||||
m_regexForDerivingTrackLanguagesFromFileNames = mtx::gui::Merge::SourceFile::defaultRegexForDerivingLanguageFromFileName();
|
||||
|
@ -395,7 +395,7 @@ change_c::make_change_for_language(change_c::change_type_e type,
|
||||
throw std::runtime_error{fmt::format(Y("invalid language tag '{0}': {1}"), value, language.get_error())};
|
||||
|
||||
if (language.has_valid_iso639_code() && (name == "language"))
|
||||
changes.push_back(std::make_shared<change_c>(type, "language", language.get_iso639_2_code()));
|
||||
changes.push_back(std::make_shared<change_c>(type, "language", language.get_iso639_alpha_3_code()));
|
||||
|
||||
if ((name == "language-ietf") || !mtx::bcp47::language_c::is_disabled())
|
||||
changes.push_back(std::make_shared<change_c>(type, "language-ietf", language.format()));
|
||||
|
@ -556,4 +556,4 @@ T_707bcp47_mkvmerge_chapters_disable_language_ietf:2a2202254f1e426484151e9299f83
|
||||
T_708bcp47_propedit_language_ietf_disable_language_ietf:d80d696e8045ebf157d31db09142307c-und+und+ok+ger+und+ok+ger+pt_BR+ok+spa+pt_BR+ok+eng+pt_BR+ok+eng++ok:passed:20200829-103838:0.0
|
||||
T_709bcp47_mkvmerge_tags:9208217d36fa9368be5a44b239286424:passed:20200903-234135:0.0
|
||||
T_710fuzzying:ok-ok-ok-ok-ok-ok-ok-ok-ok-ok:passed:20200921-133156:0.059249045
|
||||
T_711av1_last_frame_duration_when_appending:a19352e35a535cbefc8e126fac8a0246-ad1b56c56820bb291a1ccbf30ea7479a:new:20201001-124823:0
|
||||
T_711av1_last_frame_duration_when_appending:a19352e35a535cbefc8e126fac8a0246-ad1b56c56820bb291a1ccbf30ea7479a:passed:20201001-124823:0.0
|
||||
|
@ -90,14 +90,14 @@ TEST(BCP47LanguageTags, FormattingInvalidWithoutLanguage) {
|
||||
}
|
||||
|
||||
TEST(BCP47LanguageTags, CodeConversion) {
|
||||
EXPECT_EQ(""s, mtx::bcp47::language_c{}.get_iso639_2_code());
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("de").get_iso639_2_code());
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("deu").get_iso639_2_code());
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("ger").get_iso639_2_code());
|
||||
EXPECT_EQ(""s, mtx::bcp47::language_c{}.get_iso639_alpha_3_code());
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("de").get_iso639_alpha_3_code());
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("deu").get_iso639_alpha_3_code());
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("ger").get_iso639_alpha_3_code());
|
||||
|
||||
mtx::bcp47::language_c l;
|
||||
l.set_language("muh");
|
||||
EXPECT_EQ(""s, l.get_iso639_2_code());
|
||||
EXPECT_EQ(""s, l.get_iso639_alpha_3_code());
|
||||
|
||||
EXPECT_FALSE(mtx::bcp47::language_c{}.has_valid_iso639_code());
|
||||
EXPECT_FALSE(mtx::bcp47::language_c::parse("muh").has_valid_iso639_code());
|
||||
@ -107,12 +107,12 @@ TEST(BCP47LanguageTags, CodeConversion) {
|
||||
EXPECT_TRUE(mtx::bcp47::language_c::parse("deu").has_valid_iso639_code());
|
||||
EXPECT_TRUE(mtx::bcp47::language_c::parse("ger").has_valid_iso639_code());
|
||||
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("de").get_iso639_2_code_or("eng"s));
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("deu").get_iso639_2_code_or("eng"s));
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("ger").get_iso639_2_code_or("eng"s));
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("de").get_iso639_alpha_3_code_or("eng"s));
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("deu").get_iso639_alpha_3_code_or("eng"s));
|
||||
EXPECT_EQ("ger"s, mtx::bcp47::language_c::parse("ger").get_iso639_alpha_3_code_or("eng"s));
|
||||
|
||||
EXPECT_EQ("eng"s, mtx::bcp47::language_c::parse("").get_iso639_2_code_or("eng"s));
|
||||
EXPECT_EQ("eng"s, mtx::bcp47::language_c::parse("x-moo").get_iso639_2_code_or("eng"s));
|
||||
EXPECT_EQ("eng"s, mtx::bcp47::language_c::parse("").get_iso639_alpha_3_code_or("eng"s));
|
||||
EXPECT_EQ("eng"s, mtx::bcp47::language_c::parse("x-moo").get_iso639_alpha_3_code_or("eng"s));
|
||||
}
|
||||
|
||||
TEST(BCP47LanguageTags, UnorderedMap) {
|
||||
|
Loading…
Reference in New Issue
Block a user