我将 CodeIgniter 与 po/mo 文件一起使用(我不喜欢内置函数)。我有一个已经制作好的函数,它使用 get 变量来设置带有语言的 cookie。
现在,CodeIgniter 没有 get,而是使用 URI。这是我正在使用的函数(它在构造函数中触发):
private function locale(){
$cookie_name = $this->cookie_lang;
$uri = $this->uri->uri_to_assoc(3);
if ($this->tools->isArray($uri)){
$locale = $uri['locale'];
}
if ($locale) {
setcookie("$cookie_name", $locale, 0, "/");
} else {
if( !isset($_COOKIE[$cookie_name]) && empty($_COOKIE[$cookie_name]) ) {
setcookie("$cookie_name", 'it', 0, "/");
$locale = 'it';
} else {
$locale = $_COOKIE[$cookie_name];
}
}
putenv("LC_ALL=$locale");
setlocale(LC_ALL, $locale);
bindtextdomain("default", "./locale");
textdomain("default");
$this->locale = $locale;
return true;
}
它完美地工作。设置语言只是一个附加的问题:
locale/x
到网址。问题是我将 URI 用于其他目的(例如加载页面)
page/x
这会导致 URL 很长,例如:
www.site.com/controller/method/page/x/locale/y
只是为了能够设置语言。
设置语言的更简单(或更好)的方法是什么?