我正在尝试用不同的语言创建一个网站,并从数据库中检索这些信息。现在我有两种语言:英语和荷兰语。
我想做的是获得所有语言的可能性,并将其转换为开关。那么,如果人们会点击例如这个链接: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
我真的不知道如何解决这个问题。
我认为您的方法有点混乱,是使用file而不是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'。