Merge branch 'testing' of gitorious.org:statusnet/mainline into 0.9.x

This commit is contained in:
Brion Vibber
2010-04-20 13:52:58 +02:00
7 changed files with 88 additions and 28 deletions

View File

@@ -41,11 +41,13 @@ function common_init_locale($language=null)
}
putenv('LANGUAGE='.$language);
putenv('LANG='.$language);
return setlocale(LC_ALL, $language . ".utf8",
$ok = setlocale(LC_ALL, $language . ".utf8",
$language . ".UTF8",
$language . ".utf-8",
$language . ".UTF-8",
$language);
return $ok;
}
function common_init_language()
@@ -89,6 +91,14 @@ function common_init_language()
$locale_set = common_init_locale($language);
}
common_init_gettext();
}
/**
* @access private
*/
function common_init_gettext()
{
setlocale(LC_CTYPE, 'C');
// So we do not have to make people install the gettext locales
$path = common_config('site','locale_path');
@@ -97,6 +107,25 @@ function common_init_language()
textdomain("statusnet");
}
/**
* Switch locale during runtime, and poke gettext until it cries uncle.
* Otherwise, sometimes it doesn't actually switch away from the old language.
*
* @param string $language code for locale ('en', 'fr', 'pt_BR' etc)
*/
function common_switch_locale($language=null)
{
common_init_locale($language);
setlocale(LC_CTYPE, 'C');
// So we do not have to make people install the gettext locales
$path = common_config('site','locale_path');
bindtextdomain("statusnet", $path);
bind_textdomain_codeset("statusnet", "UTF-8");
textdomain("statusnet");
}
function common_timezone()
{
if (common_logged_in()) {