J'ai vu différentes façons de faire un texte avec un lien hypertexte traduisible. Cependant, je n'ai pas pu trouver une seule meilleure pratique.
Voici donc quelques-unes des solutions que j'ai trouvées:
// 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' );
Ma première pensée serait que la méthode 1 serait la meilleure. Il ne nécessite pas que vos traducteurs connaissent le HTML. Mais cela ne permet pas non plus à ceux qui le font de jouer avec. Il est également assez SEC (ne vous répétez pas) car vous n'avez pas à traduire la partie HTML entière encore et encore.
Cependant, lors de la publication de cette question sur Twitter, les gens ont répondu que la méthode 3 serait la meilleure comme vous pouvez le voir ici .
Alors, comment dois-je faire pour traduire un texte avec un lien hypertexte dans WordPress?
la source
_x
au lieu de__
%s
signifie<strong>
ou<a href target="#">
? Cela influence-t-il leur traduction?Ces jours-ci, je travaille avec de nombreux sites Web multilingues et je dois dire:
__()
mais toujoursesc_html__()
/esc_attr__()
. Ce qui signifie que la chaîne à traduire ne peut contenir aucun code HTML.*_x()
variante des fonctions de traduction.%1$sthis%2$s
un traducteur non technique ne comprend pas que les
juste avantthis
est nécessaire pour un rendu correct, et peut également penser que le développeur voulait taperthis
mais avait une faute de frappe et a écritsthis
.Pour toutes ces raisons, la traduction "correcte" du texte contenant des liens est difficile. La seule solution viable qui prend en compte tout ce qui précède est:
Ce qui est sûr et facile à traduire par des personnes non techniques, mais aussi verbeux et un PITA à implémenter, surtout si cela doit être fait pour plusieurs liens ...
Cependant, pour un code publié dans la nature avec des milliers d'utilisateurs (réels ou potentiels) parlant plusieurs langues, c'est la voie que je prendrais.
C'est en fait la façon dont je prends même pour le code à usage interne uniquement, mais c'est moi.
Remarque :
Cela peut sembler trop pour rendre le mot "Google" traduisible séparément, et c'est probablement vrai pour ce cas spécifique. Mais parfois, même supposer que les noms de marque sont faux. Pour ne citer qu'un exemple, en Italie nous avons la marque "Algida" qui est connue avec environ 30 noms différents dans le monde .
Dans ce cas, le codage en dur de l'URL et / ou du nom de la marque entraînera des problèmes.
Fournir un contexte pour la traduction aidera les traducteurs à décider s'ils doivent traduire le nom de la marque ou non.
la source
Vous devez conserver le balisage dans la chaîne traduisible, car les traducteurs doivent savoir qu'il existe un lien. Dans certaines langues, le texte du lien résultant peut s'étendre sur plusieurs mots, il peut même y avoir une virgule (ou un équivalent) à l'intérieur ou un autre balisage qui doit être imbriqué correctement.
Il est également important de créer un texte de lien parlant, pas celui-ci ou ici .
2 ou 3 sont les seules options traduisibles, mais vous devez également rendre l'URL traduisible.
la source