Hasta ahora he estado manejando algunas traducciones en Wordpress e intenté leer la documentación oficial de gettext pero no entiendo el punto de una cosa quizás simple: ¿cuáles son las diferencias entre esos inicios como __ (, _e (, etc.? E incluso más: ¿qué otros hay al lado? Gracias de antemano!
Franco
localization
Circuito de circo
fuente
fuente
Respuestas:
__
(subrayado doble) es la función de traducción base. Traduce una cadena y la devuelve como una cadena._e
hace lo mismo que__
, pero echo es el resultado de inmediato._x
es la función de traducción contextual. Tiene una segunda opción para proporcionar contexto a las personas que realizan la traducción._ex
es lo mismo que_x
, pero echo es el resultado.Ejemplo de uso
_x
:A veces, la misma cadena puede ser diferente en otros idiomas. Proporcionar contexto a los traductores puede ayudarlos a elegir las palabras correctas.
Funciones de acceso directo:
esc_attr__
: Equivalente__
pero también ejecuta el resultadoesc_attr
.esc_html__
: Equivalente__
pero también ejecuta el resultadoesc_html
.esc_attr_e
: Equivalente_e
pero también ejecuta el resultadoesc_attr
.esc_html_e
: Equivalente_e
pero también ejecuta el resultadoesc_html
.esc_attr_x
: Equivalente_x
pero también ejecuta el resultadoesc_attr
.esc_html_x
: Equivalente_x
pero también ejecuta el resultadoesc_html
._n
es el manejador de pluralización. Ejemplo:En ese ejemplo, hay dos formas de decir la cantidad de tacos, dependiendo de si es singular o no. El primer uso de $ number le dice a la
_n
función qué versión usar. El segundo uso de $ number ocurre en el sprintf, para reemplazar el% d con el número real en la cadena.No hay una función de eco equivalente para
_n
, pero hay una función llamada_nx
. Es una combinación de_n
y_x
. Pluralización y contexto._n_noop
Es especial. Se usa para traducir cadenas pluralizadas, pero en realidad no realiza la traducción de inmediato. Esto es útil si desea centralizar las cadenas pero realmente hace el trabajo en otro lugar. La función que realmente hace el trabajo en otro lugar estranslate_nooped_plural
.Ejemplo:
Esto no se usa mucho, pero puede ser útil para la organización. Si coloca todas sus cadenas en un archivo, por ejemplo, luego las referencia en otro lugar, esto no sería posible con solo
_n
, necesita algo como_n_noop
hacer eso._nx_noop
es igual que_n_noop
, pero también puede tomar un contexto para los traductores, igual que_x
.Tenga en cuenta que puede colocar el dominio en la llamada a la función noop o en la llamada a la función translate_nooped_plural. Lo que tenga más sentido para su organización. Si ambos tienen un dominio, entonces el que pasó a la llamada noop gana.
number_format_i18n
es el equivalente a la de PHP integrado en Number_format , pero añade en el manejo de cosas como decimales y así sucesivamente, que son diferentes en otros lugares.date_i18n
es el equivalente a la fecha incorporada de PHP , con todo el manejo pertinente allí también. Nombres de mes, nombres de día, etc.Además, nunca infrinjas las leyes . Simplemente un recordatorio. :)
fuente
__ (), _e () y _x (), _ex ()
__()
y_e()
son esencialmente un envoltorio detranslate()
(no usar directamente) y casi lo mismo.La diferencia radica en que
__()
devuelve la cadena traducida y la_e()
repite. Ambos necesitan ser alimentados con una cadena como parámetro requerido y generalmente, aunque opcional, también un dominio de texto.Análogamente, hay
_x()
y_ex()
, que le permite especificar un contexto que puede describir dónde aparece la cadena. Si su proyecto incluye más de unas pocas decenas de cadenas traducibles, usar el contexto tiene mucho sentido.Además, tenga en cuenta la existencia de
_n()
y_nx()
para los plurales.Ejemplo de uso común
Parámetros
Todos los parámetros pero
$number
son cadenas. Todos pero$domain
son obligatorios.Mayor flexibilidad con variables y sprintf ()
Si sus cadenas contendrán números o palabras variables, use
sprintf()
:Recursos adicionales
Algunos recursos adicionales para el próximo WordPress I18n Ninja:
fuente
No soy un experto en traducciones, pero la página de WordPress Codex tiene buena documentación y explica la razón para usar cada instancia.
De las páginas del códice:
__()
Se usa cuando el mensaje se pasa como argumento a otra función;
_e()
se usa para escribir el mensaje directamente en la página. Más detalles sobre estas dos funciones:__('message')
Busca en el módulo de localización la traducción de 'mensaje' y pasa la traducción a la declaración de retorno de PHP. Si no se encuentra ninguna traducción para 'mensaje', solo devuelve 'mensaje'.
_e('message')
Busca en el módulo de localización la traducción de 'mensaje' y pasa la traducción a la declaración de eco PHP. Si no se encuentra la traducción para 'mensaje', solo hace eco de 'mensaje'.
Tenga en cuenta que si está internacionalizando un tema o complemento, debe usar a
"Text Domain"
.El marco gettext se encarga de la mayoría de WordPress. Sin embargo, hay algunos lugares en la distribución de WordPress donde no se puede usar gettext:
Enlace a la página del Codex
Información adicional sobre cuándo gettext no funciona
Espero que eso responda a su pregunta, si no, háganoslo saber y tal vez alguien más pueda ayudarlo o yo pueda investigar más.
fuente