[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