我试图解决这里的linting问题是代码。
function get_the_breadcrumb() {
if ( ! is_front_page() ) {
// Start the breadcrumb with a link to your homepage.
echo '<div class="o__breadcrumb">';
echo '<a href="';
echo esc_html( get_option( 'home' ) );
echo '"> Home';
echo '</a> <span> ';
echo esc_html( Load::atom( 'icons/breadcrumb_arrow' ) );
echo '</span>';
// Check if the current page is a category, an archive or a single page. If so show the category or archive name.
if ( is_category() || is_single() ) {
the_category( 'title_li=' );
} elseif ( is_archive() || is_single() ) {
if ( is_day() ) {
/* translators: %s: text term */
printf( esc_html( __( '%s', 'text_domain' ) ), esc_html( get_the_date() ) );
} elseif ( is_month() ) {
/* translators: %s: text term */
printf( esc_html( __( '%s', 'text_domain' ) ), get_the_date( _x( 'F Y', 'monthly archives date format', 'text_domain' ) ) );
} elseif ( is_year() ) {
/* translators: %s: text term */
printf( esc_html( __( '%s', 'text_domain' ) ), get_the_date( _x( 'Y', 'yearly archives date format', 'text_domain' ) ) );
} else {
esc_attr_e( 'Blog Archives', 'text_domain' );
}
}
// If the current page is a single post, show its title with the separator.
if ( is_single() ) {
echo '<span>';
echo esc_html( Load::atom( 'icons/breadcrumb_arrow' ) );
echo '</span>';
the_title();
}
// If the current page is a static page, show its title.
if ( is_page() ) {
echo the_title();
}
// if you have a static page assigned to be you posts list page. It will find the title of the static page and display it. i.e Home >> Blog.
if ( is_home() ) {
global $post;
$page_for_posts_id = get_option( 'page_for_posts' );
if ( $page_for_posts_id ) {
$post = get_page( $page_for_posts_id );
setup_postdata( $post );
the_title();
rewind_posts();
}
}
echo '</div>';
}
}
Linting回复
FOUND 3 ERRORS AFFECTING 3 LINES
----------------------------------------------------------------------
193 | ERROR | Strings should have translatable content
196 | ERROR | Strings should have translatable content
199 | ERROR | Strings should have translatable content
第193行
printf( esc_html( __( '%s', 'text_domain' ) ), esc_html( get_the_date() ) );
第196行
printf( esc_html( __( '%s', 'text_domain' ) ), get_the_date( _x( 'F Y', 'monthly archives date format', 'text_domain' ) ) );
第199行
printf( esc_html( __( '%s', 'text_domain' ) ), get_the_date( _x( 'Y', 'yearly archives date format', 'text_domain' ) ) );
答案 0 :(得分:0)
这是因为你有%s
作为翻译函数调用__(...)
内的文本,这是不可翻译的。
相反,您应该在翻译调用中使用printf()调用 ,这样翻译人员实际上可以看到您尝试翻译的内容。
但是,你不应该试图以这种方式翻译日期。它不起作用,因为日期总是在变化,__()
翻译的工作方式是将传入的确切字符串与翻译相匹配。根据{{3}},您应该使用date_i18n
为什么你试图将你传递的日期格式化字符串翻译为get_the_date
,这些是php使用的代码值,它们不会根据你的位置而改变。翻译这些只会导致你的问题。
您还可以在第193行拨打esc_html
两次。
所以,相反,您应该像这样编写代码行:
第193行
esc_html( date_i18n( get_the_date() ) );
第196行
esc_html( date_i18n( get_the_date('F Y') ) );
第199行
esc_html( date_i18n( get_the_date( 'Y' ) ) );
注意,我认为esc_html
调用实际上并不是必需的,因为内部只是返回日期的WordPress函数......没有html应该在那里< / p>