mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2024-11-16 14:50:01 +00:00
Corrected locale detection on OSX.
(For me, it's de_en, which is kinda weird. But it seems to work.)
This commit is contained in:
parent
1f3e472551
commit
57c06eeba3
1 changed files with 18 additions and 13 deletions
|
@ -40,7 +40,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|||
#endif
|
||||
|
||||
#ifdef BBGE_BUILD_MACOSX
|
||||
#include <CFLocale.h>
|
||||
#include <Carbon/Carbon.h>
|
||||
#include <CoreFoundation/CFLocale.h>
|
||||
#include <CoreFoundation/CFString.h>
|
||||
|
||||
// veeery clunky.
|
||||
static std::string _CFToStdString(CFStringRef cs)
|
||||
{
|
||||
char buf[1024];
|
||||
CFStringGetCString(cs, &buf[0], 2048, kCFStringEncodingUTF8);
|
||||
return &buf[0];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void UserSettings::save()
|
||||
|
@ -647,30 +658,24 @@ void UserSettings::getSystemLocale()
|
|||
}
|
||||
#elif BBGE_BUILD_MACOSX
|
||||
CFLocaleRef locale = CFLocaleCopyCurrent();
|
||||
CFTypeRef type;
|
||||
CFArrayRef langs = CFLocaleCopyPreferredLanguages();
|
||||
CFStringRef buf;
|
||||
|
||||
type = CFLocaleGetValue(locale, kCFLocaleLanguageCode);
|
||||
|
||||
if ((buf = CFLocaleCopyDisplayNameForPropertyValue(locale, kCFLocaleLanguageCode, type)) != NULL)
|
||||
if ((buf = (CFStringRef)CFLocaleGetValue(locale, kCFLocaleLanguageCode)) != NULL)
|
||||
{
|
||||
system.locale = buf;
|
||||
system.locale = _CFToStdString(buf);
|
||||
CFRelease(buf);
|
||||
CFRelease(type);
|
||||
|
||||
type = CFLocaleGetValue(locale, kCFLocaleCountryCode);
|
||||
|
||||
if ((buf = CFLocaleCopyDisplayNameForPropertyValue(locale, kCFLocaleCountryCode, type)) != NULL)
|
||||
if ((buf = (CFStringRef)CFArrayGetValueAtIndex(langs, 0)) != NULL)
|
||||
{
|
||||
system.locale += "_";
|
||||
system.locale += buf;
|
||||
system.locale += _CFToStdString(buf);
|
||||
CFRelease(buf);
|
||||
}
|
||||
|
||||
CFRelease(type);
|
||||
}
|
||||
|
||||
CFRelease(locale);
|
||||
CFRelease(langs);
|
||||
#else
|
||||
const char *lang = (const char *)getenv("LANG");
|
||||
|
||||
|
|
Loading…
Reference in a new issue