2013-02-25 68 views
4

在PHP中,我想在點擊按鈕時更改網站的語言(英語,德語等)。這是解決這個問題的正確方法嗎?使用html按鈕更改網站的語言版本

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

什麼是最好的方式來改變網站的語言,並保持當用戶返回?

回答

6

您可以通過

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

根據像

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"); 
} ?> 
+1

我認爲else部分應該是'else if(empty($ _ COOKIE ['language']))',以避免在cookie(而不是請求)包含所選語言時將語言重置爲'nl'。 – 2015-12-21 00:44:16

0

嘗試餅乾做到這一點,得到了語言並將其存儲在cookie,幷包含文件將此$language值保存到會話變量。當頁面重新載入時,檢查是否設置了會話變量。

如果設置使用該$language

注:

$language = $_GET['language']; 
0

你不能在PHP的HTML改變一個變量。 PHP是服務器端HTML客戶端

您可以使用GET variables來更改它。這是最簡單的方法。

1

要給出一個解決方案而不改變你的方法,你可以這樣做。

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

如果你想保留的選擇,你可以在這個值數據庫或會話存儲。

2

有一個默認值總是很好,所以你永遠不會在沒有語言的網站。

$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

您可以實現這樣相同的代碼。我編輯了你的代碼。

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

這將解決您的問題。