使用HTML按钮更改网站语言

7

在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>

最佳方式是如何更改站点的语言并在用户返回时保留语言设置?

7个回答

10
你可以通过这样做。
<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");
} ?>

4
我认为 else 部分应该改成 else if (empty($_COOKIE['language'])),以避免在 cookie(而不是请求)包含所选语言时将语言重置为“nl”。 - Roberto Giaccio

3
为了不改变你的方法,你可以像这样做。
<?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">

0

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

但是,你可以使用GET变量来更改它。这是最简单的方法。


0
在这种情况下,我尝试使用Session变量来存储和定义语言。一切都正常工作,直到我启用缓存。当启用缓存时,即使重新加载页面也会返回相同的语言,用户无法更改语言。 因此,我考虑在单击语言按钮(国旗)后使用AJAX请求来更改语言。

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

如果已设置,请使用该$language

注意:

$language = $_GET['language'];

0

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

<?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; ?> 

这将解决你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接