diff --git a/config/install/content_lock.settings.yml b/config/install/content_lock.settings.yml
index d816791..f4f5e36 100644
--- a/config/install/content_lock.settings.yml
+++ b/config/install/content_lock.settings.yml
@@ -1,2 +1,3 @@
 verbose: 1
 types: {}
+types_translation_lock: {}
diff --git a/config/schema/content_lock.schema.yml b/config/schema/content_lock.schema.yml
index 0b66fb1..8fb1782 100644
--- a/config/schema/content_lock.schema.yml
+++ b/config/schema/content_lock.schema.yml
@@ -13,3 +13,6 @@ content_lock.settings:
         sequence:
           type: string
           label: 'Bundle type'
+    types_translation_lock:
+      type: sequence
+      label: 'Entity types with translation lock on'
diff --git a/content_lock.install b/content_lock.install
index 5c414d6..1eb4dfd 100644
--- a/content_lock.install
+++ b/content_lock.install
@@ -5,6 +5,8 @@
  * Create content_lock table.
  */
 
+use Drupal\Core\Language\LanguageInterface;
+
 /**
  * Implements hook_schema().
  */
@@ -27,6 +29,13 @@ function content_lock_schema() {
         'not null' => TRUE,
         'default' => 'node',
       ],
+      'langcode' => [
+        'description' => 'The language code of the entity.',
+        'type' => 'varchar_ascii',
+        'length' => 12,
+        'not null' => TRUE,
+        'default' => LanguageInterface::LANGCODE_NOT_SPECIFIED,
+      ],
       'uid' => [
         'description' => 'User that holds the lock.',
         'type' => 'int',
diff --git a/content_lock.module b/content_lock.module
index 6ac39d0..fc94930 100644
--- a/content_lock.module
+++ b/content_lock.module
@@ -5,6 +5,7 @@
  * Content lock - Main functions of the module.
  */
 
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Entity\EntityInterface;
@@ -82,7 +83,7 @@ function content_lock_form_alter(&$form, FormStateInterface $form_state, $form_i
     $form['actions']['publish']['#submit'][] = 'content_lock_form_submit';
 
     // We lock the content if it is currently edited by another user.
-    if (!$lock_service->locking($entity->id(), $user->id(), $entity_type)) {
+    if (!$lock_service->locking($entity->id(), $entity->language()->getId(), $user->id(), $entity_type)) {
       $form['#disabled'] = TRUE;
 
       // Do not allow deletion, publishing, or unpublishing if locked.
@@ -105,7 +106,7 @@ function content_lock_form_alter(&$form, FormStateInterface $form_state, $form_i
     else {
       // ContentLock::locking() returns TRUE if the content is locked by the
       // current user. Add an unlock button only for this user.
-      $form['actions']['unlock'] = $lock_service->unlockButton($entity_type, $entity->id(), \Drupal::request()->query->get('destination'));
+      $form['actions']['unlock'] = $lock_service->unlockButton($entity_type, $entity->id(), $entity->language()->getId(), \Drupal::request()->query->get('destination'));
     }
   }
 }
@@ -123,7 +124,7 @@ function content_lock_form_submit($form, FormStateInterface $form_state) {
   $entity = $form_state->getFormObject()->getEntity();
 
   // If the user submitting owns the lock, release it.
-  $lock_service->release($entity->id(), $user->id(), $entity->getEntityTypeId());
+  $lock_service->release($entity->id(), $entity->language()->getId(), $user->id(), $entity->getEntityTypeId());
 
   // We need to redirect to the taxonomy term page after saving it. If not, we
   // stay on the taxonomy term edit form and we relock the term.
@@ -151,7 +152,7 @@ function content_lock_entity_predelete(EntityInterface $entity) {
     return;
   }
 
-  $data = $lock_service->fetchLock($entity_id, $entity_type);
+  $data = $lock_service->fetchLock($entity_id, $entity->language()->getId(), $entity_type);
 
   if ($data !== FALSE) {
     $current_user = \Drupal::currentUser();
@@ -291,10 +292,15 @@ function content_lock_entity_operation(EntityInterface $entity) {
 
     $user = \Drupal::currentUser();
     if ($lock && $user->hasPermission('break content lock')) {
+      $entity_type = $entity->getEntityTypeId();
+      $route_parameters = [
+        'entity' => $entity->id(),
+        'langcode' => $lock_service->isTranslationLockEnabled($entity_type) ? $entity->language()->getId() : LanguageInterface::LANGCODE_NOT_SPECIFIED,
+      ];
       $url = 'content_lock.break_lock.' . $entity->getEntityTypeId();
       $operations['break_lock'] = [
         'title' => t('Break lock'),
-        'url' => Url::fromRoute($url, ['entity' => $entity->id()]),
+        'url' => Url::fromRoute($url, $route_parameters),
         'weight' => 50,
       ];
     }
diff --git a/modules/content_lock_timeout/content_lock_timeout.module b/modules/content_lock_timeout/content_lock_timeout.module
index d5b4383..6503f18 100644
--- a/modules/content_lock_timeout/content_lock_timeout.module
+++ b/modules/content_lock_timeout/content_lock_timeout.module
@@ -33,7 +33,7 @@ function content_lock_timeout_cron() {
     ->condition('c.timestamp', $last_valid_time, '<');
   $count = 0;
   foreach ($query->execute() as $obj) {
-    $lock_service->release($obj->entity_id, $obj->uid, $obj->entity_type);
+    $lock_service->release($obj->entity_id, $obj->langcode, $obj->uid, $obj->entity_type);
     $count++;
   }
 
@@ -82,7 +82,7 @@ function content_lock_timeout_entity_prepare_form(EntityInterface $entity, $oper
       && $user->hasPermission('break content lock')
       && ($user->id() > 0)
     ) {
-      $lock_service->release($entity->id(), $lock->uid, $entity->getEntityTypeId());
+      $lock_service->release($entity->id(), $entity->language()->getId(), $lock->uid, $entity->getEntityTypeId());
 
       if ($lock_service->verbose()) {
         $username = User::load($lock->uid)->getDisplayName();
diff --git a/src/ContentLock/ContentLock.php b/src/ContentLock/ContentLock.php
index 6c9ab5f..eceeab4 100644
--- a/src/ContentLock/ContentLock.php
+++ b/src/ContentLock/ContentLock.php
@@ -8,6 +8,7 @@ use Drupal\Core\Entity\EntityTypeManagerInterface;
 use Drupal\Core\Extension\ModuleHandler;
 use Drupal\Core\DependencyInjection\ServiceProviderBase;
 use Drupal\Core\Access\CsrfTokenGenerator;
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\Core\Link;
 use Drupal\Core\Datetime\DateFormatter;
@@ -178,19 +179,25 @@ class ContentLock extends ServiceProviderBase {
    *
    * @param int $entity_id
    *   The entity id.
+   * @param string $langcode
+   *   The translation language code of the entity.
    * @param string $entity_type
    *   The entity type.
    *
    * @return object
    *   The lock for the node. FALSE, if the document is not locked.
    */
-  public function fetchLock($entity_id, $entity_type = 'node') {
+  public function fetchLock($entity_id, $langcode, $entity_type = 'node') {
+    if (!$this->isTranslationLockEnabled($entity_type)) {
+      $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED;
+    }
     $query = $this->database->select('content_lock', 'c');
     $query->leftJoin('users_field_data', 'u', '%alias.uid = c.uid');
     $query->fields('c')
       ->fields('u', ['name'])
       ->condition('c.entity_type', $entity_type)
-      ->condition('c.entity_id', $entity_id);
+      ->condition('c.entity_id', $entity_id)
+      ->condition('c.langcode', $langcode);
 
     return $query->execute()->fetchObject();
   }
@@ -200,18 +207,29 @@ class ContentLock extends ServiceProviderBase {
    *
    * @param object $lock
    *   The lock for a node.
+   * @param bool $translation_lock
+   *   Defines whether the lock is on translation level or not.
    *
    * @return string
    *   String with the message.
    */
-  public function displayLockOwner($lock) {
+  public function displayLockOwner($lock, $translation_lock) {
     $username = $this->entityTypeManager->getStorage('user')->load($lock->uid);
     $date = $this->dateFormatter->formatInterval(REQUEST_TIME - $lock->timestamp);
 
-    return $this->t('This content is being edited by the user @name and is therefore locked to prevent other users changes. This lock is in place since @date.', [
-      '@name' => $username->getDisplayName(),
-      '@date' => $date,
-    ]);
+    if ($translation_lock) {
+      $message = $this->t('This content translation is being edited by the user @name and is therefore locked to prevent other users changes. This lock is in place since @date.', [
+        '@name' => $username->getDisplayName(),
+        '@date' => $date,
+      ]);
+    }
+    else {
+      $message = $this->t('This content is being edited by the user @name and is therefore locked to prevent other users changes. This lock is in place since @date.', [
+        '@name' => $username->getDisplayName(),
+        '@date' => $date,
+      ]);
+    }
+    return $message;
   }
 
   /**
@@ -219,6 +237,8 @@ class ContentLock extends ServiceProviderBase {
    *
    * @param int $entity_id
    *   The entity id.
+   * @param string $langcode
+   *   The translation language code of the entity.
    * @param int $uid
    *   The user id.
    * @param string $entity_type
@@ -227,13 +247,17 @@ class ContentLock extends ServiceProviderBase {
    * @return bool
    *   Return TRUE OR FALSE.
    */
-  public function isLockedBy($entity_id, $uid, $entity_type = 'node') {
+  public function isLockedBy($entity_id, $langcode, $uid, $entity_type = 'node') {
+    if (!$this->isTranslationLockEnabled($entity_type)) {
+      $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED;
+    }
     /** @var \Drupal\Core\Database\Query\SelectInterface $query */
     $query = $this->database->select('content_lock', 'c')
       ->fields('c')
       ->condition('entity_id', $entity_id)
       ->condition('uid', $uid)
-      ->condition('entity_type', $entity_type);
+      ->condition('entity_type', $entity_type)
+      ->condition('langcode', $langcode);;
     $num_rows = $query->countQuery()->execute()->fetchField();
     return (bool) $num_rows;
   }
@@ -243,18 +267,23 @@ class ContentLock extends ServiceProviderBase {
    *
    * @param int $entity_id
    *   The entity id.
+   * @param string $langcode
+   *   The translation language code of the entity.
    * @param int $uid
    *   If set, verify that a lock belongs to this user prior to release.
    * @param string $entity_type
    *   The entity type.
    */
-  public function release($entity_id, $uid = NULL, $entity_type = 'node') {
+  public function release($entity_id, $langcode, $uid = NULL, $entity_type = 'node') {
+    if (!$this->isTranslationLockEnabled($entity_type)) {
+      $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED;
+    }
     // Delete locking item from database.
-    $this->lockingDelete($entity_id, $uid, $entity_type);
+    $this->lockingDelete($entity_id, $langcode, $uid, $entity_type);
 
     $this->moduleHandler->invokeAll(
       'content_lock_release',
-      [$entity_id, $entity_type]
+      [$entity_id, $langcode, $entity_type]
     );
   }
 
@@ -320,6 +349,8 @@ class ContentLock extends ServiceProviderBase {
    *
    * @param int $entity_id
    *   The entity id.
+   * @param string $langcode
+   *   The translation language of the entity.
    * @param int $uid
    *   The user uid.
    * @param string $entity_type
@@ -328,15 +359,20 @@ class ContentLock extends ServiceProviderBase {
    * @return bool
    *   The result of the merge query.
    */
-  protected function lockingSave($entity_id, $uid, $entity_type = 'node') {
+  protected function lockingSave($entity_id, $langcode, $uid, $entity_type = 'node') {
+    if (!$this->isTranslationLockEnabled($entity_type)) {
+      $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED;
+    }
     $result = $this->database->merge('content_lock')
       ->key([
         'entity_id' => $entity_id,
         'entity_type' => $entity_type,
+        'langcode' => $langcode,
       ])
       ->fields([
         'entity_id' => $entity_id,
         'entity_type' => $entity_type,
+        'langcode' => $langcode,
         'uid' => $uid,
         'timestamp' => REQUEST_TIME,
       ])
@@ -350,6 +386,8 @@ class ContentLock extends ServiceProviderBase {
    *
    * @param int $entity_id
    *   The entity id.
+   * @param string $langcode
+   *   The translation language of the entity.
    * @param int $uid
    *   The user uid.
    * @param string $entity_type
@@ -358,10 +396,14 @@ class ContentLock extends ServiceProviderBase {
    * @return bool
    *   The result of the delete query.
    */
-  protected function lockingDelete($entity_id, $uid, $entity_type = 'node') {
+  protected function lockingDelete($entity_id, $langcode, $uid, $entity_type = 'node') {
+    if (!$this->isTranslationLockEnabled($entity_type)) {
+      $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED;
+    }
     $query = $this->database->delete('content_lock')
       ->condition('entity_type', $entity_type)
-      ->condition('entity_id', $entity_id);
+      ->condition('entity_id', $entity_id)
+      ->condition('langcode', $langcode);
     if (!empty($uid)) {
       $query->condition('uid', $uid);
     }
@@ -386,6 +428,8 @@ class ContentLock extends ServiceProviderBase {
    *
    * @param int $entity_id
    *   The entity id.
+   * @param string $langcode
+   *   The translation language of the entity.
    * @param int $uid
    *   The user id to lock the node for.
    * @param string $entity_type
@@ -396,21 +440,32 @@ class ContentLock extends ServiceProviderBase {
    * @return bool
    *   FALSE, if a document has already been locked by someone else.
    */
-  public function locking($entity_id, $uid, $entity_type = 'node', $quiet = FALSE) {
+  public function locking($entity_id, $langcode, $uid, $entity_type = 'node', $quiet = FALSE) {
+    $translation_lock = $this->isTranslationLockEnabled($entity_type);
+    if (!$translation_lock) {
+      $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED;
+    }
+
     // Check locking status.
-    $lock = $this->fetchLock($entity_id, $entity_type);
+    $lock = $this->fetchLock($entity_id, $langcode, $entity_type);
 
     // No lock yet.
     if ($lock === FALSE || !is_object($lock)) {
       // Save locking into database.
-      $this->lockingSave($entity_id, $uid, $entity_type);
+      $this->lockingSave($entity_id, $langcode, $uid, $entity_type);
 
       if ($this->verbose() && !$quiet) {
-        drupal_set_message($this->t('This content is now locked against simultaneous editing. This content will remain locked if you navigate away from this page without saving or unlocking it.'), 'status', FALSE);
+        if ($translation_lock) {
+          drupal_set_message($this->t('This content translation is now locked against simultaneous editing. This content translation will remain locked if you navigate away from this page without saving or unlocking it.'), 'status', FALSE);
+        }
+        else {
+          drupal_set_message($this->t('This content is now locked against simultaneous editing. This content will remain locked if you navigate away from this page without saving or unlocking it.'), 'status', FALSE);
+        }
       }
       // Post locking hook.
       $this->moduleHandler->invokeAll('content_lock_locked', [
         $entity_id,
+        $langcode,
         $uid,
         $entity_type,
       ]);
@@ -422,7 +477,7 @@ class ContentLock extends ServiceProviderBase {
       // Currently locking by other user.
       if ($lock->uid != $uid) {
         // Send message.
-        $message = $this->displayLockOwner($lock);
+        $message = $this->displayLockOwner($lock, $translation_lock);
         drupal_set_message($message, 'warning');
 
         // Higher permission user can unblock.
@@ -431,7 +486,7 @@ class ContentLock extends ServiceProviderBase {
           $link = Link::createFromRoute(
             $this->t('Break lock'),
             'content_lock.break_lock.' . $entity_type,
-            ['entity' => $entity_id],
+            ['entity' => $entity_id, 'langcode' => $langcode],
             ['query' => ['destination' => $this->currentRequest->getRequestUri()]]
           )->toString();
 
@@ -444,11 +499,16 @@ class ContentLock extends ServiceProviderBase {
       }
       else {
         // Save locking into database.
-        $this->lockingSave($entity_id, $uid, $entity_type);
+        $this->lockingSave($entity_id, $langcode, $uid, $entity_type);
 
         // Locked by current user.
         if ($this->verbose() && !$quiet) {
-          drupal_set_message($this->t('This content is now locked by you against simultaneous editing. This content will remain locked if you navigate away from this page without saving or unlocking it.'), 'status', FALSE);
+          if ($translation_lock) {
+            drupal_set_message($this->t('This content translation is now locked by you against simultaneous editing. This content translation will remain locked if you navigate away from this page without saving or unlocking it.'), 'status', FALSE);
+          }
+          else {
+            drupal_set_message($this->t('This content is now locked by you against simultaneous editing. This content translation will remain locked if you navigate away from this page without saving or unlocking it.'), 'status', FALSE);
+          }
         }
 
         // Send success flag.
@@ -476,6 +536,7 @@ class ContentLock extends ServiceProviderBase {
     $this->moduleHandler->invokeAll('content_lock_entity_lockable', [
       $entity,
       $entity_id,
+      $entity->language()->getId(),
       $entity_type,
       $bundle,
       $config,
@@ -496,17 +557,23 @@ class ContentLock extends ServiceProviderBase {
    *   The entity type of the content.
    * @param int $entity_id
    *   The entity id of the content.
+   * @param string $langcode
+   *   The translation language code of the entity.
    * @param string $destination
    *   The destination query parameter to build the link with.
    *
    * @return array
    *   The link form element.
    */
-  public function unlockButton($entity_type, $entity_id, $destination) {
+  public function unlockButton($entity_type, $entity_id, $langcode, $destination) {
     $unlock_url_options = [];
     if ($destination) {
       $unlock_url_options['query'] = ['destination' => $destination];
     }
+    $route_parameters = [
+      'entity' => $entity_id,
+      'langcode' => $this->isTranslationLockEnabled($entity_type) ? $langcode : LanguageInterface::LANGCODE_NOT_SPECIFIED,
+    ];
     return [
       '#type' => 'link',
       '#title' => $this->t('Unlock'),
@@ -514,9 +581,23 @@ class ContentLock extends ServiceProviderBase {
       '#attributes' => [
         'class' => ['button'],
       ],
-      '#url' => Url::fromRoute('content_lock.break_lock.' . $entity_type, ['entity' => $entity_id], $unlock_url_options),
+      '#url' => Url::fromRoute('content_lock.break_lock.' . $entity_type, $route_parameters, $unlock_url_options),
       '#weight' => 200,
     ];
   }
 
+  /**
+   * Checks whether the entity type is lockable on translation level.
+   *
+   * @param string $entity_type_id
+   *   The entity type ID.
+   *
+   * @return bool
+   *   TRUE if the entity type should be locked on translation level, FALSE if
+   *   it should be locked on entity level.
+   */
+  public function isTranslationLockEnabled($entity_type_id) {
+    return $this->moduleHandler->moduleExists('conflict') && in_array($entity_type_id, $this->configFactory->get('content_lock.settings')->get("types_translation_lock"));
+  }
+
 }
diff --git a/src/Form/ContentLockSettingsForm.php b/src/Form/ContentLockSettingsForm.php
index 2a1d384..3f15397 100644
--- a/src/Form/ContentLockSettingsForm.php
+++ b/src/Form/ContentLockSettingsForm.php
@@ -3,9 +3,11 @@
 namespace Drupal\content_lock\Form;
 
 use Drupal\Core\Entity\ContentEntityTypeInterface;
+use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Form\ConfigFormBase;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Url;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\Core\Entity\EntityTypeManager;
 
@@ -24,11 +26,19 @@ class ContentLockSettingsForm extends ConfigFormBase {
   protected $entityTypeManager;
 
   /**
+   * Drupal\Core\Extension\ModuleHandlerInterface module handler.
+   *
+   * @var \Drupal\Core\Extension\ModuleHandlerInterface
+   */
+  protected $moduleHandler;
+
+  /**
    * {@inheritdoc}
    */
-  public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManager $entityTypeManager) {
+  public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManager $entityTypeManager, ModuleHandlerInterface $module_handler) {
     parent::__construct($config_factory);
     $this->entityTypeManager = $entityTypeManager;
+    $this->moduleHandler = $module_handler;
   }
 
   /**
@@ -37,7 +47,8 @@ class ContentLockSettingsForm extends ConfigFormBase {
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('config.factory'),
-      $container->get('entity_type.manager')
+      $container->get('entity_type.manager'),
+      $container->get('module_handler')
     );
   }
 
@@ -101,7 +112,7 @@ class ContentLockSettingsForm extends ConfigFormBase {
           $options[$bundle->id()] = $bundle->label();
         }
         if ($options) {
-          $form['entities'][$definition->id()] = [
+          $form['entities'][$definition->id()]['bundles'] = [
             '#type' => 'checkboxes',
             '#title' => $definition->getLabel(),
             '#description' => $this->t('Select the bundles on which enable content lock'),
@@ -109,6 +120,23 @@ class ContentLockSettingsForm extends ConfigFormBase {
             '#default_value' => $config->get('types.' . $definition->id()) ?: [],
           ];
         }
+        $form['entities'][$definition->id()]['translation_lock'] = [
+          '#type' => 'checkbox',
+          '#title' => $this->t('Lock only on entity translation level.'),
+          '#default_value' => in_array($definition->id(), $config->get('types_translation_lock')),
+          '#description' => $this->t('Activating this options allows users to edit multiple translations concurrently'),
+        ];
+        if (!$this->moduleHandler->moduleExists('conflict')) {
+          $form['entities'][$definition->id()]['translation_lock'] = [
+            '#disabled' => TRUE,
+            '#default_value' => FALSE,
+            '#description' => $this->t('To allow editing multiple translations concurrently you need to install %module',
+              [
+                '%module' => $this->getLinkGenerator()->generate('Conflict', Url::fromUri('https://www.drupal.org/project/conflict')),
+              ]
+            ),
+          ] + $form['entities'][$definition->id()]['translation_lock'];
+        }
       }
     }
 
@@ -125,8 +153,17 @@ class ContentLockSettingsForm extends ConfigFormBase {
     foreach ($definitions as $definition) {
       if ($definition instanceof ContentEntityTypeInterface && $definition->getBundleEntityType()) {
         if ($form_state->getValue($definition->id())) {
-          $this->config('content_lock.settings')
-            ->set('types.' . $definition->id(), $this->removeEmptyValue($form_state->getValue($definition->id())));
+          $content_lock = $this->config('content_lock.settings');
+          $content_lock->set('types.' . $definition->id(), $this->removeEmptyValue($form_state->getValue([$definition->id(), 'bundles'])));
+          $translation_lock = (bool) $form_state->getValue([$definition->id(), 'translation_lock']);
+          $types_translation_lock = $content_lock->get('types_translation_lock');
+          if ($translation_lock && !in_array($definition->id(), $types_translation_lock)) {
+            $types_translation_lock[] = $definition->id();
+          }
+          elseif (!$translation_lock && in_array($definition->id(), $types_translation_lock)) {
+            $types_translation_lock = array_diff($types_translation_lock, [$definition->id()]);
+          }
+          $content_lock->set('types_translation_lock', $types_translation_lock);
         }
       }
     }
diff --git a/src/Form/EntityBreakLockForm.php b/src/Form/EntityBreakLockForm.php
index ca5a29f..6535c94 100644
--- a/src/Form/EntityBreakLockForm.php
+++ b/src/Form/EntityBreakLockForm.php
@@ -7,6 +7,7 @@ use Drupal\Core\Access\AccessResult;
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Language\LanguageInterface;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Url;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -60,9 +61,15 @@ class EntityBreakLockForm extends FormBase {
   public function submitForm(array &$form, FormStateInterface $form_state) {
     $entity_type = $form_state->getValue('entity_type_id');
     $entity_id = $form_state->getValue('entity_id');
+    $langcode = $form_state->getValue('langcode');
 
-    $this->lockService->release($entity_id, NULL, $entity_type);
-    drupal_set_message($this->t('Lock broken. Anyone can now edit this content.'));
+    $this->lockService->release($entity_id, $langcode, NULL, $entity_type);
+    if ($form_state->get('translation_lock')) {
+      drupal_set_message($this->t('Lock broken. Anyone can now edit this content translation.'));
+    }
+    else {
+      drupal_set_message($this->t('Lock broken. Anyone can now edit this content.'));
+    }
 
     // Redirect URL to the request destination or the canonical entity view.
     if ($destination = $this->request->query->get('destination')) {
@@ -84,7 +91,12 @@ class EntityBreakLockForm extends FormBase {
   /**
    * {@inheritdoc}
    */
-  public function buildForm(array $form, FormStateInterface $form_state, ContentEntityInterface $entity = NULL) {
+  public function buildForm(array $form, FormStateInterface $form_state, ContentEntityInterface $entity = NULL, $langcode = NULL) {
+    $translation_lock = $this->lockService->isTranslationLockEnabled($entity->getEntityTypeId());
+    if (!$translation_lock) {
+      $langcode = LanguageInterface::LANGCODE_NOT_SPECIFIED;
+    }
+    $form_state->set('translation_lock', $translation_lock);
     $form['#title'] = $this->t('Break Lock for content @label', ['@label' => $entity->label()]);
     $form['entity_id'] = [
       '#type' => 'value',
@@ -94,6 +106,10 @@ class EntityBreakLockForm extends FormBase {
       '#type' => 'value',
       '#value' => $entity->getEntityTypeId(),
     ];
+    $form['langcode'] = [
+      '#type' => 'value',
+      '#value' => $langcode,
+    ];
     $form['submit'] = [
       '#type' => 'submit',
       '#value' => $this->t('Confirm break lock'),
diff --git a/src/Routing/BreakLockRoutes.php b/src/Routing/BreakLockRoutes.php
index 146f90d..78c0417 100644
--- a/src/Routing/BreakLockRoutes.php
+++ b/src/Routing/BreakLockRoutes.php
@@ -43,7 +43,7 @@ class BreakLockRoutes implements ContainerInjectionInterface {
     foreach ($definitions as $definition) {
       if ($definition instanceof ContentEntityTypeInterface && $definition->getBundleEntityType()) {
         $routes['content_lock.break_lock.' . $definition->id()] = new Route(
-          '/admin/break-lock/' . $definition->id() . '/{entity}',
+          '/admin/break-lock/' . $definition->id() . '/{entity}/{langcode}',
           [
             '_form' => $definition->getHandlerClass('break_lock_form'),
             '_title' => 'Break lock',
diff --git a/src/Tests/ContentLockTestBase.php b/src/Tests/ContentLockTestBase.php
index 720cd45..0ce1373 100644
--- a/src/Tests/ContentLockTestBase.php
+++ b/src/Tests/ContentLockTestBase.php
@@ -213,7 +213,7 @@ class ContentLockTestBase extends WebTestBase {
     // We protect the bundle created.
     $this->drupalLogin($this->adminUser);
     $edit = [
-      'node[article]' => 1,
+      'node[bundles][article]' => 1,
     ];
     $this->drupalPostForm('admin/config/content/contentlocksettings', $edit, t('Save configuration'));
 
@@ -275,7 +275,7 @@ class ContentLockTestBase extends WebTestBase {
     // We protect the bundle created.
     $this->drupalLogin($this->adminUser);
     $edit = [
-      'block_content[basic]' => 1,
+      'block_content[bundles][basic]' => 1,
     ];
     $this->drupalPostForm('admin/config/content/contentlocksettings', $edit, t('Save configuration'));
 
@@ -334,7 +334,7 @@ class ContentLockTestBase extends WebTestBase {
     // We protect the bundle created.
     $this->drupalLogin($this->adminUser);
     $edit = [
-      'taxonomy_term[' . $this->term1->bundle() . ']' => 1,
+      'taxonomy_term[bundles][' . $this->term1->bundle() . ']' => 1,
     ];
     $this->drupalPostForm('admin/config/content/contentlocksettings', $edit, t('Save configuration'));
 
