Hay un segundo argumento en la función __()
. Debe establecerse en el dominio que está utilizando para su complemento o tema. En los ejemplos a continuación uso 'text_domain'
. Su cadena de dominio debe ser única. No debe coincidir con ninguna otra cadena de dominio. No usar un argumento de dominio de texto por defecto es 'default'
el nombre de dominio de WordPress. Vea el enlace para más detalles.
Siempre use la cadena ( 'text_domain'
). Nunca use una variable, función o constante con la cadena en ella. La mayoría de los programas de traducción (¿todos?) No lo verán sin la cadena allí.
Tu código:
echo __( 'Hello ' . $first . ' you own me money.' );
No incluir variables en la cadena.
Una mejor manera:
echo sprintf( __( 'Hello %s you own me money.', 'text_domain' ), $first );
O simplemente:
printf( __( 'Hello %s you own me money.', 'text_domain' ), $first );
El marcador de posición %s
le dice al traductor humano que una cadena va allí. Use %d
para los números. También hay otros marcadores de posición .
(Esta frase es gramaticalmente incorrecta en inglés. Usa 'Hello %s, you owe me money.'
o 'Hello %s, you own my money.'
según el significado que pretendías).
Tu código:
$html = '<div><p>Top: ' . $t_margin . '</p>' . <p>Bottom: ' . $b_margin . '</p></div>';
No traducir HTML. Es lo mismo en cualquier idioma.
Una mejor manera:
$html = sprintf( '<div><p>%s</p><p>%s</p></div>', __( 'Top: ', 'text_domain' ) . $t_margin, __( 'Bottom: ', 'text_domain' ) . $b_margin );
O divídalo en varias líneas:
$html = sprintf(
'<div><p>%s</p><p>%s</p></div>',
__( 'Top: ', 'text_domain' ) . $t_margin,
__( 'Bottom: ', 'text_domain' ) . $b_margin
);
Si no está claro qué arriba y abajo puede utilizar _x()
para explicar el contexto de estos términos.
Puede encontrar otros casos de traducción aquí: Internacionalización: probablemente lo esté haciendo mal