Übersetzung für Drupal-Kontaktformulare
Drupal6 und sein i18n-Modul ermöglichen nicht die Übersetzung von Kontaktformularen. In diesem Post werden wir Ihnen erklären, wie wir diese Beschränkung überwunden haben und wie ICanLocalize Translator in Drupal mehrsprachige Kontaktformulare zur Verfügung stellt.
Was funktioniert:
- Übersetzen von Formularbezeichnungen, dies kann mit der Schnittstelle übersetzen in Drupal 6 gemacht werden
Was nicht funktioniert:
- Übersetzen der Willkommensnachricht über dem Kontaktformular, die als Voreinstellung lautet „Sie können das unten stehende Kontaktformular benutzen, um eine Nachricht zu hinterlassen".
- Übersetzen der Kategorien, die in der Kategorien-Auflistungsbox angezeigt werden
- Übersetzen der Bestätigungsnachricht, die versandt wird, nachdem der Benutzer das Formular eingereicht hat.
Übersetzen von Kontaktdaten und Kategorien
Um diese zu übersetzen, müssen wir auf Formular ändern zurückgreifen und die t()-Funktion verwenden, um den übersetzten Text zu benutzen. Kontaktdaten werden als Variable 'contact_form_information' gespeichert und die Kategorien können von $form['cid']['#options'] erhalten werden. Die Werte werden unter Verwendung der t()-Funktion geschrieben (Drupals String-Übersetzung).
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';
}
Wir fügen auch einen Sprachumschalter unten zum Formular hinzu, indem wir local_block aufrufen. Wir fügen das Attribut class="links inline" zum Sprachumschalter hinzu, sodass er dasselbe anzeigt wie die Sprachumschalter in den anderen Knoten.
Die Antwortnachricht übersetzen
Um die übersetzten Antwortnachrichten zu benutzen, ersetzen wir Drupals Formular einreichen-Funktion mit unserer eigenen einreichen-Funktion. Diese Funktion ist ein Duplikat der Funktion Kontaktmailseite einreichen mit den folgenden Unterschieden:
// Load category properties and save form values for email composition.
$contact = contact_load($values['cid']);
$values['contact'] = $contact;
Wir verwenden Drupals t()-Funktion, um die übersetzte Bestätigungsnachricht zu versenden:
// 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;
Mit diesen Änderungen kann der gesamte Text im Kontaktformular unter Verwendung der Schnittstelle übersetzen übersetzt werden.
Unser ICanLocalize-Modul beinhaltet dies und zusätzlich:
- Sammelt es alle unübersetzten Texte und sendet sie in einem Rutsch zur Übersetzung ein.
- Das Kontaktformular wird auf die gleiche Weise wie ein Knoten übersetzt. Benutzer können es vom Übersetzungs-Dashboard auswählen und zur Übersetzung einsenden, ohne sich mit der internen Umsetzung herumplagen zu müssen.
- Vom ICanLocalize Server erhaltene Übersetzungen werden automatisch in der Datenbanktabelle locale_target gespeichert. Auf der Übersetzungsoberfläche muss nicht nach Strings gesucht werden.
Hin- und Her-Übersetzung für die eingereichten Kontaktformulare
Sobald Drupal-Seiten mehrsprachige Kontaktformulare enthalten, fangen die Besucher an, Nachrichten in ihren eigenen Sprachen zu senden. Unsere Statistik zeigt, dass fast alle Kontakte in der Sprache hergestellt werden, in welcher das Kontaktformular angezeigt wird.
Gerade zu diesem Zeitpunkt benutzen die Menschen entweder kostenlose Maschinenübersetzung (die manchmal lesbare Ergebnisse liefert und manchmal nicht) oder sie verwenden unsere Sofort-Textübersetzung, um präzise, professionelle Übersetzungen zu erhalten. Es funktioniert super, aber wir möchten die Kommunikation mit Ihren Besuchern noch geradliniger gestalten.
Übersetzung der Besucherkommunikation innerhalb des Kontaktformulars
Der nächste Schritt besteht darin, vollständige mehrsprachige Kundenkommunikation zum Kontaktformular hinzuzufügen.
Dies wird es Besuchern ermöglichen, in ihren eigenen Sprachen zu kommunizieren und Webseiten-Betreiber können in ihren Sprachen antworten. Alle Übersetzungen werden hinter den Kulissen stattfinden.
So wird es funktionieren:
- Nachrichten von Kunden werden mit einer kostenlosen Maschinenübersetzung in die Sprache des Webseiten-Betreibers übersetzt.
- In den meisten Fällen kann die Nachricht durch die Übersetzung verstanden werden. Der Seitenbetreiber kann missverständliche Nachrichten professionell übersetzen lassen.
- Alle Nachrichten des Webseiten-Betreibers werden in seiner Muttersprache geschrieben und professionell übersetzt, bevor sie dem Besucher geschickt werden.

Kommentare
Because t() is designed for
Because t() is designed for handling code-based strings, in almost all cases, the actual string and not a variable must be passed through t().
Extraction of translations is done based on the strings contained in t() calls. If a variable is passed through t(), the content of the variable cannot be extracted from the file for translation.
Incorrect:
<?php
$message = 'An error occurred.';
drupal_set_message(t($message), 'error');
$output .= t($message);
?>
Correct:
<?php
$message = t('An error occurred.');
drupal_set_message($message, 'error');
$output .= $message;
?>
see http://api.drupal.org/api/function/t/6
Post new comment