如何在此代码中根据用户的浏览器语言显示语言?

时间:2010-02-27 12:02:58

标签: php browser

如何在我的多语言网站的迷你框架内根据用户浏览器的语言显示语言?

基本上,如果没有cookie,它必须显示用户的默认语言。

index.php的示例:(渲染输出)

<h2><?php echo l('tagline_h2'); ?></h2>

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';
}

//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';
}

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

include_once 'languages/'.$lang_file;
?>

/languages/lang.en.php的示例:(存储多语言内容的地方)

<?php
$lang = array(
 'tagline_h2' => '...',

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

这是一个非常好的课程,用于检查甚至与支持的语言进行最佳匹配:

http://snippets.dzone.com/posts/show/6539