PHPCS:字符串应该有可翻译的内容

时间:2018-02-24 作者:Anwer AR

我正在验证插件以使其与兼容WPCS. 包含以下内容的函数gettext 运行时占位符返回错误phpcs 命令附上源代码和错误截图以供参考。也许我错过了什么,或者我做错了什么?

/**
 * Add Error.
 *
 * @package Mypackage
 * @since 0.1.0
 *
 * @param string $code Error Code.
 * @param string $message Error Message.
 * @return object WP_Error Returns Error Object.
 */
function mypackage_add_error( $code, $message ) {

    /* translators: %s: Error Message */
    return new WP_Error( $code, sprintf( esc_html__( \'%s\', \'mypackage\' ), $message ) );
}
Screenshot of Error.enter image description here

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

您的代码有几处错误

那里不需要翻译。在将消息传递给该函数之前,应该先对其进行翻译。在这个功能中,实际上根本没有上下文来创建任何不同的翻译%s

应在输出端进行转义。您应该避开sprintf 还有翻译。

请记住,WPC是帮助你的工具,而不是圣经。至少在目前的阶段,它缺少太多的功能,不能一直盲目地跟随它。它现在发出的一些错误是由于对现代PHP的错误解析或缺少功能造成的,因此如果您百分之百确定在您的特定情况下%s 应该是可翻译的,随它去吧。

SO网友:obiPlabon

您正在尝试翻译占位符%s 它不是可翻译的内容,稍后将替换为变量。最好通过考试$message 而不是可翻译的$message.

您应该这样编写函数定义

function mypackage_add_error( $code, $message ) {
    return new WP_Error( $code, $message );
}
以及功能mypackage_add_error() 应该这样使用

mypackage_add_error( \'test-error\', esc_html__( \'Test error message\', \'text-domain\' ) );

结束

相关推荐

我应该在index.php中使用模板文件还是只使用条件标记?

使用模板文件,我正在构建一个模板之间几乎没有差异的主题。现在我差不多是这样设置的:singular.php - 单页/帖子;完整的帖子内容、评论home.php - 博客页面;帖子内容完整,无评论index.php - 其他一切;带条件标记的帖子摘要看着这个设置,我意识到我可以这样做:<?php get_header(); ?> <div id="main-column"> <?php if ( have_posts()