我只是在寻找一些建议。我正在创建一个提供(至少)2种语言的网站。 我设置它的方法是使用XML文件作为语言,PHP来检索XML节点中的值。 假设您有任何XML文件,按如下方式加载:
<?php
$lang = "en";
$xmlFile = simplexml_load_file("$lang/main.xml");
?>
一旦文件内容可用,我只需将每个节点输出到HTML标签中,如下所示:
<li><?php echo $xmlFile->navigation->home; ?></li>
which in turn is equal to : <li><a href="#">Home</a></li>
as a nav bar link.
现在,我正在切换语言的方式是通过“$ _POST”更改“$ lang”变量的值,如下所示:
if(isset($_POST['es'])){
$lang = "es";
}elseif(isset($_POST['en'])){
$lang = "en";
}
重置“$ lang”变量的值并加载新文件,加载新XML文件中的所有新节点,从而更改语言。
我只是想知道是否有另一种方法可以使用其他东西重置“$ lang”变量,而不是“$ _POST”或“$ _GET”。我也不想使用查询字符串。 我知道我可以使用JavaScript或jQuery来实现这一点,但我想让网站对JavaScript不太可靠。
我很感激任何想法或建议。
由于
答案 0 :(得分:2)
我会选择会话变量。
在您的网页开头,您将拥有:
if (!isset($_SESSION['language']))
$_SESSION['language'] = "en";
然后你会有一些改变语言的链接
<a href="changelanguage.php?lang=es">Español</a>
<a href="changelanguage.php?lang=fr">Français</a>
Changelanguage.php就像是
$language = $_GET['lang'];
// DO SOME CHECK HERE TO ENSURE A CORRECT LANGUAGE HAS BEEN PASSED
// OTHERWISE REVERT TO DEFAULT
$_SESSION['language'] = $language;
header("Location:index.php"); // Or wherever you want to redirect
答案 1 :(得分:1)
您是否考虑过使用$_SERVER["HTTP_ACCEPT_LANGUAGE"]
?像这样:
if ($_SERVER["HTTP_ACCEPT_LANGUAGE"]) {
$langs = explode(",", $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
for ($i = 0; $i < count($langs); $i++) {
if ($langs[$i] == "en") {
$lang = "en";
break;
}
elseif($langs[$i] == "es") {
$lang = "es";
break;
}
}
}
当然,这里的switch语句可能会更好一些,并且有更多的方式来说英语而不是en,但这应该可以在用户不必做任何事情的情况下工作。如果他们手动更改,请根据Ben的回答将其存储在cookie中。
答案 2 :(得分:0)
如何将其存储在cookie中?
答案 3 :(得分:0)
最常见的方法是将其用作网址的一部分,并在网页加载时将其解压缩:
http://www.your-site.com/en/somepage
您使用的是框架吗?
答案 4 :(得分:0)