From f412aeaf15dcb8f32ac62de0981bce200fadde6a Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Fri, 16 Oct 2020 11:07:49 +0200 Subject: [PATCH] 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. --- src/common/bcp47.cpp | 10 +++---- src/common/bcp47.h | 4 +-- src/common/chapters/bluray.cpp | 6 ++-- src/common/chapters/chapters.cpp | 6 ++-- src/common/chapters/cue_parser.cpp | 2 +- src/common/iso639.cpp | 10 +++---- src/common/iso639.h | 2 +- src/common/tags/tags.cpp | 2 +- src/common/tags/vorbis.cpp | 6 ++-- src/common/translation.cpp | 6 ++-- src/common/translation.h | 4 +-- src/common/xml/ebml_chapters_converter.cpp | 2 +- src/common/xml/ebml_tags_converter.cpp | 2 +- src/extract/options.cpp | 2 +- src/extract/xtr_vobsub.cpp | 2 +- src/input/r_matroska.cpp | 2 +- src/input/r_mpeg_ts.cpp | 4 +-- src/input/r_ogm.cpp | 2 +- src/input/r_qtmp4.cpp | 2 +- src/input/r_usf.cpp | 2 +- src/input/r_vobsub.cpp | 2 +- .../teletext_to_srt_packet_converter.cpp | 28 +++++++++---------- src/input/teletext_to_srt_packet_converter.h | 2 +- src/merge/generic_packetizer.cpp | 8 +++--- src/merge/output_control.cpp | 2 +- src/mkvtoolnix-gui/app.cpp | 8 +++--- .../chapter_editor/chapter_model.cpp | 2 +- .../header_editor/language_value_page.cpp | 2 +- src/mkvtoolnix-gui/merge/source_file.cpp | 16 +++++------ src/mkvtoolnix-gui/merge/track.cpp | 2 +- src/mkvtoolnix-gui/util/language_dialog.cpp | 6 ++-- src/mkvtoolnix-gui/util/settings.cpp | 2 +- src/propedit/change.cpp | 2 +- tests/results.txt | 2 +- tests/unit/common/bcp47.cpp | 20 ++++++------- 35 files changed, 91 insertions(+), 91 deletions(-) diff --git a/src/common/bcp47.cpp b/src/common/bcp47.cpp index ae667650c..4e1955301 100644 --- a/src/common/bcp47.cpp +++ b/src/common/bcp47.cpp @@ -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; } diff --git a/src/common/bcp47.h b/src/common/bcp47.h index 902b45cc0..e0e3924a6 100644 --- a/src/common/bcp47.h +++ b/src/common/bcp47.h @@ -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; diff --git a/src/common/chapters/bluray.cpp b/src/common/chapters/bluray.cpp index cacb8e6ef..2653c80f0 100644 --- a/src/common/chapters/bluray.cpp +++ b/src/common/chapters/bluray.cpp @@ -24,7 +24,7 @@ std::shared_ptr 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(); @@ -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(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(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); } diff --git a/src/common/chapters/chapters.cpp b/src/common/chapters/chapters.cpp index 5ce3e9ef9..2a6c25581 100644 --- a/src/common/chapters/chapters.cpp +++ b/src/common/chapters/chapters.cpp @@ -226,7 +226,7 @@ parse_simple(mm_text_io_c *in, GetChild(display).SetValueUTF8(do_convert ? cc_utf8->utf8(name) : name); if (use_language.is_valid()) { - GetChild(display).SetValue(use_language.get_iso639_2_code_or("und")); + GetChild(display).SetValue(use_language.get_iso639_alpha_3_code_or("und")); if (!mtx::bcp47::language_c::is_disabled()) GetChild(display).SetValue(use_language.format()); else @@ -1196,7 +1196,7 @@ create_editions_and_chapters(std::vector> const &editio if (!name.empty()) atom->PushElement(*mtx::construct::cons(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(display).SetValue(parsed_language.format()); if (parsed_language.has_valid_iso639_code()) - GetChild(display).SetValue(parsed_language.get_iso639_2_code()); + GetChild(display).SetValue(parsed_language.get_iso639_alpha_3_code()); } void diff --git a/src/common/chapters/cue_parser.cpp b/src/common/chapters/cue_parser.cpp index 8ab917855..de9d41a83 100644 --- a/src/common/chapters/cue_parser.cpp +++ b/src/common/chapters/cue_parser.cpp @@ -278,7 +278,7 @@ add_elements_for_cue_entry(cue_parser_args_t &a, auto &display = GetChild(*a.atom); GetChild(display).SetValue(cue_str_internal_to_utf(a, a.name)); - GetChild(display).SetValue(a.language.get_iso639_2_code_or("und")); + GetChild(display).SetValue(a.language.get_iso639_alpha_3_code_or("und")); add_subchapters_for_index_entries(a); diff --git a/src/common/iso639.cpp b/src/common/iso639.cpp index e9b46245a..5d4f7a761 100644 --- a/src/common/iso639.cpp +++ b/src/common/iso639.cpp @@ -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; diff --git a/src/common/iso639.h b/src/common/iso639.h index b6c896df1..2569ed82b 100644 --- a/src/common/iso639.h +++ b/src/common/iso639.h @@ -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 const g_languages; diff --git a/src/common/tags/tags.cpp b/src/common/tags/tags.cpp index cc44e5110..dbcf8881c 100644 --- a/src/common/tags/tags.cpp +++ b/src/common/tags/tags.cpp @@ -285,7 +285,7 @@ set_simple(KaxTag &tag, return; if (language.has_valid_iso639_code()) - GetChild(k_simple_tag).SetValue(language.get_iso639_2_code()); + GetChild(k_simple_tag).SetValue(language.get_iso639_alpha_3_code()); GetChild(k_simple_tag).SetValue(language.format()); } diff --git a/src/common/tags/vorbis.cpp b/src/common/tags/vorbis.cpp index 27aa9addc..510a0ddf6 100644 --- a/src/common/tags/vorbis.cpp +++ b/src/common/tags/vorbis.cpp @@ -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 {}; diff --git a/src/common/translation.cpp b/src/common/translation.cpp index c05ed3946..e1e22c743 100644 --- a/src/common/translation.cpp +++ b/src/common/translation.cpp @@ -43,7 +43,7 @@ std::vector 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 diff --git a/src/common/translation.h b/src/common/translation.h index 701ce36da..de7ba27ab 100644 --- a/src/common/translation.h +++ b/src/common/translation.h @@ -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, diff --git a/src/common/xml/ebml_chapters_converter.cpp b/src/common/xml/ebml_chapters_converter.cpp index 8607f9adc..3e75f9a0c 100644 --- a/src/common/xml/ebml_chapters_converter.cpp +++ b/src/common/xml/ebml_chapters_converter.cpp @@ -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()); diff --git a/src/common/xml/ebml_tags_converter.cpp b/src/common/xml/ebml_tags_converter.cpp index 15c163092..4341997bc 100644 --- a/src/common/xml/ebml_tags_converter.cpp +++ b/src/common/xml/ebml_tags_converter.cpp @@ -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()); diff --git a/src/extract/options.cpp b/src/extract/options.cpp index dfdc2d54f..3d2a850a4 100644 --- a/src/extract/options.cpp +++ b/src/extract/options.cpp @@ -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(""), static_cast(m_extraction_mode), m_tracks.size())); + prefix, m_simple_chapter_format, m_simple_chapter_language.get_iso639_alpha_3_code_or(""), static_cast(m_extraction_mode), m_tracks.size())); for (auto idx = 0u; idx < m_tracks.size(); ++idx) { diff --git a/src/extract/xtr_vobsub.cpp b/src/extract/xtr_vobsub.cpp index 764edee8a..138bdf176 100644 --- a/src/extract/xtr_vobsub.cpp +++ b/src/extract/xtr_vobsub.cpp @@ -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; diff --git a/src/input/r_matroska.cpp b/src/input/r_matroska.cpp index bcb4bc290..c848c37df 100644 --- a/src/input/r_matroska.cpp +++ b/src/input/r_matroska.cpp @@ -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(track->v_stereo_mode), static_cast(stereo_mode_c::unspecified)); diff --git a/src/input/r_mpeg_ts.cpp b/src/input/r_mpeg_ts.cpp index 88e51abb6..edb37900e 100644 --- a/src/input/r_mpeg_ts.cpp +++ b/src/input/r_mpeg_ts.cpp @@ -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(*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 diff --git a/src/input/r_ogm.cpp b/src/input/r_ogm.cpp index 18fbfac55..f04fb5b7b 100644 --- a/src/input/r_ogm.cpp +++ b/src/input/r_ogm.cpp @@ -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); diff --git a/src/input/r_qtmp4.cpp b/src/input/r_qtmp4.cpp index b66326dbb..0401486a9 100644 --- a/src/input/r_qtmp4.cpp +++ b/src/input/r_qtmp4.cpp @@ -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)); diff --git a/src/input/r_usf.cpp b/src/input/r_usf.cpp index e848c74b2..62b1b3eff 100644 --- a/src/input/r_usf.cpp +++ b/src/input/r_usf.cpp @@ -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()); } diff --git a/src/input/r_vobsub.cpp b/src/input/r_vobsub.cpp index cb9d2ce5a..30a7af570 100644 --- a/src/input/r_vobsub.cpp +++ b/src/input/r_vobsub.cpp @@ -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()); } diff --git a/src/input/teletext_to_srt_packet_converter.cpp b/src/input/teletext_to_srt_packet_converter.cpp index fb5954192..43db4557d 100644 --- a/src/input/teletext_to_srt_packet_converter.cpp +++ b/src/input/teletext_to_srt_packet_converter.cpp @@ -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 diff --git a/src/input/teletext_to_srt_packet_converter.h b/src/input/teletext_to_srt_packet_converter.h index 9ce8f3017..2c374e72d 100644 --- a/src/input/teletext_to_srt_packet_converter.h +++ b/src/input/teletext_to_srt_packet_converter.h @@ -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: diff --git a/src/merge/generic_packetizer.cpp b/src/merge/generic_packetizer.cpp index 76570bd52..e81137827 100644 --- a/src/merge/generic_packetizer.cpp +++ b/src/merge/generic_packetizer.cpp @@ -662,7 +662,7 @@ generic_packetizer_c::set_language(mtx::bcp47::language_c const &language) { return; if (language.has_valid_iso639_code()) - GetChild(m_track_entry).SetValue(language.get_iso639_2_code()); + GetChild(m_track_entry).SetValue(language.get_iso639_alpha_3_code()); if (!mtx::bcp47::language_c::is_disabled()) GetChild(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(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(m_track_entry).SetValue(iso639_alpha_3_code); if (!mtx::bcp47::language_c::is_disabled()) GetChild(m_track_entry).SetValue(language.format()); diff --git a/src/merge/output_control.cpp b/src/merge/output_control.cpp index 7b699a48d..5b4b0db01 100644 --- a/src/merge/output_control.cpp +++ b/src/merge/output_control.cpp @@ -1498,7 +1498,7 @@ prepare_additional_chapter_atoms_for_rendering() { GetChild(display).SetValueUTF8(ch_name); if (ch_language.is_valid()) { - GetChild(display).SetValue(ch_language.get_iso639_2_code_or("und")); + GetChild(display).SetValue(ch_language.get_iso639_alpha_3_code_or("und")); if (!mtx::bcp47::language_c::is_disabled()) GetChild(display).SetValue(ch_language.format()); else diff --git a/src/mkvtoolnix-gui/app.cpp b/src/mkvtoolnix-gui/app.cpp index 7461c87f0..9f08a9d00 100644 --- a/src/mkvtoolnix-gui/app.cpp +++ b/src/mkvtoolnix-gui/app.cpp @@ -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) diff --git a/src/mkvtoolnix-gui/chapter_editor/chapter_model.cpp b/src/mkvtoolnix-gui/chapter_editor/chapter_model.cpp index 0cc648711..ae3eb462f 100644 --- a/src/mkvtoolnix-gui/chapter_editor/chapter_model.cpp +++ b/src/mkvtoolnix-gui/chapter_editor/chapter_model.cpp @@ -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(kDisplay)); } diff --git a/src/mkvtoolnix-gui/header_editor/language_value_page.cpp b/src/mkvtoolnix-gui/header_editor/language_value_page.cpp index 91c6fde3e..0734308db 100644 --- a/src/mkvtoolnix-gui/header_editor/language_value_page.cpp +++ b/src/mkvtoolnix-gui/header_editor/language_value_page.cpp @@ -31,7 +31,7 @@ QWidget * LanguageValuePage::createInputControl() { m_originalValue = m_element ? static_cast(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); diff --git a/src/mkvtoolnix-gui/merge/source_file.cpp b/src/mkvtoolnix-gui/merge/source_file.cpp index 3ee077384..e5ed103f1 100644 --- a/src/mkvtoolnix-gui/merge/source_file.cpp +++ b/src/mkvtoolnix-gui/merge/source_file.cpp @@ -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()) diff --git a/src/mkvtoolnix-gui/merge/track.cpp b/src/mkvtoolnix-gui/merge/track.cpp index 608824367..7cbd5b5b8 100644 --- a/src/mkvtoolnix-gui/merge/track.cpp +++ b/src/mkvtoolnix-gui/merge/track.cpp @@ -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())); } } diff --git a/src/mkvtoolnix-gui/util/language_dialog.cpp b/src/mkvtoolnix-gui/util/language_dialog.cpp index 68c5e773e..cd790ce37 100644 --- a/src/mkvtoolnix-gui/util/language_dialog.cpp +++ b/src/mkvtoolnix-gui/util/language_dialog.cpp @@ -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())); diff --git a/src/mkvtoolnix-gui/util/settings.cpp b/src/mkvtoolnix-gui/util/settings.cpp index 127675589..322c0c772 100644 --- a/src/mkvtoolnix-gui/util/settings.cpp +++ b/src/mkvtoolnix-gui/util/settings.cpp @@ -455,7 +455,7 @@ Settings::setDefaults(std::optional 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(); diff --git a/src/propedit/change.cpp b/src/propedit/change.cpp index 414334ed4..43a30f8fb 100644 --- a/src/propedit/change.cpp +++ b/src/propedit/change.cpp @@ -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(type, "language", language.get_iso639_2_code())); + changes.push_back(std::make_shared(type, "language", language.get_iso639_alpha_3_code())); if ((name == "language-ietf") || !mtx::bcp47::language_c::is_disabled()) changes.push_back(std::make_shared(type, "language-ietf", language.format())); diff --git a/tests/results.txt b/tests/results.txt index 180df2c67..e9a190c3b 100644 --- a/tests/results.txt +++ b/tests/results.txt @@ -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 diff --git a/tests/unit/common/bcp47.cpp b/tests/unit/common/bcp47.cpp index d213f1408..37e9c2e33 100644 --- a/tests/unit/common/bcp47.cpp +++ b/tests/unit/common/bcp47.cpp @@ -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) {