0

假设我有一个数组。

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

我需要 i18n 描述。所以我把它包装成一个__()电话。因此,当我创建 .pot 文件时,包括“身体背景”。现在假设我将数组保存到数据库,然后再检索它

$less_variables = get_option('less_variables');

我可以在描述中再次使用 _ () 来翻译它吗?我认为在运行时所有 _ () 所做的实际上是检查它获得的变量的翻译,因此

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

应该给我“身体背景”的翻译,对吗?__()不能与变量一起使用的规则仅用于创建 .pot 文件,但在运行时它可以与变量一起使用,对吗?还是我应该每次都使用 $less_user_variables 原始数组?

(我认为)支持我想法的另一件事是

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

所以如果我传递一个变量或一个字符串,实际上没有任何变化。我对么?

4

2 回答 2

0

在这种情况下,我会这样做(在生成pot文件之后):

$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);
于 2012-10-11T19:20:02.373 回答
0

实际上在您的示例中, $less_user_variables['bodyBackground']['description'] 变量包含翻译后的文本。所以当你保存数组时,实际上是保存了翻译后的值,所以要访问翻译后的文本,你只需要检查 $less_variables['bodyBackground']['description']

如您所见,__() 函数非常简单 - 您将字符串放在那里并接收翻译后的字符串

于 2012-10-11T17:43:42.050 回答