Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_intl.c e_ipc_handlers.h Log Message: intl - use env vars if set. allow reset to env vars default =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_intl.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- e_intl.c 31 May 2005 22:59:31 -0000 1.33 +++ e_intl.c 27 Jun 2005 13:24:56 -0000 1.34 @@ -11,6 +11,10 @@ * * as we get translations add languages to the simplified lang list (C and en are currently the same, ja is a test translation - incomplete) */ +static char *_e_intl_orig_lc_messages = NULL; +static char *_e_intl_orig_language = NULL; +static char *_e_intl_orig_lc_all = NULL; +static char *_e_intl_orig_lang = NULL; static char *_e_intl_language = NULL; static Evas_List *_e_intl_languages = NULL; @@ -19,6 +23,8 @@ int e_intl_init(void) { + char *s; + if (_e_intl_languages) return 1; /* supporeted languages - as we get translations - add them here @@ -58,16 +64,24 @@ ADD_LANG("it_IT.UTF-8"); ADD_LANG("cs_CS.UTF-8"); + if ((s = getenv("LC_MESSAGES"))) _e_intl_orig_lc_messages = strdup(s); + if ((s = getenv("LANGUAGE"))) _e_intl_orig_language = strdup(s); + if ((s = getenv("LC_ALL"))) _e_intl_orig_lc_all = strdup(s); + if ((s = getenv("LANG"))) _e_intl_orig_lang = strdup(s); + /* FIXME: NULL == use LANG. make this read a config value if it exists */ - e_intl_language_set(getenv("LANG")); + e_intl_language_set(NULL); return 1; } int e_intl_shutdown(void) { - free(_e_intl_language); - _e_intl_language = NULL; + IF_FREE(_e_intl_language); + IF_FREE(_e_intl_orig_lc_messages); + IF_FREE(_e_intl_orig_language); + IF_FREE(_e_intl_orig_lc_all); + IF_FREE(_e_intl_orig_lang); evas_list_free(_e_intl_languages); return 1; } @@ -100,6 +114,15 @@ /* FIXME: determine if in user or system locale dir */ if (_e_intl_language) free(_e_intl_language); + /* NULL lang means set everything back to the original environemtn defaults */ + if (!lang) + { + if (_e_intl_orig_lc_messages) e_util_env_set("LC_MESSAGES", _e_intl_orig_lc_messages); + if (_e_intl_orig_language) e_util_env_set("LANGUAGE", _e_intl_orig_language); + if (_e_intl_orig_lc_all) e_util_env_set("LC_ALL", _e_intl_orig_lc_all); + if (_e_intl_orig_lang) e_util_env_set("LANG", _e_intl_orig_lang); + } + if (!lang) lang = getenv("LC_MESSAGES"); if (!lang) lang = getenv("LANGUAGE"); if (!lang) lang = getenv("LC_ALL"); if (!lang) lang = getenv("LANG"); @@ -107,8 +130,9 @@ { _e_intl_language = strdup(lang); e_util_env_set("LANGUAGE", _e_intl_language); - if (getenv("LC_ALL")) e_util_env_set("LC_ALL", _e_intl_language); - if (getenv("LANG")) e_util_env_set("LANG", _e_intl_language); + if (getenv("LANG")) e_util_env_set("LANG", _e_intl_language); + if (getenv("LC_ALL")) e_util_env_set("LC_ALL", _e_intl_language); + if (getenv("LC_MESSAGES")) e_util_env_set("LC_MESSAGES", _e_intl_language); } else { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc_handlers.h,v retrieving revision 1.41 retrieving revision 1.42 diff -u -3 -r1.41 -r1.42 --- e_ipc_handlers.h 23 Jun 2005 03:29:37 -0000 1.41 +++ e_ipc_handlers.h 27 Jun 2005 13:24:56 -0000 1.42 @@ -903,7 +903,10 @@ STRING(s, HDL); IF_FREE(e_config->language); e_config->language = strdup(s); - e_intl_language_set(e_config->language); + if ((e_config->language) && (strlen(e_config->language) > 0)) + e_intl_language_set(e_config->language); + else + e_intl_language_set(NULL); SAVE; END_STRING(s); #elif (TYPE == E_REMOTE_IN) ------------------------------------------------------- SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from IBM. Find simple to follow Roadmaps, straightforward articles, informative Webcasts and more! Get everything you need to get up to speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs