root用户语言重定向+默认语言:它不起作用

时间:2011-09-03 01:57:26

标签: php cookies redirect localization

对不起我的近似英语。

我正在使用此方法根据用户语言提供重定向,并将数据保存在cookie中: http://dallascao.com/en/use-cookies-to-remember/

但是,如果我决定选择域根作为默认语言,则重定向不起作用,如下所示:

<?php $lang=$_COOKIE["lang"];
switch ($lang) {
case 'en':
    header('Location:  http://hawalove.com/');
    break;
case 'fr':
    header('Location:  http://www.hawalove.com/fr');
    break;
#Get the default language of the browser if no cookies are found.
default:
    $lang = getDefaultLanguage(); 
    switch ($lang) { 
    case 'fr' : 
        header('Location:  http://www.hawalove.com/fr'); 
        break; 
    default: 
        header('Location: http://hawalove.com/'); 
        break; 
    } 
    break;
}
?>

你能帮助我实现这个目标吗?我希望在root(mydomain.com)上有英文版,在mydomain.com/fr上有法文版。

感谢。

1 个答案:

答案 0 :(得分:0)

我猜“不起作用”意味着“为英语使用者提供无限重定向循环”。

当您选择的语言是英语时,您只需要一种不重定向的方法。添加一个关联数组,将支持的语言映射到重定向位置,然后执行以下操作:

  1. $lang抓取$_COOKIE["lang"]
  2. 如果$lang不是支持的语言(或者甚至没有设置),那么$lang = getDefaultLanguage()
  3. 如果$lang不是'en',则重定向,否则显示英文主页,而不进行重定向。
  4. 您可以将关联数组用于(2)和(3)。基本策略很简单:如果语言最终成为英语,则不要重定向。一旦拥有有效的语言,您可能想要设置语言cookie。