diff options
author | Jens Verwiebe <info@jensverwiebe.de> | 2012-11-21 17:54:54 +0400 |
---|---|---|
committer | Jens Verwiebe <info@jensverwiebe.de> | 2012-11-21 17:54:54 +0400 |
commit | d0b7b0d228fe1bd57cac25d7d068aefcdcf0b3bb (patch) | |
tree | ee471aedcc53e806a3d960dcd6830392444153f4 /intern | |
parent | cdcab16d12a0bb28fd0111895c01c3af0da4eaba (diff) |
OSX/locale: workaround to get osx system locale from user defaults
Diffstat (limited to 'intern')
-rw-r--r-- | intern/locale/boost_locale_wrapper.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/intern/locale/boost_locale_wrapper.cpp b/intern/locale/boost_locale_wrapper.cpp index ec2976f19b9..7b317da1edf 100644 --- a/intern/locale/boost_locale_wrapper.cpp +++ b/intern/locale/boost_locale_wrapper.cpp @@ -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! } |