While循环到PHP中的开关中


While loop into a switch in PHP?

我正在尝试用不同的语言创建一个网站,并从数据库中检索这些信息。现在我有两种语言:英语和荷兰语。

我想做的是获得所有语言的可能性,并将其转换为开关。那么,如果人们会点击例如这个链接: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'。