簡體   English   中英

根據選擇的選項需要不同的php文件

[英]Require different php files depending on a selected option

我是php的新手,當時我正在考慮通過要求一個文件包含取決於所選語言的變量來更改網站上的語言。

目前,它只有2種語言,但還會更多。 帶英文塊的變量存儲在content.php文件中,而帶俄語的變量存儲在ru.php中。

這是我的HTML表單:

 <div id="language"> <form method="post" action="lang.php" onchange="this.form.submit()"> <select name="language"> <option value="en">en</option> <option value="ru">ru</option> </select> </form> </div> 

這是我嘗試使用的PHP(但未成功):

 $option = $_POST['language']; if ($option == 'ru') { require('ru.php'); } if ($option =='en') { require('content.php'); } 

如果您知道我該如何運作,請告訴我。

為了在整個網站上保持用戶的語言選擇的持久性,並在一段時間內存儲他們的偏好,您有3個主要選項:

  1. 餅干
  2. $ _SESSION變量
  3. 數據庫查詢

由於各種原因,我喜歡$ _SESSIONs。 在此處了解有關會話的更多信息

在每個頁面的頂部都需要以下PHP(我們將其稱為requires.php )。 它可能看起來像這樣:


requires.php

$timeout = 60*60*3; // 3 hour maximum session timeout
session_start([
    'name'            => 'my_groovy_session',
    'gc_maxlifetime'  => $timeout, // server session lifetime
    'cookie_lifetime' => $timeout, // client cookie lifetime
    ]);

// set language if empty
if (empty($_SESSION['lang'])) $_SESSION['lang'] = 'en';

// choose file
if (is_file('languages/'. $_SESSION['lang'] .'.php')) {
    require_once 'languages/'. $_SESSION['lang'] .'.php';
} else {
    require_once 'languages/en.php';
}

您的lang.php就是這樣的:

lang.php

$_SESSION['lang'] = $_POST['language'];

此方法將所有翻譯添加到同一目錄中。 他們可能看起來像這樣:

en.php

$words = [
    'welcome' => 'Welcome to so-and-so',
    'email'   => 'Please email us at blah@blah.com',
    'close'   => 'Close',
];

ru.php

$words = [
    'welcome' => 'Добро пожаловать в такое-то',
    'email'   => 'Пожалуйста, напишите нам на blah@blah.com',
    'close'   => 'Закрыть',
];

然后在使用requires.php任何PHP文件中,您都可以用用戶首選的語言輸出單詞:

echo $words['welcome'];

只要確保不翻譯數組keys本身(歡迎,電子郵件,關閉)。


注意:以上對數組使用短數組語法[] 如果您使用的PHP版本低於5.4,則需要使用array()

下面的代碼結構可以正常工作。 您可以添加所需的文件以使其正常運行。

form.html

我已經更改了onchange="this.form.submit()"

<div id="language">
  <form method="post" action="lang.php" >
    <select name="language" onchange="this.form.submit()">
    <option value="en">en</option>
    <option value="ru">ru</option>
    </select>
  </form>
</div>

lang.php

<!DOCTYPE html>
<html>
<body>

<?php
$option = $_POST['language'];

if ($option == 'ru')
  {
    require('ru.php');
    echo($word);                 
  }

if ($option =='en')
  {
    require('en.php');
    echo($word); 
  }
?>

</body>
</html>

en.php

<!DOCTYPE html>
<html>
<body>

<?php
$word = "i am english";
?>

</body>
</html>

ru.php

<!DOCTYPE html>
<html>
<body>

<?php
$word = "i am russian";
?>

</body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM