OSX/locale: workaround to get osx system locale from user defaults

This commit is contained in:
Jens Verwiebe
2012-11-21 13:54:54 +00:00
parent cdcab16d12
commit d0b7b0d228

View File

@@ -30,6 +30,10 @@
#include "boost_locale_wrapper.h"
#if defined (__APPLE__)
#include "stdio.h"
#endif
static std::string messages_path;
static std::string default_domain;
@@ -60,7 +64,19 @@ void bl_locale_set(const char *locale)
std::locale::global(gen(locale));
}
else {
#if defined (__APPLE__)
// workaround to get osx system locale from user defaults
FILE* fp;
char result [10];
char osx_locale [10];
fp = popen("defaults read .GlobalPreferences AppleLocale","r");
fread(result,1,sizeof(result),fp);
fclose (fp);
sprintf(osx_locale, """%s.UTF-8""", result);
std::locale::global(gen(osx_locale));
#else
std::locale::global(gen(""));
#endif
}
// Note: boost always uses "C" LC_NUMERIC by default!
}