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:
Moritz Bunkus 2020-10-16 11:07:49 +02:00
parent c640556ac1
commit f412aeaf15
No known key found for this signature in database
GPG Key ID: 74AF00ADF2E32C85
35 changed files with 91 additions and 91 deletions

View File

@ -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;
}

View File

@ -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;

View File

@ -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);
}

View File

@ -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

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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());
}

View File

@ -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 {};

View File

@ -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

View File

@ -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,

View File

@ -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());

View File

@ -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());

View File

@ -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) {

View File

@ -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;

View File

@ -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));

View File

@ -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

View File

@ -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);

View File

@ -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));

View File

@ -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());
}

View File

@ -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());
}

View File

@ -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

View File

@ -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:

View File

@ -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());

View File

@ -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

View File

@ -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)

View File

@ -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));
}

View File

@ -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);

View File

@ -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())

View File

@ -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()));
}
}

View File

@ -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()));

View File

@ -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();

View File

@ -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()));

View File

@ -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

View File

@ -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) {