Drupal 8: Notify message is not translated

Viewed 414

I am using message & message_notify contrib module.

I have enabled language module, It has By default English (en), Korean (ko), Japanese (ja).

I have translate below template in Japanese language as well.

  $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);

When I am trying to send email it always sending in English, rather than Japanese.

Am I missing something in Language configuration?

1 Answers

Drupal\message_notify\MessageNotifier expects to be passed an object that implements Drupal\message\MessageInterface.

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

In Drupal\message_notify\Plugin\Notifier\Email source, the preference language is used for rendering the message when language override option is set to FALSE.

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

In options array, configure language to be overridden so that the message is rendered in the set language.

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