- cmake/make/scons didnt define INTERNATIONAL when buidling blenfont
authorCampbell Barton <ideasman42@gmail.com>
Thu, 24 Sep 2009 07:03:18 +0000 (07:03 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 24 Sep 2009 07:03:18 +0000 (07:03 +0000)
- BLF_lang_init used confusing IFDEF's, unlikely this was well tested. Split this into 3 functions for Apple/Win32/Unix, Unix uses BLI_gethome_folder(), cant test others, ideally they should use BLI_gethome_folder too but needs testing.
Possibly each os cant be made to use BLI_gethome_folder and the separate func's can be removed (please test).

- units, hectometers were displayed wrong.

source/blender/blenfont/CMakeLists.txt
source/blender/blenfont/Makefile
source/blender/blenfont/SConscript
source/blender/blenfont/intern/blf_lang.c
source/blender/blenkernel/intern/unit.c

index 844a6899bf5bb6a36dae40bef5381b1d416eb4dd..9b7e950526d2c47b7be420dbcdc2ae012184ab04 100644 (file)
@@ -32,6 +32,7 @@ SET(INC
 
 IF(WITH_INTERNATIONAL)
        SET(INC ${INC} ${GETTEXT_INC})
+       ADD_DEFINITIONS(-DINTERNATIONAL)
 ENDIF(WITH_INTERNATIONAL)
 
 IF(WIN32)
index 70dd2e5052b3e9d0e871eb08de4812de4e74cba5..be62c87cbf4cbc95d31d0008cf2f85b0318572e3 100644 (file)
@@ -28,3 +28,7 @@ SOURCEDIR = source/blender/blenfont
 DIRS = intern
 
 include nan_subdirs.mk
+
+ifeq ($(INTERNATIONAL), true)
+       CPPFLAGS += -DINTERNATIONAL
+endif
index d070d98524724b6749377ecedf7db9bf2da4cea3..91edc46ba8bb18471d132e9fe0bb16c43c25d051 100644 (file)
@@ -9,9 +9,13 @@ incs += ' #/extern/glew/include'
 incs += ' ' + env['BF_FREETYPE_INC']
 incs += ' ' + env['BF_GETTEXT_INC']
 
-defs = ''
+defs = []
 
 if sys.platform == 'win32':
-       defs += ' _WIN32 USE_GETTEXT_DLL'
+       defs.append('_WIN32')
+       defs.append('USE_GETTEXT_DLL')
+
+if env['WITH_BF_INTERNATIONAL']:
+    defs.append('INTERNATIONAL')
 
 env.BlenderLib ( 'bf_blenfont', sources, Split(incs), Split(defs), libtype=['core','player'], priority=[210,210] )
index 024172d6db4df33067e4d4730d9b741c019ddeb3..ed684eda46f8ffac2115a5e4e816a751c7aeb903 100644 (file)
@@ -60,17 +60,14 @@ char global_messagepath[1024];
 char global_language[32];
 char global_encoding_name[32];
 
-
-void BLF_lang_init(void)
+#if defined(__APPLE__)
+void BLF_lang_init(void) /* Apple Only, todo - use BLI_gethome_folder  */
 {
-#ifdef __APPLE__
        char *bundlepath;
-#endif
 
        strcpy(global_encoding_name, SYSTEM_ENCODING_DEFAULT);
 
        /* set messagepath directory */
-
 #ifndef LOCALEDIR
 #define LOCALEDIR "/usr/share/locale"
 #endif
@@ -81,44 +78,52 @@ void BLF_lang_init(void)
                BLI_make_file_string("/", global_messagepath, BLI_gethome(), ".blender/locale");
 
                if (!BLI_exist(global_messagepath)) { /* locale not in home dir */
-#ifdef WIN32 
-                       BLI_make_file_string("/", global_messagepath, BLI_gethome(), "/locale");
-                       if (!BLI_exist(global_messagepath)) {
-#endif
-#ifdef __APPLE__
                        /* message catalogs are stored inside the application bundle */
                        bundlepath= BLI_getbundle();
                        strcpy(global_messagepath, bundlepath);
                        strcat(global_messagepath, "/Contents/Resources/locale");
                        if (!BLI_exist(global_messagepath)) { /* locale not in bundle (now that's odd..) */
-#endif
                                strcpy(global_messagepath, LOCALEDIR);
 
                                if (!BLI_exist(global_messagepath)) { /* locale not in LOCALEDIR */
                                        strcpy(global_messagepath, "message"); /* old compatibility as last */
                                }
-#ifdef WIN32
                        }
-#endif
-#ifdef __APPLE__
-                       }
-#endif
                }
        }
 }
-
-void BLF_lang_set(const char *str)
+#elif defined(_WIN32)
+void BLF_lang_init(void) /* Windows Only, todo - use BLI_gethome_folder  */
 {
-#if defined (_WIN32) || defined(__APPLE__)
-       char envstr[12];
+       strcpy(global_encoding_name, SYSTEM_ENCODING_DEFAULT);
+       
+       strcpy(global_messagepath, ".blender/locale");
+
+       if (!BLI_exist(global_messagepath)) { /* locale not in current dir */
+               BLI_make_file_string("/", global_messagepath, BLI_gethome(), ".blender/locale");
 
-       sprintf(envstr, "LANG=%s", str);
-       envstr[strlen(envstr)]= '\0';
-#ifdef _WIN32
-       gettext_putenv(envstr);
+               if (!BLI_exist(global_messagepath)) { /* locale not in home dir */
+                       BLI_make_file_string("/", global_messagepath, BLI_gethome(), "/locale");
+               }
+       }
+}
 #else
-       putenv(envstr);
+void BLF_lang_init(void)  /* not win or mac */
+{
+       char *messagepath= BLI_gethome_folder("locale", BLI_GETHOME_ALL);
+       
+       if(messagepath)
+               strncpy(global_messagepath, messagepath, sizeof(global_messagepath));
+       else
+               global_messagepath[0]= '\0';
+
+}
 #endif
+
+void BLF_lang_set(const char *str)
+{
+#if defined (_WIN32) || defined(__APPLE__)
+       BLI_setenv("LANG", str);
 #else
        char *locreturn= setlocale(LC_ALL, str);
        if (locreturn == NULL) {
index f8e3b3c5ad2d1d7afe64ec4a1e6e4f236eec1869..1f72c894cc8b410702a55d47411d11a387416e06 100644 (file)
@@ -75,7 +75,7 @@ static struct bUnitCollection buDummyCollecton = {buDummyDef, 0, 0, sizeof(buDum
 /* Lengths */
 static struct bUnitDef buMetricLenDef[] = {
        {"kilometer", "kilometers",             "km", NULL,     "Kilometers", 1000.0, 0.0,              B_UNIT_DEF_NONE},
-       {"hectometer", "hectometers",   "hm", NULL,     "10 Meters", 100.0, 0.0,                        B_UNIT_DEF_SUPPRESS},
+       {"hectometer", "hectometers",   "hm", NULL,     "100 Meters", 100.0, 0.0,                       B_UNIT_DEF_SUPPRESS},
        {"dekameter", "dekameters",             "dkm",NULL,     "10 Meters", 10.0, 0.0,                 B_UNIT_DEF_SUPPRESS},
        {"meter", "meters",                             "m",  NULL,     "Meters", 1.0, 0.0,                     B_UNIT_DEF_NONE}, /* base unit */
        {"decimetre", "decimetres",             "dm", NULL,     "10 Centimeters", 0.1, 0.0,                     B_UNIT_DEF_SUPPRESS},
@@ -485,7 +485,7 @@ int bUnit_ReplaceString(char *str, int len_max, char *str_prev, double scale_pre
                if(unit==NULL)
                        unit= unit_default(usys);
 
-               /* add the unit prefic and re-run, use brackets incase there was an expression given */
+               /* add the unit prefix and re-run, use brackets incase there was an expression given */
                if(snprintf(str_tmp, sizeof(str_tmp), "(%s)%s", str, unit->name) < sizeof(str_tmp)) {
                        strncpy(str, str_tmp, len_max);
                        return bUnit_ReplaceString(str, len_max, NULL, scale_pref, system, type);