Категория:
Опубликовано:

Как изменить язык Drupal-сайта динамически

Language Switcher

Случается, что нужно явно указать текущий язык сайта.

Я столкнулся с таким при динамической подгрузке форм (AJAX'ом, в модальное окно) - вызывая стандартный drupal_get_form(), форма загружалась на стандартном языке.

"Заставить" Drupal отображаться на нужном языке можно следующим образом:

$languages = language_list(); // Получаем список всех языков
global $language; // Загружаем глобальную переменную $language
$language = $languages[$langcode]; // Устанавливаем нужный язык

Где, $langcode - код необходимого языка (например 'en').

Форма с исправлением выглядит следующим образом:

function MY_MODULE_form($form, &$form_state, $langcode = NULL) {
  if ($langcode) {
    $languages = language_list();
    global $language;
    $language = $languages[$langcode];
  }

  $form['item'] = array(
    '#markup' => '<h1>' . t('Contact form') . '</h1>',
    '#weight' => -1,
  );

  return $form;
}
Теги: 
Если у Вас возникли вопросы, замечания, предложения или просто благодарность - пишите в комментариях.
Делитесь полезными материалами в социальных сетях.
Добавить комментарий