2012-10-11 29 views
0

假設我有一個數組。關於wordpress中的gettext和i18n函數的一些說明(或關於它的重要的drupal)

$less_user_variables = array(
    "bodyBackground" => array( 
     "value" => "#ffffff", 
     "description" => __("Body background", AI1EC_PLUGIN_NAME), 
     "tab" => "general", 
     "type" => "color", 
    ), 

我需要國際說明。所以我把它換成__()電話。所以當我創建.pot文件時,「Body Background」包含在內。現在,讓我們說,我的數組保存到數據庫,後來檢索

$less_variables = get_option('less_variables'); 

我可以使用_ ()再次在描述tranlsate呢?我認爲,在運行時的所有_()的作用是其實檢查它獲得的變量的翻譯,爲此

$description = __($less_variables["bodyBackground"]["description"], AI1EC_PLUGIN_NAME); 

應該給我「主體背景」的翻譯,對嗎?那__()不能與變量使用的規則是隻爲創建.pot文件,但在運行時它會與變量一起工作,對嗎? 或者我應該每次使用$ less_user_variables原始數組?

還有一件事,(我認爲)支持我的想法是,

function __($text, $domain = 'default') { 
    return translate($text, $domain); 
} 

所以,如果我傳遞一個變量或字符串,實際上沒有什麼變化。我對麼?

回答

0

實際上,在您的示例中,$ less_user_variables ['bodyBackground'] ['description']變量包含翻譯的文本。所以當你保存數組時,你實際上保存了翻譯後的值,所以對於訪問翻譯後的文本,你只需要檢查$ less_variables ['bodyBackground'] ['description']

__()函數非常簡單可以看到 - 你放在那裏串並收到翻譯的字符串

+0

是的,你是對的。但是如果網站有能力切換語言,這將會中斷。所以我不能保存描述,但總是使用原來的$ less_user_variables –

0

在這種情況下,我會做這個(後鍋文件生成):

$less_user_variables = array(
    "bodyBackground" => array( 
     "value" => "#ffffff", 
     "_description" => 'Body background', 
     "tab" => "general", 
     "type" => "color", 
    ), 

只是可以肯定的是_description包含良好的字符串。

而經過:

$less_variables = get_option('less_variables'); 
$less_variables['bodyBackground']['description'] = __($less_variables['bodyBackground']['_description'], AI1EC_PLUGIN_NAME);