0

私は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

言語を設定できるようにするためだけに。

言語を設定するためのより簡単な(またはより良い)方法は何でしょうか?

4

1 に答える 1

2

Sessionを使用して言語システムを管理します。デフォルトのセッションを配置してMY_Controller、構成ファイルから取得できます ( $config['language'])。

自分自身とクライアントを URI と混同しないでください。URI が重複します。SEO を優先する必要がある場合は、そうしないでください。

于 2011-10-07T17:47:40.713 に答える