Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/05/2014, 05:46
Avatar de AlejandroGalvez
AlejandroGalvez
 
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años
Puntos: 49
Respuesta: Dudas con web miltilingual

WPML es buen plugin, de los mejores para traducción bajo mi punto de vista. Como está bien documentado y tiene buen soporte deberías hacer uso de él.

Para tu problema de single.php iremos por partes:

1- ¿Necesitas solo cambiar textos específicos de la plantilla (escritos en bruto) en función del idioma? En ese caso no necesitas crear varios single.php por cada idioma, lo que necesitas es utilizar la función __() (o cualquiera de sus variantes) para mostrar los textos de la plantilla:

http://codex.wordpress.org/Translating_WordPress

2- Si lo que necesitas es cambiar la plantilla (estructura, estilo...) en función del idioma seleccionado deberás hacerlo con condicionales tal y como sugieres (o con switch). Para ello debes leer la documentación de WPML y descubrir como saber el idioma actual seleccionado por el usuario:

http://wpml.org/documentation/support/wpml-coding-api/

En la documentación especifica que WPML genera una constante llamada ICL_LANGUAGE_CODE que guarda el código del país. Ya tienes como montar tus IF:

Código PHP:
Ver original
  1. if( ICL_LANGUAGE_CODE == 'fr' ) {
  2.    
  3.     //código a mostrar si se ha seleccionado como idioma el FRANCÉS.
  4.    
  5. }

Puedes crear todo tu código PHP en el archivo single.php pero probablemente te será más cómodo seccionarlo en distintos archivos como piezas de un puzzle y llamarlos desde single.php con la función get_template_part():

https://codex.wordpress.org/Function..._template_part

Un ejemplo sencillito de un posible single.php:

Código PHP:
Ver original
  1. <article id="post-<?php the_ID(); ?>" <?php post_class(); ?> >
  2.  
  3.     <?php if ( ICL_LANGUAGE_CODE == 'fr' ) : // Si el francés es el idioma actual mostraremos una plantilla específica ?>
  4.    
  5.         <?php get_template_part( 'content', 'frances' ); ?>
  6.        
  7.     <?php else: // Si no está seleccionado como idioma el francés, mostrará la plantilla genérica ?>
  8.        
  9.         <?php get_template_part( 'content', 'estandar' ); ?>
  10.    
  11.     <?php endif; ?>
  12.  
  13. </article>