我正在尝试使用不同语言创建一个网站,并从数据库中检索此信息。现在我有两种语言:英语和荷兰语。
我想要做的是获得所有语言的可能性,并把它放到一个开关中。因此,如果人们点击这个链接:index.php?page = NL,他们将获得页面的荷兰语翻译。
所以这是我正在使用的代码。它工作到目前为止,但它显示我认为语言选项和默认选项。因为当我删除默认值时,我只得到代码。
<div id="content">
<?php
//Retrieve languages
$querySwitchLang = "SELECT * FROM languages";
$resultSwitchLang = mysql_query($querySwitchLang);
?>
<?php
while($rowSwitchLang = mysql_fetch_array($resultSwitchLang)){
switch($page){
case $rowSwitchLang['langCode']:include('page.php');break;
default: include('pageDefault.php');
break;
}
}
?>
</div>
所以实际上我想让它像这样,因为现在它运行switch语句的次数与我认为的语言一样多次:
<div id="content">
<?php
//Retrieve languages
$querySwitchLang = "SELECT * FROM languages";
$resultSwitchLang = mysql_query($querySwitchLang);
?>
<?php
include('functions.php');
switch($page){
while($rowSwitchLang = mysql_fetch_array($resultSwitchLang)){
case $rowSwitchLang['langCode']:include('page.php');break;
}
default: include('pageDefault.php');
break;
}
?>
</div>
但这不起作用,因为我会得到这个错误:
Parse error: syntax error, unexpected 'while' (T_WHILE), expecting case (T_CASE) or default (T_DEFAULT) or '}' in C:\wamp\www\glimpler\index.php on line 6
我无法弄清楚如何解决这个问题。
答案 0 :(得分:0)
我认为你的方法有点凌乱是使用文件进行翻译而不是db,就像这样:
NL.php
<?php
return [
'welcome' =>'welkom',
'goodbye' =>'afscheid'
];
然后在你的索引中
$translationFile =$_GET['page'].'.php';
if(file_exists(translationFile)){
$language = include(translationFile);
}
else{
die("Couldn't find translation file. Page Terminated!");
}
然后回复你的翻译。
echo $language['welcome'] . ' USER';
优点是不会为每种语言提供多个页面,这使得更新更容易。 如果没有设置,你可以将$ _GET ['page']设置为'EN'。