diff options
author | Xiao Xiangquan <xiaoxiangquan@gmail.com> | 2011-07-22 18:14:28 +0400 |
---|---|---|
committer | Xiao Xiangquan <xiaoxiangquan@gmail.com> | 2011-07-22 18:14:28 +0400 |
commit | 08645d92933c35b936e555ee7fec3f0dce2ad1bf (patch) | |
tree | 55eb33e24213a5317922bcfd8f3ab6cb72c6529b /source/blender/blenfont | |
parent | 77926a7f9d7c8f07bc4aa70c48ade0f7927836b4 (diff) |
switch language in User Preference's System page. with some known switch failure bugs
Diffstat (limited to 'source/blender/blenfont')
-rw-r--r-- | source/blender/blenfont/BLF_api.h | 2 | ||||
-rw-r--r-- | source/blender/blenfont/intern/blf.c | 3 | ||||
-rw-r--r-- | source/blender/blenfont/intern/blf_lang.c | 51 |
3 files changed, 44 insertions, 12 deletions
diff --git a/source/blender/blenfont/BLF_api.h b/source/blender/blenfont/BLF_api.h index 88c29d43d25..837ca814fbf 100644 --- a/source/blender/blenfont/BLF_api.h +++ b/source/blender/blenfont/BLF_api.h @@ -218,8 +218,6 @@ void BLF_dir_free(char **dirs, int count); extern int blf_mono_font; extern int blf_mono_font_render; // dont mess drawing with render threads. -// XXX, me, too -extern int blf_unifont; #define _(msgid) BLF_gettext(msgid) #define N_(msgid) msgid diff --git a/source/blender/blenfont/intern/blf.c b/source/blender/blenfont/intern/blf.c index 87d380c1b2a..c0e62b1c0c7 100644 --- a/source/blender/blenfont/intern/blf.c +++ b/source/blender/blenfont/intern/blf.c @@ -75,9 +75,6 @@ static int global_font_dpi= 72; int blf_mono_font= -1; int blf_mono_font_render= -1; -// XXX, should these be made into global_font_'s too? -int blf_unifont= -1; - static FontBLF *BLF_get(int fontid) { if (fontid >= 0 && fontid < BLF_MAX_FONT) diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c index 6ea9a259286..c40c98a3699 100644 --- a/source/blender/blenfont/intern/blf_lang.c +++ b/source/blender/blenfont/intern/blf_lang.c @@ -41,6 +41,7 @@ #include <locale.h> #include "libintl.h" +#include "DNA_userdef_types.h" #include "DNA_listBase.h" #include "DNA_vec_types.h" @@ -65,6 +66,40 @@ static char global_messagepath[1024]; static char global_language[32]; static char global_encoding_name[32]; +/* map from the rna_userdef.c:rna_def_userdef_system(BlenderRNA *brna):language_items */ +static char locale_default[] = ""; +static char locale_english[] = "en_US"; +static char locale_japanese[] = "ja_JP"; +static char locale_sim_chinese[] = "zh_CN"; +static char locale_tra_chinese[] = "zh_TW"; + +static char *lang_to_locale[] = { + locale_default, + locale_english, /* us english is the default language of blender */ + locale_japanese, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_sim_chinese, + locale_tra_chinese, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, + locale_default, +}; void BLF_lang_init(void) { @@ -82,16 +117,16 @@ void BLF_lang_init(void) /* XXX WARNING!!! IN osx somehow the previous function call jumps in this one??? (ton, ppc) */ void BLF_lang_set(const char *str) { + char *locreturn; if(str==NULL) { - return; + if( U.language==1 ) + return; + str = lang_to_locale[U.language]; } - else { - #if defined (_WIN32) || defined(__APPLE__) BLI_setenv("LANG", str); - BLI_strncpy(global_language, BLI_getenv("LANG"), sizeof(global_language)); #else - char *locreturn= setlocale(LC_ALL, str); + locreturn= setlocale(LC_ALL, str); if (locreturn == NULL) { char *lang= BLI_sprintfN("%s.UTF-8", str); @@ -102,13 +137,15 @@ void BLF_lang_set(const char *str) MEM_freeN(lang); } - BLI_strncpy(global_language, locreturn, sizeof(global_language)); + setlocale(LC_NUMERIC, "C"); #endif textdomain(DOMAIN_NAME); bindtextdomain(DOMAIN_NAME, global_messagepath); /* bind_textdomain_codeset(DOMAIN_NAME, global_encoding_name); */ - } + BLI_strncpy(global_language, str, sizeof(global_language)); + + } void BLF_lang_encoding(const char *str) |