如何解决无参数、缺少文本域的翻译函数问题?

时间:2016-02-25 作者:Knott

我通过WordPress Themecheck插件警告:发现一个缺少文本域的翻译函数。函数esc\\u html\\uuuuu,带有参数

正如你所看到的,上面没有列出任何论据,我真的很迷茫。

下面是代码函数:

<?php 

    wp_nonce_field( basename( __FILE__ ), \'matilda_featured_image_nonce\' );

    $selected = esc_html__( get_post_meta( $object->ID, \'matilda_featured_image\', true ) );

?>
我的文本域是“matilda”

谢谢你的建议。

2 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

看来应该打电话esc_html 而不是esc_html__. 我觉得你根本不需要逃到那里。

SO网友:fischi

如果要将textdomain添加到esc_html__() 函数,按如下方式执行:

$selected = esc_html__( get_post_meta( $object->ID, \'matilda_featured_image\', true ), \'matilda\' );
到目前为止还不错,但这是一个复杂的问题,因为要将变量传递给转换函数。

请确保此字段具有有限的可能数据集,并将这些字符串放在主题中的某个位置。例如,如果您有<select> 在metabox中,您可以这样做:

<select name="matilda_featured_image">
    <option value="<?php _e( \'valueone\', \'matilda\' ); ?>"><?php _e( \'valueone\', \'matilda\' ); ?></option>
    <option value="<?php _e( \'valuetwo\', \'matilda\' ); ?>"><?php _e( \'valuetwo\', \'matilda\' ); ?></option>
</select>
这样可以确保在翻译中注册所有可能的值。

正如@MarkKaplen所指出的,在任何情况下,您可能都不需要翻译:)