(Ben yerleşik işlevleri sevmiyorum) po / mo dosyaları ile CodeIgniter kullanıyorum. Ben değişkenler dil ile çerez ayarlamak için olsun kullanan zaten yapılmış işlevi var.
Şimdi, CodeIgniter get var, ama URI'lere kullanır değildir. Bu Ben (bu yapıcı yangınları) istimal fonksiyonudur:
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;
}
Bu mükemmel çalışır. Dilin ayarlanması de eklemek sadece bir konudur:
locale/x
URL'ye. Sorun (bir sayfa yükleme örneğin) diğer amaçlar için URI'lere kullanımı olduğunu
page/x
Bu gibi, çok uzun URL'ler sonuçları:
www.site.com/controller/method/page/x/locale/y
sadece dilini ayarlamak mümkün.
Ne bir dili ayarlamak için kolay bir (veya daha iyisi) yöntemi olurdu?