diff --git a/entity_translation.admin.inc b/entity_translation.admin.inc
index c1d9486..9dfb505 100644
--- a/entity_translation.admin.inc
+++ b/entity_translation.admin.inc
@@ -120,6 +120,12 @@ function entity_translation_admin_form($form, $form_state) {
           '#title' => t('Exclude <em>Language neutral</em> from the available languages'),
           '#default_value' => $settings['exclude_language_none'],
         );
+
+        $form['settings'][$entity_type][$settings_key]['lock_language'] = array(
+          '#type' => 'checkbox',
+          '#title' => t('Prevent language from being changed once the entity has been created'),
+          '#default_value' => $settings['lock_language'],
+        );
       }
     }
 
diff --git a/entity_translation.module b/entity_translation.module
index 911b5a5..9aa0eb4 100644
--- a/entity_translation.module
+++ b/entity_translation.module
@@ -1521,6 +1521,7 @@ function entity_translation_settings($entity_type, $bundle) {
     'default_language' => ENTITY_TRANSLATION_LANGUAGE_DEFAULT,
     'hide_language_selector' => TRUE,
     'exclude_language_none' => FALSE,
+    'lock_language' => FALSE,
   );
 
   return $settings;
diff --git a/includes/translation.handler.inc b/includes/translation.handler.inc
index 7fbdf89..a7c8aad 100644
--- a/includes/translation.handler.inc
+++ b/includes/translation.handler.inc
@@ -966,14 +966,6 @@ class EntityTranslationDefaultHandler implements EntityTranslationHandlerInterfa
     $this->entityFormLanguageWidget($form, $form_state);
 
     if ($is_translation) {
-      // If we are editing a translation set the correct value in the language
-      // widget and not current one.
-      // @todo Consider supporting the ability to change translation language.
-      $form['language']['#title'] = t('Original language');
-      $form['language']['#options'][$langcode] = $languages[$langcode]->name;
-      $form['language']['#default_value'] = $langcode;
-      $form['language']['#disabled'] = TRUE;
-
       // Replace the delete button with the delete translation one.
       if (!$new_translation) {
         $weight = 100;
@@ -1093,6 +1085,7 @@ class EntityTranslationDefaultHandler implements EntityTranslationHandlerInterfa
     list(, , $bundle) = entity_extract_ids($this->entityType, $this->entity);
     $settings = entity_translation_settings($this->entityType, $bundle);
     $translations = $this->getTranslations();
+    $is_translation = !empty($form_state['entity_translation']['is_translation']);
     $form_langcode = $this->getFormLanguage();
     $languages = entity_translation_languages($this->entityType, $this->entity);
     $options = count($translations->data) > 1 || !empty($settings['exclude_language_none']) ? array() : array(LANGUAGE_NONE => t('Language neutral'));
@@ -1114,6 +1107,7 @@ class EntityTranslationDefaultHandler implements EntityTranslationHandlerInterfa
       '#default_value' => $langcode,
       '#options' => $options,
       '#access' => empty($settings['hide_language_selector']),
+      '#disabled' => $is_translation || !empty($settings['lock_language']),
     );
 
     if (!empty($form['actions']['submit']['#submit'])) {
@@ -1126,6 +1120,11 @@ class EntityTranslationDefaultHandler implements EntityTranslationHandlerInterfa
       $submit = &$form['#submit'];
     }
 
+    if ($is_translation) {
+      // @todo Consider supporting the ability to change translation language.
+      $form['language']['#title'] = t('Original language');
+    }
+
     array_unshift($submit, 'entity_translation_language_widget_submit');
   }
 
