language_list get_languages() { // We sort every time, the local might have changed which can modify the // sort order. std::sort(known_languages.begin(), known_languages.end()); return known_languages; }
bool load_language_list() { config cfg; try { if (game_config::use_bin) { wml_config_from_file(game_config::path + "/xwml/" + "language.bin", cfg); } else { scoped_istream stream = preprocess_file(get_wml_location("hardwired/language.cfg")); read(cfg, *stream); wml_config_to_file(game_config::path + "/xwml/" + "language.bin", cfg); } } catch(config::error &) { return false; } known_languages.clear(); known_languages.push_back( language_def("", t_string(N_("System default language"), "wesnoth"), "ltr", "", "A")); foreach (const config &lang, cfg.child_range("locale")) { known_languages.push_back( language_def(lang["locale"], lang["name"], lang["dir"], lang["alternates"], lang["sort_name"])); } return true; }
voice_info::voice_info(const std::string& data_path,language_list& languages): gender("gender",RHVoice_voice_gender_unknown), enabled("enabled",true), preferred("preferred",false), country("country") { gender.define("male",RHVoice_voice_gender_male); gender.define("female",RHVoice_voice_gender_female); set_data_path(data_path); string_property name("name"); enum_string_property language_name("language"); for(language_list::const_iterator it(languages.begin());it!=languages.end();++it) { language_name.define(it->get_name()); } config cfg; cfg.register_setting(name); cfg.register_setting(language_name); cfg.register_setting(country); cfg.register_setting(sample_rate); cfg.register_setting(gender); cfg.load(path::join(data_path,"voice.info")); if(!name.is_set()) throw file_format_error("Voice name is not set"); set_name(name); if(!language_name.is_set()) throw file_format_error("Voice language is not set"); language_list::iterator lang=languages.find(language_name); voice_language=lang; settings.default_to(voice_language->voice_settings); }
const language_def& get_locale() { //TODO: Add in support for querying the locale on Windows assert(known_languages.size() != 0); const std::string& prefs_locale = preferences::language(); if(prefs_locale.empty() == false) { wesnoth_setlocale(LC_MESSAGES, prefs_locale, NULL); for(language_list::const_iterator i = known_languages.begin(); i != known_languages.end(); ++i) { if (prefs_locale == i->localename) return *i; } LOG_G << "'" << prefs_locale << "' locale not found in known array; defaulting to system locale\n"; return known_languages[0]; } #if 0 const char* const locale = getenv("LANG"); #ifdef _WIN32 std::string win_locale = locale #include "language_win32.ii" return win_locale; #endif if(locale != NULL && strlen(locale) >= 2) { //we can't pass pointers into the string to the std::string //constructor because some STL implementations don't support //it (*cough* MSVC++6) std::string res(2,'z'); res[0] = tolower(locale[0]); res[1] = tolower(locale[1]); return res; } #endif LOG_G << "locale could not be determined; defaulting to system locale\n"; return known_languages[0]; }
bool load_language_list() { config cfg; try { scoped_istream stream = preprocess_file(get_wml_location("hardwired/language.cfg")); read(cfg, *stream); } catch(config::error &) { return false; } known_languages.clear(); known_languages.push_back( language_def("", t_string(N_("System default language"), "wesnoth"), "ltr", "", "A")); BOOST_FOREACH(const config &lang, cfg.child_range("locale")) { known_languages.push_back( language_def(lang["locale"], lang["name"], lang["dir"], lang["alternates"], lang["sort_name"])); } return true; }
bool load_language_list() { config cfg; try { scoped_istream stream = preprocess_file(get_wml_location("hardwired/language.cfg")); read(cfg, *stream); } catch(config::error &) { return false; } known_languages.clear(); known_languages.push_back( language_def("", "System default language", "ltr", "", "A")); config::const_child_itors langs = cfg.child_range("locale"); for(;langs.first != langs.second; ++langs.first) { known_languages.push_back( language_def((**langs.first)["locale"], (**langs.first)["name"], (**langs.first)["dir"], (**langs.first)["alternates"], (**langs.first)["sort_name"])); } return true; }