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-07-22 18:14:28 +0400
committerXiao Xiangquan <xiaoxiangquan@gmail.com>2011-07-22 18:14:28 +0400
commit08645d92933c35b936e555ee7fec3f0dce2ad1bf (patch)
tree55eb33e24213a5317922bcfd8f3ab6cb72c6529b /source/blender/blenfont
parent77926a7f9d7c8f07bc4aa70c48ade0f7927836b4 (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.h2
-rw-r--r--source/blender/blenfont/intern/blf.c3
-rw-r--r--source/blender/blenfont/intern/blf_lang.c51
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)