diff --git a/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php b/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
index 13ab1f1..803ec66 100644
--- a/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
+++ b/core/modules/path/src/Plugin/Field/FieldWidget/PathWidget.php
@@ -25,6 +25,13 @@ class PathWidget extends WidgetBase {
    */
   public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
     $entity = $items->getEntity();
+    $input = $form_state->getUserInput();
+    if (isset($input['langcode'])) {
+      $langcode = $input['langcode'][0]['value'];
+    }
+    else {
+      $langcode = \Drupal::languageManager()->getCurrentLanguage()->getId();
+    }
 
     $element += [
       '#element_validate' => [[get_class($this), 'validateFormElement']],
@@ -47,7 +54,7 @@ public function formElement(FieldItemListInterface $items, $delta, array $elemen
      ];
     $element['langcode'] = [
       '#type' => 'value',
-      '#value' => $items[$delta]->langcode,
+      '#value' => !$entity->isNew() ? $items[$delta]->langcode : $langcode,
     ];
     return $element;
   }
