Php 对于区域设置,存在开关或文件\u
我创建了一个多语言网站,我想知道如何获取语言数据。好的,我的代码从浏览器中获取有关用户语言的信息,然后包括区域设置文件 获取用户语言:Php 对于区域设置,存在开关或文件\u,php,Php,我创建了一个多语言网站,我想知道如何获取语言数据。好的,我的代码从浏览器中获取有关用户语言的信息,然后包括区域设置文件 获取用户语言: <?php $hl = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); ?> 包括区域设置: <?php if (file_exists('locales/".$hl.".php')){ include "locales/".$hl.".php"; }else{ include "l
<?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";
}
?>
有很多方法可以实现这一点,这取决于我们在代码中不知道的许多事情。例如,locales/en.php
始终可用(即不需要文件\u exists()
检查)。等等
即使如此,什么是最好的也可以说是个人观点
就我个人而言,对于干净、简单但不过分的问题,我更喜欢:
$hl = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
file_exists('locales/'.$hl.'.php')
? include 'locales/'.$hl.'.php'
: include 'locales/en.php';
但这同样取决于您的需求和其他编码风格。例如,如果重用所确定语言的值(例如“EN”或来自服务器变量的值,例如“DE”)是有用的,那么这会更好:
$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';
第一种语言会短得多,我会用它。你可能会在我的帖子中找到一些有用的信息。它从一个直通模式中检索语言:从URL、会话、浏览器、回退。