【问题标题】:Best way to set a language in CodeIgniter with URIs使用 URI 在 CodeIgniter 中设置语言的最佳方法
【发布时间】:2010-09-06 09:05:59
【问题描述】:

我正在使用带有 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

到网址。问题是我将 URI 用于其他目的(例如加载页面)

page/x

这会导致 URL 很长,例如:

www.site.com/controller/method/page/x/locale/y

只是为了能够设置语言。

设置语言的更简单(或更好)的方法是什么?

【问题讨论】:

  • 我认为这是一种非常优雅的方法,并且对 SEO 非常友好,至少只要您的参数顺序没有改变。否则,相同的内容可能会出现重复的 URL,至少据我所知,这对 SEO 不利。
  • 谢谢,在我安全方面,订单不应该改变。

标签: php codeigniter uri codeigniter-url


【解决方案1】:

使用Session 管理您的语言系统。 您可以将默认会话放入MY_Controller 并从配置文件 ($config['language']) 中获取。

不要将自己和客户与 URI 混淆。 URI 会有重复。 如果您需要优先考虑 SEO,请不要这样做。

【讨论】:

    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多