【问题标题】:Change language of site with a html button使用 html 按钮更改网站的语言
【发布时间】:2013-02-10 15:58:01
【问题描述】:

在 PHP 中,我想在单击按钮时更改网站的语言(英语、德语等)。这是解决该问题的正确方法吗?

<?php 
  $language;
  if ($language == "en") {
    include("headerEn.php");
  } else {
    include("header.php");
  } 
?>
<a href="index.php"><?php $language = "en"; ?>
<img src="images/language/languageNO.png"></a>

<a href="index.php"><?php $language = "no"; ?>
<img src="images/language/languageEN.png"></a>

更改网站语言并在用户返回时保持不变的最佳方法是什么?

【问题讨论】:

    标签: php html variables button


    【解决方案1】:

    你可以这样做

    <a href="index.php?language=en">
    <a href="index.php?language=no">
    

    并获取语言并将它们存储在cookie中并根据cookie包含文件

    if ( !empty($_GET['language']) ) {
        $_COOKIE['language'] = $_GET['language'] === 'en' ? 'en' : 'nl';
    } else {
        $_COOKIE['language'] = 'nl';
    }
    setcookie('language', $_COOKIE['language']);
    

    if ( $_COOKIE['language'] == "en") {
       include("headerEn.php");
    } else {
       include("header.php");
    } ?>
    

    【讨论】:

    • 我认为else部分应该是else if (empty($_COOKIE['language'])),以避免当cookie(而不是请求)包含选择的语言时将语言重置为'nl'。
    【解决方案2】:

    要在不改变方法的情况下提供解决方案,您可以这样做。

    <?php 
    if(isset($_GET['language']))
      $language = $_GET['language'];
    else
      $language = "";
    
    if ($language == "en") {
       include("headerEn.php");
    } else {
       include("header.php");
    } ?>
    
    <a href="index.php?language = en"><img src="images/language/languageNO.png">      </a>
    <a href="index.php?language = no"><img src="images/language/languageEN.png"></a>
    

    如果要保留选择,可以将此值存储在数据库或会话中。

    【讨论】:

      【解决方案3】:

      有一个默认值总是好的,这样你就永远不会进入一个没有语言的网站。

      $language = $_REQUEST["language"];
      $default_header="myheaderXXX.php";
      
      switch ($language) {
          case "en":
            include("headerEn.php");
            break;
      
          case "no":
            include("header.php");
            break;
      
          default:
            include($default_header);
      }
      

      然后像这样创建链接:

      <a href="index.php?language=en">
      <a href="index.php?language=no">
      

      【讨论】:

        【解决方案4】:

        您不能通过 html 更改 PHP 中的变量。 PHP 是服务器端 HTML 是客户端端

        您可以使用GET variables 来更改它。这是最简单的方法。

        【讨论】:

          【解决方案5】:

          您可以像这样实现相同的代码。我已经编辑了你的代码。

          <?php 
          $language; ?>
          <?php if ($language == "en") : ?>
              <?php include("headerEn.php"); ?>
               <a href="index.php"><?php $language = "en"; ?><img src="images/language/languageNO.png"></a> 
          <?php else: ?>
              <?php include("header.php"); ?>
               <a href="index.php"><?php $language = "no"; ?><img src="images/language/languageEN.png"></a>
          <?php endif; ?> 
          

          这会解决你的问题。

          【讨论】:

            【解决方案6】:

            尝试将此$language 值保存到session 变量。当页面重新加载时检查会话变量是否设置。

            如果设置使用$language

            注意:

            $language = $_GET['language'];
            

            【讨论】:

              【解决方案7】:

              在这种情况下,我尝试使用会话变量来存储和定义语言。在我打开缓存之前,一切都有效。启用缓存后,即使重新加载页面返回相同的语言,用户也无法更改语言。 所以我考虑在点击语言按钮(国旗)后使用 AJAX 请求更改语言

              【讨论】:

                猜你喜欢
                • 2017-11-04
                • 1970-01-01
                • 2017-07-23
                • 1970-01-01
                • 2023-03-22
                • 2021-03-26
                • 1970-01-01
                • 2015-06-20
                • 1970-01-01
                相关资源
                最近更新 更多