[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54978] trunk/blender/intern: OSX: Get the current locale in objC-style
jens verwiebe
info at jensverwiebe.de
Sat Mar 2 23:50:47 CET 2013
Revision: 54978
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54978
Author: jensverwiebe
Date: 2013-03-02 22:50:46 +0000 (Sat, 02 Mar 2013)
Log Message:
-----------
OSX: Get the current locale in objC-style
Modified Paths:
--------------
trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
trunk/blender/intern/locale/boost_locale_wrapper.cpp
trunk/blender/intern/locale/boost_locale_wrapper.h
Modified: trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm 2013-03-02 22:20:27 UTC (rev 54977)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemCocoa.mm 2013-03-02 22:50:46 UTC (rev 54978)
@@ -542,6 +542,7 @@
#pragma mark initialization/finalization
+const char *user_locale; // Global current user locale
GHOST_SystemCocoa::GHOST_SystemCocoa()
{
@@ -580,6 +581,12 @@
rstring = NULL;
m_ignoreWindowSizedMessages = false;
+
+ //Get current locale
+ CFLocaleRef myCFLocale = CFLocaleCopyCurrent();
+ NSLocale *myNSLocale = (NSLocale *)CFBridgingRelease(myCFLocale);
+ NSString *nsIdentifier = [myNSLocale localeIdentifier];
+ user_locale = [nsIdentifier UTF8String];
}
GHOST_SystemCocoa::~GHOST_SystemCocoa()
Modified: trunk/blender/intern/locale/boost_locale_wrapper.cpp
===================================================================
--- trunk/blender/intern/locale/boost_locale_wrapper.cpp 2013-03-02 22:20:27 UTC (rev 54977)
+++ trunk/blender/intern/locale/boost_locale_wrapper.cpp 2013-03-02 22:50:46 UTC (rev 54978)
@@ -66,28 +66,7 @@
}
else {
#ifdef __APPLE__
- // workaround to get osx system locale from user defaults
- FILE *fp;
- std::string locale_osx = "";
- char result[16];
- int result_len = 0;
-
- fp = popen("defaults read .GlobalPreferences AppleLocale", "r");
-
- if (fp) {
- result_len = fread(result, 1, sizeof(result) - 1, fp);
-
- if (result_len > 0) {
- result[result_len - 1] = '\0'; // \0 terminate and remove \n
- locale_osx = std::string(result) + std::string(".UTF-8");
- }
-
- pclose(fp);
- }
-
- if (locale_osx == "")
- fprintf(stderr, "Locale set: failed to read AppleLocale read from defaults\n");
-
+ std::string locale_osx = user_locale + std::string(".UTF-8");
_locale = gen(locale_osx.c_str());
std::locale::global(_locale);
#else
Modified: trunk/blender/intern/locale/boost_locale_wrapper.h
===================================================================
--- trunk/blender/intern/locale/boost_locale_wrapper.h 2013-03-02 22:20:27 UTC (rev 54977)
+++ trunk/blender/intern/locale/boost_locale_wrapper.h 2013-03-02 22:50:46 UTC (rev 54978)
@@ -42,7 +42,11 @@
void bl_locale_set(const char *locale);
const char *bl_locale_get(void);
const char *bl_locale_pgettext(const char *msgctxt, const char *msgid);
-
+
+#ifdef __APPLE__
+extern const char *user_locale; // pulled from Ghost_SystemCocoa
+#endif
+
#ifdef __cplusplus
}
#endif
More information about the Bf-blender-cvs
mailing list