To reproduce:
- Create a job
- Import an XLIFF with the wrong source language
Result:
- The following job message is created:
$job->addMessage('The imported file target language @file_language does not match the job target language @job_language.', array(
'@file_language' => empty($xml->file['target-language']) ? t('none') : $xml->file['target-language'],
'@job_language' => $job->target_language,
), 'error');
However, $xml->file['target-language'] is a SimpleXMLElement instance, not a string. When the message gets serialized, the following error results:
Drupal\Core\Entity\EntityStorageException: Serialization of 'SimpleXMLElement' is not allowed in Drupal\Core\Entity\Sql\SqlContentEntityStorage->save() (line 770 of core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php).
Drupal\Core\Entity\Sql\SqlContentEntityStorage->mapToStorageRecord(Object, 'tmgmt_message') (Line: 806)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->doSaveFieldItems(Object) (Line: 263)
Drupal\Core\Entity\ContentEntityStorageBase->doSave(NULL, Object) (Line: 392)
Drupal\Core\Entity\EntityStorageBase->save(Object) (Line: 761)
Drupal\Core\Entity\Sql\SqlContentEntityStorage->save(Object) (Line: 364)
Drupal\Core\Entity\Entity->save() (Line: 346)
Drupal\tmgmt\Entity\Job->addMessage(Object, Array, 'error') (Line: 262)
Suggested solution:
Cast this value to string when including it as a message variable.