Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiao Xiangquan <xiaoxiangquan@gmail.com>2011-09-06 09:18:02 +0400
committerXiao Xiangquan <xiaoxiangquan@gmail.com>2011-09-06 09:18:02 +0400
commit8ff7f6104ea4b67f2c75ba4672ea65f45b1974ed (patch)
tree54b03c633ce2e52453bbbdeeda80f5f33dd59e11 /source/blender/blenfont
parent034cda72d36711c725862f89eddefa3e277e2ce2 (diff)
fix the setenv bug on windows
Diffstat (limited to 'source/blender/blenfont')
-rw-r--r--source/blender/blenfont/intern/blf_lang.c129
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);