diff --git a/include/globalconstants.h b/include/globalconstants.h index c939d49..55e899f 100644 --- a/include/globalconstants.h +++ b/include/globalconstants.h @@ -46,29 +46,29 @@ namespace GlobalConstants const std::vector LANGUAGES = { - { LANGUAGE_EN, "en", "English" , "en|eng|english" }, - { LANGUAGE_DE, "de", "German" , "de|deu|ger|german" }, - { LANGUAGE_FR, "fr", "French" , "fr|fra|fre|french" }, - { LANGUAGE_PL, "pl", "Polish" , "pl|pol|polish" }, - { LANGUAGE_RU, "ru", "Russian" , "ru|rus|russian" }, - { LANGUAGE_CN, "cn", "Chinese" , "cn|zh|zho|chi|chinese" }, - { LANGUAGE_CZ, "cz", "Czech" , "cz|cs|ces|cze|czech" }, - { LANGUAGE_ES, "es", "Spanish" , "es|spa|spanish" }, - { LANGUAGE_HU, "hu", "Hungarian" , "hu|hun|hungarian" }, - { LANGUAGE_IT, "it", "Italian" , "it|ita|italian" }, - { LANGUAGE_JP, "jp", "Japanese" , "jp|ja|jpn|japanese" }, - { LANGUAGE_TR, "tr", "Turkish" , "tr|tur|turkish" }, - { LANGUAGE_PT, "pt", "Portuguese", "pt|por|portuguese" }, - { LANGUAGE_KO, "ko", "Korean" , "ko|kor|korean" }, - { LANGUAGE_NL, "nl", "Dutch" , "nl|nld|dut|dutch" }, - { LANGUAGE_SV, "sv", "Swedish" , "sv|swe|swedish" }, - { LANGUAGE_NO, "no", "Norwegian" , "no|nor|norwegian" }, - { LANGUAGE_DA, "da", "Danish" , "da|dan|danish" }, - { LANGUAGE_FI, "fi", "Finnish" , "fi|fin|finnish" }, + { LANGUAGE_EN, "en", "English", "en|eng|english|en[_-]US" }, + { LANGUAGE_DE, "de", "German", "de|deu|ger|german|de[_-]DE" }, + { LANGUAGE_FR, "fr", "French", "fr|fra|fre|french|fr[_-]FR" }, + { LANGUAGE_PL, "pl", "Polish", "pl|pol|polish|pl[_-]PL" }, + { LANGUAGE_RU, "ru", "Russian", "ru|rus|russian|ru[_-]RU" }, + { LANGUAGE_CN, "cn", "Chinese", "cn|zh|zho|chi|chinese|zh[_-]CN" }, + { LANGUAGE_CZ, "cz", "Czech", "cz|cs|ces|cze|czech|cs[_-]CZ" }, + { LANGUAGE_ES, "es", "Spanish", "es|spa|spanish|es[_-]ES" }, + { LANGUAGE_HU, "hu", "Hungarian", "hu|hun|hungarian|hu[_-]HU" }, + { LANGUAGE_IT, "it", "Italian", "it|ita|italian|it[_-]IT" }, + { LANGUAGE_JP, "jp", "Japanese", "jp|ja|jpn|japanese|ja[_-]JP" }, + { LANGUAGE_TR, "tr", "Turkish", "tr|tur|turkish|tr[_-]TR" }, + { LANGUAGE_PT, "pt", "Portuguese", "pt|por|portuguese|pt[_-]PT" }, + { LANGUAGE_KO, "ko", "Korean", "ko|kor|korean|ko[_-]KR" }, + { LANGUAGE_NL, "nl", "Dutch", "nl|nld|dut|dutch|nl[_-]NL" }, + { LANGUAGE_SV, "sv", "Swedish", "sv|swe|swedish|sv[_-]SE" }, + { LANGUAGE_NO, "no", "Norwegian", "no|nor|norwegian|nb[_-]no|nn[_-]NO" }, + { LANGUAGE_DA, "da", "Danish", "da|dan|danish|da[_-]DK" }, + { LANGUAGE_FI, "fi", "Finnish", "fi|fin|finnish|fi[_-]FI" }, { LANGUAGE_PT_BR, "br", "Brazilian Portuguese", "br|pt_br|pt-br|ptbr|brazilian_portuguese" }, - { LANGUAGE_SK, "sk", "Slovak" , "sk|slk|slo|slovak" }, - { LANGUAGE_BL, "bl", "Bulgarian" , "bl|bg|bul|bulgarian" }, - { LANGUAGE_UK, "uk", "Ukrainian" , "uk|ukr|ukrainian" }, + { LANGUAGE_SK, "sk", "Slovak", "sk|slk|slo|slovak|sk[_-]SK" }, + { LANGUAGE_BL, "bl", "Bulgarian", "bl|bg|bul|bulgarian|bg[_-]BG" }, + { LANGUAGE_UK, "uk", "Ukrainian", "uk|ukr|ukrainian|uk[_-]UA" }, { LANGUAGE_ES_419, "es_mx", "Spanish (Latin American)", "es_mx|es-mx|esmx|es-419|spanish_latin_american" } }; diff --git a/src/downloader.cpp b/src/downloader.cpp index dcc10e2..0ac1f59 100644 --- a/src/downloader.cpp +++ b/src/downloader.cpp @@ -3282,13 +3282,13 @@ void Downloader::galaxyInstallGame(const std::string& product_id, int build_inde else sPlatform = "windows"; - std::string sLanguage = "en"; + std::string sLanguageRegex = "en|eng|english|en[_-]US"; unsigned int iLanguage = Globals::globalConfig.dlConf.iGalaxyLanguage; for (unsigned int i = 0; i < GlobalConstants::LANGUAGES.size(); ++i) { if (GlobalConstants::LANGUAGES[i].id == iLanguage) { - sLanguage = GlobalConstants::LANGUAGES[i].code; + sLanguageRegex = GlobalConstants::LANGUAGES[i].regexp; break; } } @@ -3340,10 +3340,12 @@ void Downloader::galaxyInstallGame(const std::string& product_id, int build_inde { bool bSelectedLanguage = false; bool bSelectedArch = false; + boost::regex language_re("^(" + sLanguageRegex + ")$", boost::regex::perl | boost::regex::icase); + boost::match_results what; for (unsigned int j = 0; j < json["depots"][i]["languages"].size(); ++j) { std::string language = json["depots"][i]["languages"][j].asString(); - if (language == "*" || language == sLanguage) + if (language == "*" || boost::regex_search(language, what, language_re)) bSelectedLanguage = true; }