2012-07-16 42 views
0

在我創建的網站中我想包含幾種語言。如何在PHP網站中包含不同的語言?

下面是我如何識別應顯示哪種語言。

<?php 
    $pagename = $_SERVER["REQUEST_URI"]; 
     if (strpos($pagename,'?en') !== false) 
     { 
      echo 'english'; 
here is when I have to include a language template file for english language. 
     } 
    ?> 

我的目標是包含語言模板文件,而不是複製任何語言的所有網站。

所以我想到的是,例如在index.php這個變量對於所有的語言都是一樣的,但內容會改變。

<div id="main"> 
<?php echo $main_description; ?> 
</div> 

我應該如何包含一個語言文件才能正常工作?

$main_description ="this is the main description written in english" 
+4

你有沒有嘗試過使用'php本地化'的東西? – ametren 2012-07-16 14:07:04

+3

看看'Gettext':http://php.net/manual/en/book.gettext.php – 2012-07-16 14:08:21

+0

我對PHP/GNU gettext有很好的體驗(http://php.net/manual/en/書。gettext.php) – Arcadien 2012-07-16 14:08:24

回答

1

您可以使用類似於if語句的東西,並將所有變量包含在特定文件中。

switch ($_GET['lang']) { 
    case "en": 
     include "lang/en.php"; 
     break; 
    case "es": 
     include "lang/es.php"; 
     break; 
    default: 
     include "lang/en.php"; 
} 

但在這裏,您的所有字符串的將是一個變量,你必須要小心,不要使用/在你的代碼的其餘部分覆蓋這些變量。

This page提供了一個非常簡單和易於遵循的示例,如何執行腳本加載的JSON編碼語言文件,並找到您想要的文本並返回翻譯的文本。

+0

謝謝你。我想現在我會使用這個解決方案,但是我得到這個錯誤:'解析錯誤:語法錯誤,意外的T_BREAK' – EnexoOnoma 2012-07-16 14:15:48

+0

啊是的,默認情況下沒有break語句。這些行也應以分號結尾。我的壞,修復。 – sachleen 2012-07-16 14:43:54

1

我會推薦使用一個支持國際化的框架,如果你在開發過程中還遠沒有。

例如,笨有Language Class

或者您也可以實現類似的東西他們。

0

不要做它瓦特/文件,做一個數據庫,如:

id    | en    | de    | es 
--------------------------------------------------------------------- 
MAIN_DESCRIPTION | English desc .. | German desc .. | Spanish desc .. 
MENU_1   | English des2 .. | German des2 .. | Spanish des2 .. 

當你得到正確的代碼,只需加載右表

if (strpos($pagename, '?en') !== false) { 
    $lang_code = 'en'; 
} elseif (strpos($pagename, '?de') !== false) { 
    $lang_code = 'de'; 
... 
} 

$query = "SELECT " . $lang_code . " FROM texts WHERE id = MAIN_DESCRIPTION"; 

等等

PS:不要直接在查詢中插入一個變量,這將導致不良的query injection嘗試。

1

您可能需要爲每個模板編寫不同的語言,只需包含該文件而不是英文文件。

如果我能推薦,你有沒有試過這個爲你的網站? https://translate.google.com/manager/

可能使您的工作變得更容易。