Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

[Mini-tutorial] Cómo traducir líneas dinámicamente en tu panel de administración

Estas en el tema de [Mini-tutorial] Cómo traducir líneas dinámicamente en tu panel de administración en el foro de WordPress en Foros del Web. En ocasiones -y para mejorar la personalización de nuestro proyecto web- hemos tenido la necesidad de cambiar algunas líneas de traducción del entorno administrativo. La ...
  #1 (permalink)  
Antiguo 30/05/2012, 15:21
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
[Mini-tutorial] Cómo traducir líneas dinámicamente en tu panel de administración

En ocasiones -y para mejorar la personalización de nuestro proyecto web- hemos tenido la necesidad de cambiar algunas líneas de traducción del entorno administrativo. La mayoría de los desarrolladores trabajan esa parte de forma estática (o modificando constantemente el archivo *.po principal, o agregando uno alterno). Lo que algunos ignoramos es que existe un método dinámico para cumplir esta tarea.


Caso 1: Traducir una línea

Pega este código en tu functions.php, guárdalo y mira el resultado en tu panel de edición (campo del título del post):

Código PHP:
Ver original
  1. add_filter( 'gettext', 'cambiar_traducciones', 10, 4 );
  2.  
  3. function cambiar_traducciones( $trad , $texto , $dom ) {
  4.  
  5. $traduccion = &get_translations_for_domain( $dom );
  6.  
  7. if ( $texto == 'Enter title here' )
  8.     return $traduccion->translate( 'Nombre del producto' );
  9.  
  10. return $trad;
  11. }
Ta güeno vedá!!... Sin embargo lo más probable es que deseemos cambiar varias líneas en lugar de una sola.


Caso 2: traducir varias líneas de una vez

Simplemente ordenaremos 'original' => 'personalizado' mediante un array y permitimos que un loop lo procese de esta manera:

Código PHP:
Ver original
  1. function cambiar_traducciones( $trad , $texto , $dom ) {
  2.  
  3. $traduccion = &get_translations_for_domain( $dom );
  4.  
  5.     $txt = array(
  6.         'Enter title here' => 'Nombre del producto',
  7.         'Featured Image'   => 'Foto del producto'
  8.     );
  9.     foreach($txt as $k => $v)
  10.         if ( $texto == $k )
  11.             return $traduccion->translate( $v );
  12.  
  13. return $trad;
  14. }
Hemos modificado tanto el campo del título como el módulo de imagen destacada. En el array $txt puedes agregar tantas líneas necesites. Es importante mencionar que las líneas originales deben corresponder a las que están escritas en los archivos, es decir, del idioma inglés. Igualmente deben escribirse tal cual se encuentran, incluyendo mayúsculas/minúsculas. Ahora vamos con un ejemplo un poquitín más exigente pero igualmente necesario en algunos casos.


Caso 3. Sólo traducir en determinado tipo de post

Supongamos que tenemos un postype identificado como 'productos' y queremos alterar la traducción sólo en éste, dejando post, pages y otros en paz. Usaremos la misma función anterior y agregaremos la condicional pertinente:

Código PHP:
Ver original
  1. function cambiar_traducciones( $trad , $texto , $dom ) {
  2. global $typenow;
  3.  
  4. $traduccion = &get_translations_for_domain( $dom );
  5.  
  6. if ( $typenow == 'productos' ) {
  7.     $txt = array(
  8.         'Enter title here'   => 'Nombre del producto',
  9.         'Set featured image' => 'Agregar foto del producto',
  10.         'Featured Image'     => 'Foto del producto'
  11.     );
  12.     foreach($txt as $k => $v)
  13.         if ( $texto == $k )
  14.             return $traduccion->translate( $v );
  15. } else
  16.     return $traduccion->translate( $texto );
  17.  
  18. return $trad;
  19. }
Otro punto importante es que la función sólo actúa sobre las traducciones originales del núcleo de WordPress.

Hasta aquí el mini-tuto (por eso lo de mini). Espero te sirva en más de una ocasión.
  #2 (permalink)  
Antiguo 31/05/2012, 07:24
elmajaron
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [Mini-tutorial] Cómo traducir líneas dinámicamente en tu panel de administ

Excelente, muy util, gracias por compartirlo. un saludo
  #3 (permalink)  
Antiguo 01/06/2012, 09:12
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 20 años, 6 meses
Puntos: 832
Respuesta: [Mini-tutorial] Cómo traducir líneas dinámicamente en tu panel de administ

Gracias viejo.
  #4 (permalink)  
Antiguo 01/06/2012, 10:32
Avatar de zanguanga
Moderadora
 
Fecha de Ingreso: julio-2009
Ubicación: España
Mensajes: 1.686
Antigüedad: 15 años, 5 meses
Puntos: 429
Respuesta: [Mini-tutorial] Cómo traducir líneas dinámicamente en tu panel de administ

Solicito que se incluya en el hilo de Trucos y tips, para que no se pierda en el fondo del mar.
__________________
Mi blog personal | Mi G+

Etiquetas: gettext, traduccion, traducir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 4 personas




La zona horaria es GMT -6. Ahora son las 20:20.