私はpo/moファイルでCodeIgniterを使用しています(組み込み関数は好きではありません)。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
URLに。問題は、他の目的(たとえば、ページの読み込み)にURIを使用することです。
page/x
これにより、次のような非常に長いURLが生成されます。
www.site.com/controller/method/page/x/locale/y
言語を設定できるようにするためだけに。
言語を設定するためのより簡単な(またはより良い)方法は何でしょうか?