diff --git a/core/modules/language/src/LanguageNegotiator.php b/core/modules/language/src/LanguageNegotiator.php
index bc924fb..75f9386 100644
--- a/core/modules/language/src/LanguageNegotiator.php
+++ b/core/modules/language/src/LanguageNegotiator.php
@@ -264,6 +264,12 @@ public function isNegotiationMethodEnabled($method_id, $type = NULL) {
    * {@inheritdoc}
    */
   function saveConfiguration($type, $enabled_methods) {
+    // If the type was locked and has fixed settings, it cannot be changed.
+    $info = $this->languageManager->getDefinedLanguageTypesInfo()[$type];
+    if (!empty($info['locked']) && !empty($info['fixed'])) {
+      throw new \Exception('Locked and fixed negotiation types cannot be configured');
+    }
+
     // As configurable language types might have changed, we reset the cache.
     $this->languageManager->reset();
     $definitions = $this->getNegotiationMethods();
