Я видел разные способы сделать текст с переводимой гиперссылкой. Однако я не смог найти ни одной лучшей практики.
Итак, вот некоторые из решений, которые я нашел:
// METHOD 1
sprintf( __( 'Please read %1$sthis%2$s.', 'tacoverdo-example-domain' ), '<a target="_blank" href="' . esc_url( 'https://goo.gl' ) . '">', '</a>' );
// METHOD 2
echo '<a target="_blank" href="' . esc_url( 'https://goo.gl' ) . '">';
_e( 'Please read this.', 'tacoverdo-example-domain' );
echo '</a>';
// METHOD 3
sprintf( __( 'Please read <a href="%s">this</a>.', 'tacoverdo-example-domain' ), esc_url( 'https://goo.gl' ) );
// METHOD 4
sprintf( __( 'Please read %sthis%s.', 'tacoverdo-example-domain' ), '<a target="_blank" href="' . esc_url( 'https://goo.gl' ) . '">', '</a>' );
// METHOD 5
_e( 'Please read <a target="_blank" href="' . esc_url( 'https://goo.gl' ) . '">this</a>', 'tacoverdo-example-domain' );
Моей первой мыслью было бы, что метод 1 будет лучшим. Это не требует, чтобы ваши переводчики знали HTML. Но это также не позволяет тем, кто делает, связываться с этим. Это также довольно СУХОЙ (не повторяйте себя), так как вам не нужно переводить всю HTML-часть снова и снова.
Однако, публикуя этот вопрос в твиттере, люди отвечали, что метод 3 будет лучшим, как вы можете видеть здесь .
Итак, как мне сделать текст с переводом гиперссылки в WordPress?
источник
_x
вместо__
%s
стоит за<strong>
или<a href target="#">
? Влияет ли это на их перевод?Сейчас я работаю со многими мультиязычными сайтами и должен сказать:
__()
но всегдаesc_html__()
/esc_attr__()
. Это означает, что переводимая строка не может содержать HTML любого рода.*_x()
вариант перевода функций.%1$sthis%2$s
нетехническое переводчик не понимает , что какs
раз передthis
необходимо для правильного отображения, а также может думать , что разработчик хочет напечатать ,this
но имел опечатку и написалsthis
.По всем этим причинам «правильно» перевести текст, содержащий ссылки, сложно. Единственное жизнеспособное решение, которое учитывает все сказанное выше:
Который является безопасным и простым для перевода не техничными людьми, но также многословным и PITA для реализации, особенно если это нужно сделать для нескольких ссылок ...
Однако для кода, выпущенного в дикой природе с тысячами (реальных или потенциальных) пользователей, говорящих на многих языках, я бы выбрал именно этот способ.
Это на самом деле так, как я беру даже для кода, предназначенного только для внутреннего использования, но это я.
Примечание :
Может показаться слишком много, чтобы слово «Google» переводилось отдельно, и это, вероятно, верно для этого конкретного случая. Но иногда даже предполагают, что названия брендов неверны. Например, в Италии у нас есть бренд «Algida», который известен под 30 разными именами по всему миру .
В таком случае жесткое кодирование URL и / или названия бренда может вызвать проблемы.
Предоставление контекста для перевода поможет переводчикам решить, нужно ли им переводить название бренда или нет.
источник
Вы должны держать разметку в переводимой строке, потому что переводчики должны знать, что есть ссылка. В некоторых языках результирующий текст ссылки может занимать несколько слов, даже внутри может быть запятая (или эквивалент) или другая разметка, которая должна быть правильно вложена.
Также важно создать текст говорящей ссылки, а не это или здесь .
2 или 3 - единственные переводимые варианты, но вы также должны сделать URL переводимым.
источник