从技术上讲,这是非常不鼓励的,因为这是一种不友好和不可预测的性质,你可以这样做:
<?php _e( $data[\'hair\'][\'type\'] ); ?>
但是,您需要在中列出所有可能的值(“棕色头发”、“金色头发”等)。POT文件(翻译模板),以便翻译人员知道要翻译什么。您需要控制创建JSON数据的内容,或者熟悉JSON数据的输出内容,否则就走不远了。
这个__()
类似的函数取一个字符串,在提供的翻译文件中查找(通常传递一个“textdomain”名称,以便它知道要使用哪个名称),然后返回找到的匹配翻译字符串,否则返回原始字符串。
当人们说这些函数“使内容可翻译”时,他们的意思是,它将文本标识为可翻译的文本,供人类或机器人通过代码查找和组装。POT文件,然后将其提供给翻译人员,以使用其语言制作完整的版本。
Addendum (hit submit too soon):
这就是为什么不向这些函数传递变量;搜索代码的人或机器人不会知道需要翻译的实际文本是什么。
您可以选择自己在POT文件中写入这些条目,如下所示:
msgid "Brown hair"
msgstr ""
msgid "Blond hair"
msgstr ""
或者在代码中定义如下值:
$hair_types = array(
\'Brown hair\' => __( \'Brown hair\' ),
\'Blond hair\' => __( \'Blond hair\' ),
);
然后参照如下:
<?php echo $hair_types[ $data[\'hair\'][\'type\'] ]; ?>
希望您得到的JSON不会添加曲线球,如“棕红色金黄色头发”和其他您不知道的值。
基本上,如果您无法控制生成文本的内容,您将无法(也不希望)对其进行本地化。