Как да направим някои стрингове на Webform преводими?

Translatable webform component label, default value, options text, submit text

Webform е модул с който може да правим формуляри в сайт на Друпал. При мултиезични сайтове е възможно да се ползват преводите на нод за всеки език, като се направи формуляр за всеки език. В някои случаи е по-удобно стринговете на формулярите да са преводими (такива като етикет на полето, стойност по подразбиране за полето, текста на опциите - списък за избор или радиобутони, когато има такива, текста на бутона за запис на формуляра) - така ще имаме само една форма за всички езици. Който е правил форми в мултиезичен сайт вероятно си е мислил за това.

Със следващия код в модул се правят #title, #default_value, #options['value'] и submit['#value'] да се превеждат през admin/config/regional/translate/translate:

/**
 * Implements hook_form_alter().
 */
function HOOK_form_alter(&$form, &$form_state, $form_id) {
  if (strstr($form_id, 'webform_client_form_')) {
    //make default value, title, select options value and submit value on
    //webform translatable by localization
    foreach ($form['submitted'] AS $key => $component) {
      if (@$component['#default_value']) {
        $form['submitted'][$key]['#default_value'] = t($component['#default_value']);
      }
      if (@$component['#title']) {
        $form['submitted'][$key]['#title'] = t($component['#title']);
      }
 
      if (count(@$component['#options'])) {
        foreach ($component['#options'] AS $opt_key => $opt_val) {
          $form['submitted'][$key]['#options'][$opt_key] = t($opt_val);
        }
      }
    }
 
    $form['actions']['submit']['#value'] = t($form['actions']['submit']['#value']);
  }
}
Category: