diff --git a/modules/hal/src/Normalizer/FieldItemNormalizer.php b/modules/hal/src/Normalizer/FieldItemNormalizer.php
index a427fee..9c0e8bb 100644
--- a/core/modules/hal/src/Normalizer/FieldItemNormalizer.php
+++ b/core/modules/hal/src/Normalizer/FieldItemNormalizer.php
@@ -53,6 +53,7 @@ class FieldItemNormalizer extends NormalizerBase {
     }
 
     $field_item = $context['target_instance'];
+    $constructed_data = $this->constructValue($data, $context);
 
     // If this field is translatable, we need to create a translated instance.
     if (isset($data['lang'])) {
@@ -60,11 +61,11 @@ class FieldItemNormalizer extends NormalizerBase {
       unset($data['lang']);
       $field_definition = $field_item->getFieldDefinition();
       if ($field_definition->isTranslatable()) {
-        $field_item = $this->createTranslatedInstance($field_item, $langcode);
+        $field_item = $this->createTranslatedInstance($field_item, $data, $langcode);
       }
     }
 
-    $field_item->setValue($this->constructValue($data, $context));
+    $field_item->setValue($constructed_data);
     return $field_item;
   }
 
@@ -99,7 +100,7 @@ class FieldItemNormalizer extends NormalizerBase {
    * @return \Drupal\Core\Field\FieldItemInterface
    *   The translated field item instance.
    */
-  protected function createTranslatedInstance(FieldItemInterface $field_item, $langcode) {
+  protected function createTranslatedInstance(FieldItemInterface $field_item, $value, $langcode) {
     $field_items = $field_item->getParent();
 
     // Remove the untranslated instance from the field's list of items.
@@ -107,7 +108,14 @@ class FieldItemNormalizer extends NormalizerBase {
 
     // Get the entity in the requested language and the field's item list from
     // that.
-    $entity_translation = $field_item->getEntity()->getTranslation($langcode);
+    /** @var \Drupal\Core\Entity\ContentEntityInterface $entity */
+    $entity = $field_item->getEntity();
+    if (!$entity->hasTranslation($langcode)) {
+      $entity_translation = $entity->addTranslation($langcode, [$field_items->getName() => $value]);
+    }
+    else {
+      $entity_translation = $entity->getTranslation($langcode);
+    }
     $field_items_translation = $entity_translation->get($field_item->getFieldDefinition()->getName());
 
     // Create a new instance and return it.
