forked from enlightenment/enlightenment
(e_intl_language_set) Fixed a bug when lang is NULL. The expected behaviour is
to restore the original environment variables. The code, after doing this, sets back all the env vars to _e_intl_language. This fails when the different locale env vars have different values. SVN revision: 18766
This commit is contained in:
parent
a2172cfd4a
commit
608a3e40f5
|
@ -137,8 +137,16 @@ void
|
|||
e_intl_language_set(const char *lang)
|
||||
{
|
||||
if (_e_intl_language) free(_e_intl_language);
|
||||
/* NULL lang means set everything back to the original environemtn defaults */
|
||||
if (!lang)
|
||||
if (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);
|
||||
}
|
||||
/* NULL lang means set everything back to the original environment defaults */
|
||||
else
|
||||
{
|
||||
e_util_env_set("LC_MESSAGES", _e_intl_orig_lc_messages);
|
||||
e_util_env_set("LANGUAGE", _e_intl_orig_language);
|
||||
|
@ -149,23 +157,11 @@ e_intl_language_set(const char *lang)
|
|||
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);
|
||||
}
|
||||
else
|
||||
{
|
||||
_e_intl_language = NULL;
|
||||
}
|
||||
_e_intl_language = (lang ? strdup (lang) : NULL);
|
||||
|
||||
if (setlocale(LC_ALL, _e_intl_language) == NULL)
|
||||
{
|
||||
perror("setlocale() :");
|
||||
perror("setlocale()");
|
||||
if (_e_intl_language)
|
||||
printf("An error occured when trying to use the locale: %s\nDetails:\n",
|
||||
_e_intl_language);
|
||||
|
|
Loading…
Reference in New Issue