Как разрешить строки должны иметь переводимый контент в WordPress?

Я пытаюсь исправить проблему с линтингом, вот код.

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

Решение

Это потому что у вас есть %s как текст внутри вызова функции перевода __(...), который не переводится.

Вместо этого у вас должен быть вызов printf () внутри вызов перевода, так что переводчик может видеть, какого черта вы пытаетесь перевести.

Но, Вы не должны пытаться перевести дату таким образом. Это не сработает, потому что дата всегда меняется и способ __() перевод работает путем сопоставления точной строки, переданной переводу. В соответствии с этот ответ, ты должен использовать date_i18n

А также Зачем Вы пытаетесь перевести строки форматирования даты, которые вы передаете get_the_dateэто кодовые значения, используемые php, они не меняются в зависимости от того, где вы находитесь. Перевод их может только вызвать проблемы.

Вы также звоните esc_html дважды по линии 193.

Так, вместо этого вы должны написать свои строки кода следующим образом:

Строка № 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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]