diff options
author | Xiao Xiangquan <xiaoxiangquan@gmail.com> | 2011-09-06 09:18:02 +0400 |
---|---|---|
committer | Xiao Xiangquan <xiaoxiangquan@gmail.com> | 2011-09-06 09:18:02 +0400 |
commit | 8ff7f6104ea4b67f2c75ba4672ea65f45b1974ed (patch) | |
tree | 54b03c633ce2e52453bbbdeeda80f5f33dd59e11 /source/blender/blenfont | |
parent | 034cda72d36711c725862f89eddefa3e277e2ce2 (diff) |
fix the setenv bug on windows
Diffstat (limited to 'source/blender/blenfont')
-rw-r--r-- | source/blender/blenfont/intern/blf_lang.c | 129 |
1 files changed, 42 insertions, 87 deletions
diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c index bff0db8f4f9..ed03a329ffb 100644 --- a/source/blender/blenfont/intern/blf_lang.c +++ b/source/blender/blenfont/intern/blf_lang.c @@ -67,87 +67,32 @@ 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 *long_locales[] = { - "", - "english", - "japanese", - "dutch", - "italian", - "german", - "finnish", - "swedish", - "french", - "spanish", - "catalan", - "czech", - "ptb", - "chs", - "cht", - "russian", - "croatian", - "serbian", - "ukrainian", - "polish", - "romanian", - "arabic", - "bulgarian", - "greek", - "korean" -}; - -static char short_locale_default[] = ""; -static char short_locale_english[] = "en_US"; -static char short_locale_japanese[] = "ja_JP"; -static char short_locale_dutch[] = "nl_NL"; -static char short_locale_italian[] = "it_IT"; -static char short_locale_german[] = "de_DE"; -static char short_locale_finnish[] = "fi_FI"; -static char short_locale_swedish[] = "sv_SE"; -static char short_locale_french[] = "fr_FR"; -static char short_locale_spanish[] = "es_ES"; -static char short_locale_catalan[] = "ca_AD"; -static char short_locale_czech[] = "cs_CZ"; -static char short_locale_bra_portuguese[] = "pt_BR"; -static char short_locale_sim_chinese[] = "zh_CN"; -static char short_locale_tra_chinese[] = "zh_TW"; -static char short_locale_russian[] = "ru_RU"; -static char short_locale_croatian[] = "hr_HR"; -static char short_locale_serbian[] = "sr_RS"; -static char short_locale_ukrainian[] = "uk_UA"; -static char short_locale_polish[] = "pl_PL"; -static char short_locale_romanian[] = "ro_RO"; -static char short_locale_arabic[] = "ar_EG"; -static char short_locale_bulgarian[] = "bg_BG"; -static char short_locale_greek[] = "el_GR"; -static char short_locale_korean[] = "ko_KR"; - -static char *short_locales[] = { - short_locale_default, - short_locale_english, /* us english is the default language of blender */ - short_locale_japanese, - short_locale_dutch, - short_locale_italian, - short_locale_german, - short_locale_finnish, - short_locale_swedish, - short_locale_french, - short_locale_spanish, - short_locale_catalan, - short_locale_czech, - short_locale_bra_portuguese, - short_locale_sim_chinese, - short_locale_tra_chinese, - short_locale_russian, - short_locale_croatian, - short_locale_serbian, - short_locale_ukrainian, - short_locale_polish, - short_locale_romanian, - short_locale_arabic, - short_locale_bulgarian, - short_locale_greek, - short_locale_korean, +static char *locales[] = { + "", "", + "english", "en_US", + "japanese", "ja_JP", + "dutch", "nl_NL", + "italian", "it_IT", + "german", "de_DE", + "finnish", "fi_FI", + "swedish", "sv_SE", + "french", "fr_FR", + "spanish", "es_ES", + "catalan", "ca_AD", + "czech", "cs_CZ", + "ptb", "pt_BR", + "chs", "zh_CN", + "cht", "zh_TW", + "russian", "ru_RU", + "croatian", "hr_HR", + "serbian", "sr_RS", + "ukrainian", "uk_UA", + "polish", "pl_PL", + "romanian", "ro_RO", + "arabic", "ar_EG", + "bulgarian", "bg_BG", + "greek", "el_GR", + "korean" "ko_KR", }; void BLF_lang_init(void) @@ -169,26 +114,36 @@ void BLF_lang_set(const char *str) char *locreturn; char *short_locale; #if defined (_WIN32) - char *long_locale = long_locales[U.language]; + char *long_locale = locales[ 2 * U.language]; #endif if(str) short_locale = str; else - short_locale = short_locales[U.language]; + short_locale = locales[ 2 * U.language + 1]; +#if defined (_WIN32) if(short_locale) { - BLI_setenv("LANG", short_locale); - BLI_setenv("LANGUAGE", short_locale); + char *envStr; + if( U.language==0 )/* use system setting */ + envStr = BLI_sprintfN( "LANG=%s", getenv("LANG") ); + else + envStr = BLI_sprintfN( "LANG=%s", short_locale ); + gettext_putenv(envStr); + MEM_freeN(envStr); } - -#if defined (_WIN32) locreturn= setlocale(LC_ALL, long_locale); if (locreturn == NULL) { printf("Could not change locale to %s\n", long_locale); } #else + if(short_locale) + { + BLI_setenv("LANG", short_locale); + BLI_setenv("LANGUAGE", short_locale); + } + locreturn= setlocale(LC_ALL, short_locale); if (locreturn == NULL) { char *short_locale_utf8 = BLI_sprintfN("%s.UTF-8", short_locale); |