Inicio > PHP, Wordpress > Solucionar problema cforms II con qTranslate de WordPress

Solucionar problema cforms II con qTranslate de WordPress

Muchos de vosotros habréis  encontrado en el plugin de cforms II un gran plugin para crear nuestros propios formularios. Y seguramente también muchos conocereis qTranslate que es uno de los mejores plugins de idioma. que os permite traducir vuestro blog o página en varios idiomas creando varias entradas por Página o Post y traduciendo los nuevos elementos de la plantilla como ya hablé anteriormente.

El problema que se encuentra la gran mayoría de gente que crea un formulario de cforms II en varios idiomas con el plugin qTranslate es que solo le funciona el primer formulario creado. La verdad es que el error no es este completamente, sino que solamente funciona el que esta en el idioma default. Si tenemos el español por defecto y el ingles como segundo idioma (en) veremos que solo nos funciona en español.

Porque? muy sencillo el atributo <form> de nuestra pagina o entrada lo esta ejecutando con la ruta por defecto action="/contact/#usermessage2a" pero en ingles deberia ser action="en/contact/#usermessage2a".

<form action="/contact/#usermessage2a" enctype="multipart/form-data" method="post">

Para solucionar este problema o bug lo que hay que hacer es introducirle el idioma que toca, para ello nos vamos a la carpeta del plugin cform y abrimos el cforms.php. Si nos situamos sobre la linea 355 veremos que el plugin esta construyendo el formulario y la acción del mismo con la variable $action. A continuación incluiremos el siguiente código:

if(strstr(get_locale(),'en')!="") $action = '/en'.$action;   
// change to fit in your language setting.
$content .= $ntt . '
enctype="multipart/form-data"  action="'
. $action . '" method="post" id="cforms'.$no.'form">' . $nl;

Si tenemos mas idiomas repetiremos la linea primera cambiendo el nombre corto del idioma y se repetira por cada idioma. Si quieres que sea mas automatico puedes crearte tu variable de idioma y así evitas repetir tantos condicionales como idiomas si tu página tiene muchos. (qtrans_getLanguage())
Si tu blog no esta en la raiz del directorio deberás imprementar el siguiente código:

if(strstr(get_locale(),'en')!="") {
   $subdir = '/blog';    // subdirectory name
   $action = '/en'.$action;   // change your language locale name
   if(strstr($action,$subdir)!=""){
    $ary = split('\'.$subdir,$action );
     $action = $subdir.$ary[0].$ary[1];
   }
}
$content .= $ntt . '
' . $nl;

Fuente:blog.knym.net

  1. 22 julio 2011 a las 13:28

    I do not know Spanish, but I just entered the code (from above), and now my multilingual contact form works! Thank you very much🙂

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: