2011-05-05 66 views
0

嗨,我需要幫助翻譯代碼在PHP中。我的網站將是英文和馬來文。所以我必須在每個頁面中準備翻譯代碼。像這樣需要幫助數組中的翻譯代碼

<?php __('Business/Company Registration No :');?> 

它這樣工作。所以在生成頁面後在default.po中翻譯如下。所以第二行是翻譯後的單詞。

msgid "Business/Company Registration No " 
msgstr "Nombor Pendaftaran Perniagaan/Syarikat" 

這是我的數組中的代碼。所以我需要把代碼

<?php __('WORD')?> 
在這裏

$salutation = array(
    'Mr'=>'Mr', 
    'Mrs'=>'Mrs', 
    'Ms'=>'Ms'); 

如果我把翻譯的代碼,如下

$salutation = array(
'Mr'=>__('Mr'), 
'Mrs'=>__('Mrs'), 
'Ms'=>__('Ms'); 

在頁面中選擇列表是行不通了如果有人可以幫忙?翻譯代碼應該放在哪裏?

+0

你需要有更具體的瞭解你正在嘗試做的或提供有關您嘗試使用的軟件的更多詳細信息。 – 2011-05-05 04:15:54

+0

以這種方式將名稱與名字分開是一種肯定的方式,以使其錯誤。 – 2011-05-05 04:18:07

+0

我已經更新了這個問題。 – syida 2011-05-05 04:30:34

回答

2

問題是,你的__函數回聲字符串,而不是返回它。 這裏有一個解決方法

function ___($key){ //Note, 3 underscores 
    ob_start(); //Start output buffering. Every echo will be 'trapped' and saved to the buffer 
    __($key); //This echoes the translation to the buffer 
    return ob_get_clean(); //Returns the 'trapped' echoes from the buffer 
} 

所以您應該在陣列中使用新的___功能(3個下劃線):

$salutation = array(
    'Mr'=>___('Mr'), //Note, there are 3 underscores 
    'Mrs'=>___('Mrs'), 
    'Ms'=>___('Ms'); 
); 

我們做了什麼,是創建一個___(3個下劃線)的函數,返回而不是回顯它(如__一樣),因此您可以在陣列或任何地方使用它。

希望這有助於。乾杯

+0

沒有工作。 *臉掌*。我會盡力 – syida 2011-05-10 02:25:59

2

我有這個問題,我找到了解決辦法是換陣列功能,然後關閉該功能前寫:

return apply_filters(function, array);