Try to fix logic for setting locales when NULL is passed, This shoud satisfy

the needs of both Mathieu and andyetitmoves.
- Get lang from env vars
- If we were passed NULL do not set any env vars


SVN revision: 18809
This commit is contained in:
stffrdhrn 2005-12-03 05:56:10 +00:00 committed by stffrdhrn
parent 45b35b0974
commit 15d712ed4a
1 changed files with 25 additions and 10 deletions

View File

@ -163,28 +163,43 @@ void
e_intl_language_set(const char *lang)
{
char *alias_locale;
int set_envars;
if (_e_intl_language) free(_e_intl_language);
/* NULL lang means set everything back to the original environment defaults */
set_envars = 1;
/* NULL lang means set everything back to the original environment
* defaults
*/
if (!lang)
{
e_util_env_set("LC_MESSAGES", _e_intl_orig_lc_messages);
e_util_env_set("LANGUAGE", _e_intl_orig_language);
e_util_env_set("LC_ALL", _e_intl_orig_lc_all);
e_util_env_set("LANG", _e_intl_orig_lang);
lang = getenv("LC_MESSAGES");
if (!lang) lang = getenv("LANGUAGE");
if (!lang) lang = getenv("LC_ALL");
if (!lang) lang = getenv("LANG");
set_envars = 0;
}
if (!lang) lang = getenv("LC_MESSAGES");
if (!lang) lang = getenv("LANGUAGE");
if (!lang) lang = getenv("LC_ALL");
if (!lang) lang = getenv("LANG");
if (lang)
{
_e_intl_language = strdup(lang);
e_util_env_set("LANGUAGE", _e_intl_language);
/* FIXME: maybe we should set these anyway? */
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);
/* Only set env vars is a non NULL locale was passed */
if (set_envars)
{
/* FIXME: maybe we should set these anyway? */
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
{