【问题标题】:PHP Redirect by Browser Language not working!浏览器语言的 PHP 重定向不起作用!
【发布时间】:2011-01-21 19:35:04
【问题描述】:

我使用 php 数组更改语言,使 URL 看起来像这样:

http://alexchen.zxq.net/index.php?lang=es

我在默认部分的“控制器”文件中添加了$lang=$_SERVER['HTTP_ACCEPT_LANGUAGE'];,并在首选语言选项(Mozilla Firefox)中选择了另一种语言, 但它没有用。

common.php:

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang'])) {
 $lang = $_GET['lang'];

 // register the session and set the cookie
 $_SESSION['lang'] = $lang;

 setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang'])) {
 $lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang'])) {
 $lang = $_COOKIE['lang'];
}
else {
 //$lang = 'en'; <-this was previous code
        //I tried this:
        $lang=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
}

// use appropiate lang.xx.php file according to the value of the $lang
switch ($lang) {
case 'en':
 $lang_file = 'lang.en.php';
 break;

case 'es':
 $lang_file = 'lang.es.php';
 break;

case 'tw':
 $lang_file = 'lang.tw.php';
 break;

case 'cn':
 $lang_file = 'lang.cn.php';
 break;

default:
 //$lang_file = 'lang.en.php'; <-this was before
        //I also tried this:
        $lang=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
}

//translation helper function
function l($translation) {
 global $lang;
 return $lang[$translation];
}

 include_once 'languages/'.$lang_file;
?>

有什么建议吗?

【问题讨论】:

    标签: php browser redirect


    【解决方案1】:

    $_SERVER['HTTP_ACCEPT_LANGUAGE'] 比 2 个字母的 ISO 代码更复杂。查看 this question 以获得有关如何在 PHP 中解析 HTTP_ACCEPT_LANGUAGE 的好答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-27
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 2020-05-11
      • 2015-02-19
      • 2018-07-06
      相关资源
      最近更新 更多