void UpdateRegion();
std::list<std::string> SplitLanguage(const std::string& lang);
std::string GetLanguage(std::string lang);
- void AppendDefaultLangs(std::vector<std::string>& lang_set);
+ void AppendDefaultLangs(std::vector<std::string>* lang_set);
std::string GetStringBefore(const char* str, const char* delim);
std::map<std::string, std::set<std::string>> GetLangTable();
- void AppendLangs(const std::string& lang, std::vector<std::string>& lang_set,
- std::map<std::string, std::set<std::string>>& table);
+ void AppendLangs(const std::string& lang, std::vector<std::string>* lang_set,
+ std::map<std::string, std::set<std::string>>* table);
void ChangeLang();
void OnFreezerSignal();
return li;
}
-void AppCoreBase::Impl::AppendDefaultLangs(std::vector<std::string>& langs) {
- langs.push_back("en_US");
- langs.push_back("en_GB");
- langs.push_back("en");
+void AppCoreBase::Impl::AppendDefaultLangs(std::vector<std::string>* langs) {
+ langs->push_back("en_US");
+ langs->push_back("en_GB");
+ langs->push_back("en");
}
std::string AppCoreBase::Impl::GetStringBefore(const char* cstr,
}
void AppCoreBase::Impl::AppendLangs(const std::string& lang,
- std::vector<std::string>& langs,
- std::map<std::string, std::set<std::string>>& table) {
+ std::vector<std::string>* langs,
+ std::map<std::string, std::set<std::string>>* table) {
if (lang.empty())
return;
- langs.push_back(lang);
+ langs->push_back(lang);
std::string extract_lang = GetStringBefore(lang.c_str(), ".");
if (extract_lang.empty())
return;
- if (std::find(langs.begin(), langs.end(), extract_lang) != langs.end())
+ if (std::find(langs->begin(), langs->end(), extract_lang) != langs->end())
return;
std::string parent_lang = GetStringBefore(extract_lang.c_str(), "_");
if (parent_lang.empty())
return;
- if (table.find(parent_lang) == table.end())
+ if (table->find(parent_lang) == table->end())
return;
- auto it = table[parent_lang].find(extract_lang);
- if (it != table[parent_lang].end()) {
+ auto it = (*table)[parent_lang].find(extract_lang);
+ if (it != (*table)[parent_lang].end()) {
std::string value = *it;
- if (std::find(langs.begin(), langs.end(), value) == langs.end())
- langs.push_back(std::move(value));
+ if (std::find(langs->begin(), langs->end(), value) == langs->end())
+ langs->push_back(std::move(value));
- table[parent_lang].erase(it);
+ (*table)[parent_lang].erase(it);
return;
}
- it = table[parent_lang].find(parent_lang);
- if (it != table[parent_lang].end()) {
+ it = (*table)[parent_lang].find(parent_lang);
+ if (it != (*table)[parent_lang].end()) {
std::string value = *it;
- if (std::find(langs.begin(), langs.end(), value) == langs.end())
- langs.push_back(std::move(value));
+ if (std::find(langs->begin(), langs->end(), value) == langs->end())
+ langs->push_back(std::move(value));
- table[parent_lang].erase(parent_lang);
+ (*table)[parent_lang].erase(parent_lang);
return;
}
- if (!table[parent_lang].empty()) {
- auto i = table[parent_lang].begin();
+ if (!(*table)[parent_lang].empty()) {
+ auto i = (*table)[parent_lang].begin();
std::string value = *i;
- if (std::find(langs.begin(), langs.end(), value) == langs.end())
- langs.push_back(std::move(value));
+ if (std::find(langs->begin(), langs->end(), value) == langs->end())
+ langs->push_back(std::move(value));
- table[parent_lang].erase(i);
+ (*table)[parent_lang].erase(i);
}
}
std::vector<std::string> langs;
for (auto& i : l)
- AppendLangs(i, langs, table);
+ AppendLangs(i, &langs, &table);
- AppendDefaultLangs(langs);
+ AppendDefaultLangs(&langs);
std::string ret;
for (auto& i : langs) {
if (ret.empty())