Drupal 8: Уведомляющее сообщение не переведено - PullRequest
4 голосов
/ 21 февраля 2020

Я использую message & message_notify модуль contrib.

Я включил языковой модуль, по умолчанию он имеет Engli sh (en), корейский ( ko), японский (ja).

Я также перевёл шаблон ниже на японский язык.

  $language = 'ja';
  $message = Message::create([
    'template' => 'sample_template',
    'langcode' => $language
  ]);

  $message->setLanguage($language);

  $message->save();

  $message = $message->getTranslation($language);

  $notifier = \Drupal::service('message_notify.sender');
  $result = $notifier->send($message);

Когда я пытаюсь отправить письмо, оно всегда отправляется на английском языке sh, а не японский.

Я что-то упустил в конфигурации языка?

1 Ответ

2 голосов
/ 01 марта 2020

Drupal\message_notify\MessageNotifier ожидает, что будет передан объект, который реализует Drupal\message\MessageInterface.

public function send(
    MessageInterface $message, array $options = [], $notifier_name = 'email')

В Drupal\message_notify\Plugin\Notifier\Email source, предпочтительный язык используется для отрисовки сообщения, когда для опции language override установлено значение FALSE.

    if (!$this->configuration['language override']) {
      $language = $account->getPreferredLangcode();
    }
    else {
      $language = $this->message->language()->getId();
    }

В массиве options настройте язык для переопределения так, чтобы сообщение отображалось на заданном языке.

$message->setLanguage($language);
$result = $notifier->send($message, ['language override' => TRUE]);
...