我创建了一个多语言网站,我想知道如何获取语言数据。好吧,我的代码从浏览器获取有关用户语言的信息,然后包含语言环境文件。
获取用户语言:
<?php
$hl = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
?>
包含区域设置:
<?php
if (file_exists('locales/".$hl.".php')){
include "locales/".$hl.".php";
}else{
include "locales/en.php";
}
/* VS */
switch ($hl){
case 'de': include "locales/de.php"; break;
case 'fr': include "locales/fr.php"; break;
/* ...*/
default: include "locales/en.php";
}
?>
哪种方式最好?
答案 0 :(得分:0)
有很多方法可以解决这个问题,并且取决于我们在您的代码中不了解的众多内容。例如,locales/en.php
总是可用(即不需要file_exists()
检查)。等等
即便如此,可以说个人意见最好。
就个人而言,为了清洁和简单但不超过顶部,我更喜欢:
$hl = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
file_exists('locales/'.$hl.'.php')
? include 'locales/'.$hl.'.php'
: include 'locales/en.php';
但是,再次取决于您以及对您的要求和其他编码风格有何意义。例如。如果重用已确定语言的值是有用的(例如&#34; EN&#34;或来自服务器变量的值,例如&#34; DE&#34;)那么这会更好:
$hl = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
$language = file_exists('locales/'.$hl.'.php')
? $h1
: 'en';
include 'locales/'.$language.'.php';
// $language can be used again, eg echo "currently viewing in {$language}";
你可以把它收紧一点,但要小心它不会变得不清楚。
$browserLanguageFile = 'locales/'.substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2).'.php';
file_exists($browserLanguageFile)
? include $browserLanguageFile
: include 'locales/en.php';