2010-02-13 83 views
1

建立多語言網頁的最佳方式(避免修改重複代碼)是什麼? 我知道如何在不修改CSS和Javascript文件的情況下構建多語言網頁。 但我想不出一個整潔的HTML和PHP文件解決方案。因爲如果我有每種語言的HTML或Php文件,我將不得不修改每個語言,例如,如果我添加一個額外的div或其他元素。 我想有這樣的事情:建立多語言網頁的最佳方式(避免修改重複代碼)

<div id="multilingual div"> 
<p><?php echo($multilingual-paragraph); ?></p> 
</div> 

(所以,即使我修改這些元素,我只是做了一次,因爲這是在其他語言的文本將從變量顯示)。

我不知道PHP的,所以我不知道該怎麼告訴PHP根據語言來顯示不同的變量(我認爲這是與IF條件)

這是一個很好的創建多語言網頁的方式還是其他方法?

(所以用這個

回答

2

退房的gettext()功能,你真的不需要爲不同的語言構建不同的文件,但是,你必須努力處理翻譯文件

1

正如你所說,你有PHP和HTML語言文件,一種方法是這樣的:。

$lang = ''; 

switch ($lang_file) 
{ 
    case 'en.php': $lang = 'whatever'; break; 
    case 'fr.php': $lang = 'whatever'; break; 
    // etc 
} 

<div id="multilingual div"> 
<p><?php echo $lang; ?></p> 

// or you may include files 
<p><?php include_once ($lang); ?></p> 
</div> 
2

你可以實現輸出消息的常量解決方案使用APC's cache functions,你可以在緩存中存儲多個消息並加載他們根據你正在查看的網頁(這可能不是一個簡單的解決方案,但你需要知道這個PHP)。

這將允許您使用緩存中每種語言的值來維護一個數組。例如:

apc_constants_define('en',array('welcomeMessage'=>'Welcome!')); 
apc_constants_define('es',array('welcomeMessage'=>'Bienvenidos!')); 
apc_constants_define('de',array('welcomeMessage'=>'Willkommen!')); 

通過AJAX /選擇窗體,您可以允許用戶選擇他們想要查看您的頁面的語言。 這種語言將被存儲在一個會話內:

$_SESSION['language'] = 'en'; 

接下來,在每個頁面的頂部,您應檢查會話(簡單的switch敘述),並從緩存中加載相應的常量。

apc_load_constants($_SESSION['language']); 

那麼你的HTML頁面看起來像這樣:

<h1><?php echo welcomeMessage; ?></h1> 

這是,在我看來,國際化你的網站的最有效的方式,並與易維護的系統中,沒有按」當你想把頁面翻譯成羅馬尼亞語時,你需要深入研究代碼。

+0

我嘗試了以下,但它沒有工作,我認爲我做錯了。 <?php apc_define_constants('en',array('welcomeMessage'=>'Welcome!')); apc_define_constants('es',array('welcomeMessage'=>'Bienvenidos!')); apc_define_constants('de',array('welcomeMessage'=>'Willkommen!「)); $ _SESSION ['language'] ='en'; apc_load_constants($ _ SESSION ['language']); ? >

alexchenco

+0

你首先需要下載APC庫,作爲一個dll文件,並配置你的php.ini文件來加載它。你可以從手冊/梨網站找到可下載的文件。如果你不能在那裏找到它,運行谷歌搜索它,甚至在堆棧溢出。 – Gal

+0

@janoChen作爲一個旁註,我建議你也閱讀APC的文檔,你可能會發現它很有洞察力,因爲它不僅僅是複製和粘貼代碼。 – Gal