Change language of site with a html button

2020-05-20 03:15发布

In PHP, I want to change the language (English, German, etc) of the site when clicking a button. Is this the right way to approach that problem?

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

What is the best way to change the language of the site and have it persist when the user returns?

6条回答
Lonely孤独者°
2楼-- · 2020-05-20 03:54

You can implement the same code like this . I have editted your code .

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

this will solve your problem .

查看更多
趁早两清
3楼-- · 2020-05-20 04:07

It is always good to have a default value, so that you never end up being in a no-language site.

$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);
}

And then create links like this:

<a href="index.php?language=en">
<a href="index.php?language=no">
查看更多
甜甜的少女心
4楼-- · 2020-05-20 04:09

You can't change a variable within PHP by html. PHP is serversided HTML is clientsided

You can use GET variables to change it though. It is the easiest way to do it.

查看更多
\"骚年 ilove
5楼-- · 2020-05-20 04:13

To give a solution without changing your approach, You can do like this.

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

If you want to keep the selection, you can store this value in Database or Session.

查看更多
劳资没心,怎么记你
6楼-- · 2020-05-20 04:14

Try to save this $language value to session variable. When the page reloaded check that the session variable is set or not.

If set use that $language

NOTE:

$language = $_GET['language'];
查看更多
时光不老,我们不散
7楼-- · 2020-05-20 04:15

you can do this by

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

and get the languages and store them in cookie and include file according to cookie like

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

and than

if ( $_COOKIE['language'] == "en") {
   include("headerEn.php");
} else {
   include("header.php");
} ?>
查看更多
登录 后发表回答