2011-09-19 15 views
-1

我對語言的功能(像Wordpress和其他CMSes具有系統)語言方面的功能,retun中定義的語言的一個術語作爲如何界定在PHP

function lang($term) { 
include "language/cn.php"; 
if(!empty($tans[$term])) {$translatedterm=$tans[$term];} 
else { $translated = $term;} 
return $translated; 
} 

的問題是,我想要提供在菜單上選擇語言的選項,因爲人們可以改變語言。爲此,我需要爲每種語言更新「include'language/cn.php'」的值。它應該是include "language/$language.php";,但$language是一個來自菜單選擇的字符串,並且在該函數之外。你有任何想法如何改變功能內的語言文件取決於選擇的語言?

+0

沒有「菜單選擇」PHP語句。你能確定這個可變的來源嗎? –

+0

我的意思是從網站菜單中選擇一個值(不是php) – Googlebot

+0

仍然沒有意義。沒有「網站菜單」PHP語句 –

回答

0

據亞歷克斯Howansky給出的暗示,最終的解決辦法是使用PHP變量像_SEESION $,$ _GET,$ _ POST等等。這些變量可以在一個函數內使用。但是,由於函數有其自己的作用域,函數外部的靜態字符串無法在函數內讀取。

0

你這樣做:

include 'language/$language.php'; 

這不會起作用,因爲PHP只解析字符串中的變量當用戶用雙引號。正如你已經知道的那樣,它只會按照你指定的那樣取得字符串,而不用轉換變量名。

您可以採取的變量在字符串之外,像這樣:

include 'language/' . $language.php; 

,或者使用雙引號爲您的字符串,像這樣:

include "language/{$language}.php"; 

(大括號周圍變量名在這種情況下是可選的,但推薦)

這兩個都會導致$language在包含文件之前轉換爲所需的值。

希望有所幫助。

+0

這是編寫代碼時的錯字。問題是,PHP不會在函數中引入字符串。 – Googlebot

+0

啊對。那麼在這種情況下,要麼通過它,要麼使用全局的(請參閱PHP手冊中的['$ GLOBALS'](http://php.net/manual/en/reserved.variables.globals.php)) – Spudley

1

在處理該語言選擇形式的代碼,你可以存儲所選擇的語言會話:

$allowed_languages = array('en', ...); 
if (array_key_exists($_POST['language'], $allowed_languages)) { 
    $_SESSION['language'] = $_POST['language']; 
} 

然後,在此功能,從會話拉的語言,如果它是可用的:

function lang($term) { 
    $language = isset($_SESSION['language']) ? $_SESSION['language'] : 'en'; 
    require_once 'language/' . $langauge . '.php'; 
    // ... 
} 
+0

downvote? –

+0

這是一個很好的觀點! $ _SESSION可以在函數的範圍內使用。這應該是一個微妙的解決方案。 – Googlebot

+0

使用_SESSION也解決了從頁面到頁面持續使用用戶選擇的$語言值的問題。 –

-1

你打算爲每個術語包括翻譯文件嗎?

加載你的翻譯文件一次安全

function lang($term) { 
    static $trans; 
    if (!$trans) { 
    global $language; // seems the problem as silly as this 
    $langfile = "language/".basename($language).".php"; 
    if (!is_readable($langfile)) { 
     $langfile = "language/default.php"; 
    } 
    include $langfile; 
    } 

    return (empty($trans[$term]))?$term:$trans[$term]; 
} 
+0

鼓勵使用'全球'變量值得downvote imo – cspray

+0

ahahaha,另一個有趣的正統與他的迷信:) –