diff --git a/src/supertux/main.cpp b/src/supertux/main.cpp index 41dc6227db7..3dccd6e38b2 100644 --- a/src/supertux/main.cpp +++ b/src/supertux/main.cpp @@ -23,6 +23,9 @@ #include #include #include +extern "C" { +#include +} #include "supertux/main.hpp" @@ -84,6 +87,12 @@ Main::init_tinygettext() if (g_config->locale != "") { dictionary_manager->set_language(tinygettext::Language::from_name(g_config->locale)); + } else { + FL_Locale *locale; + FL_FindLocale(&locale, FL_MESSAGES); + tinygettext::Language language = tinygettext::Language::from_spec( locale->lang?locale->lang:"", locale->country?locale->country:"", locale->variant?locale->variant:""); + FL_FreeLocale(&locale); + dictionary_manager->set_language(language); } } diff --git a/src/supertux/menu/language_menu.cpp b/src/supertux/menu/language_menu.cpp index 136a284684c..fab8544d116 100644 --- a/src/supertux/menu/language_menu.cpp +++ b/src/supertux/menu/language_menu.cpp @@ -56,11 +56,11 @@ LanguageMenu::menu_action(MenuItem* item) { FL_Locale *locale; FL_FindLocale(&locale, FL_MESSAGES); - tinygettext::Language language = tinygettext::Language::from_spec(locale->lang, locale->country, locale->variant); + tinygettext::Language language = tinygettext::Language::from_spec( locale->lang?locale->lang:"", locale->country?locale->country:"", locale->variant?locale->variant:""); FL_FreeLocale(&locale); - dictionary_manager->set_language(language); - g_config->locale = language.str(); + dictionary_manager->set_language(language); // set currently detected language + g_config->locale = ""; // do auto detect every time on startup g_config->save(); MenuManager::pop_current(); }