Traducción de los formularios de contacto en Drupal

Drupal 6 y su módulo i18n no permiten la traducción de los formularios de contacto. En esta publicación, explicaremos cómo superamos esta limitación y cómo ICanLocalize Translator logra proporcionar formularios de contacto multilingües en Drupal.

Lo que funciona:

  • Traducir etiquetas de formularios, lo cual se puede lograr a través de la interfaz de traducción de Drupal 6

Lo que no funciona:

  • Traducir el mensaje de bienvenida, en la parte superior del formulario de contacto, que por defecto dice: "Puedes enviar tu mensaje usando el formulario de contacto de abajo."
  • Traducir las categorías visualizadas en la categoría listbox
  • Traducir el mensaje de confirmación, el que se envía después de que el usuario mandó el formulario.

Traducción de la información y de las categorías de los formularios de contacto

Para traducir la información y las categorías debemos aplicar el hook form alter y usar la función t() para poder utilizar el texto traducido. La información en el formulario de contacto se guarda como una variable 'contact_form_information' y las categorías se pueden obtener de form['cid']['#options']. Los valores se vuelven a escribir usando la función t() (la traducción por segmentos de Drupal).

function icl_content_alter_standard_contact_form(&$form, $form_state) {
global $language;

$contact_info = variable_get('contact_form_information', '');
if (strlen($contact_info) > 0) {
$form['contact_information']['#value'] = filter_xss_admin(t($contact_info));
}
if (isset($form['cid']['#options'])) {
foreach($form['cid']['#options'] as $index => $value) {
$form['cid']['#options'][$index] = t($value);
}
}

$block = locale_block('view');

$form['translation-links'] = array (
'#type' => 'markup',
'#value' => '<br><br>' . str_replace('<ul>', '<ul class="links inline">', $block['content']),
);

$form['#submit'][0] = 'icl_content_contact_mail_page_submit';

}

También agregamos un selector de idiomas al pie del formulario llamando a la función local_block. Agregamos el atributo class="links inline" al selector de idiomas para que éste se visualice del mismo modo que los selectores de idiomas en los otros nodos.

Traducción del mensaje de respuesta

Para poder utilizar los mensajes de respuesta traducidos, lo que hacemos es sustituir la función de Drupal enviar formulario (form submit) por nuestra propia función enviar (submit). Esta función es un duplicado de la función contact_mail_page_submit pero con las siguientes modificaciones:

// Load category properties and save form values for email composition.
$contact = contact_load($values['cid']);
$values['contact'] = $contact;

Usamos la función t() de Drupal para enviar el mensaje de confirmación traducido.

  // Load category properties and save form values for email composition.
$contact = contact_load($values['cid']);
if (strlen($contact['reply']) > 0) {
$contact['reply'] = t($contact['reply']);
}
$values['contact'] = $contact;

 

Efectuando estos cambios, se pueden traducir todos los textos que se encuentren en el formulario de contacto usando la interfaz de traducción.

Nuestro módulo ICanLocalize incluye eso y además:

  • Reúne todos los textos que no estén traducidos y los envía de una vez para su traducción.
  • El formulario de contacto se traduce del mismo modo que un nodo. Los usuarios pueden seleccionarlo en el Panel de control para las traducciones (Translation dashboard) y enviarlo para su traducción sin tener que preocuparse de cuestiones internas.
  • Las traducciones recibidas desde el servidor de ICanLocalize se guardan automáticamente en la tabla de la base de datos locale_target, sin que sea necesario buscar segmentos en la interfaz de traducción.

Traducción bilateral de los formularios de contacto enviados

Una vez que los sitios en Drupal incluyen formularios de contacto multilingües, los visitantes pueden comenzar a enviar mensajes en su propio idioma. Nuestras estadísticas muestran que la mayoría de los contactos se establecen en el idioma en el cual se visualiza el formulario.

Actualmente, se utiliza la traducción automática gratuita (con resultados no siempre legibles) o nuestra traducción instantánea de textos que permite obtener una traducción precisa y profesional. Funciona bien, sin embargo, queremos hacer que la comunicación con tus visitantes sea aún más eficaz.

Traducción de la comunicación establecida con el visitante dentro del formulario de contacto

El próximo paso será agregarle al formulario de contacto una comunicación con el cliente totalmente multilingüe.

Ésto permitirá que los visitantes se puedan comunicar en su propio idioma y que los dueños de los sitios Web les respondan en el suyo. Toda la traducción se llevará a cabo de manera interna.

Funcionará del siguiente modo:

  • Los mensajes de los clientes se traducirán al idioma del dueño del sitio Web usando una traducción automática gratuita.
  • En la mayoría de los casos, la traducción permite entender el mensaje. Sin embargo, cuando los mensajes sean incomprensibles, el dueño del sitio puede obtener traducciones realizadas por profesionales.
  • Cualquier mensaje escrito por el dueño del sitio Web estará en su idioma nativo y se traducirá de manera profesional antes de que éste sea enviado al visitante.

 

Comentarios

Funciona con drupal 7?

Y esto mimo funciona para drupal 7??.

Saludos

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options