diff --git a/config/optional/views.view.locked_content.yml b/config/optional/views.view.locked_content.yml
index c27bd90..1a5db20 100644
--- a/config/optional/views.view.locked_content.yml
+++ b/config/optional/views.view.locked_content.yml
@@ -167,6 +167,18 @@ display:
           custom_date_format: ''
           timezone: ''
           plugin_id: date
+        langcode:
+          id: langcode
+          table: content_lock
+          field: langcode
+          plugin_id: langcode
+          exclude: false
+        form_op:
+          id: form_op
+          table: content_lock
+          field: form_op
+          plugin_id: string
+          exclude: false
         is_locked:
           id: is_locked
           table: content_lock
diff --git a/config/schema/content_lock.views.schema.yml b/config/schema/content_lock.views.schema.yml
index 69d5406..cf89ef8 100644
--- a/config/schema/content_lock.views.schema.yml
+++ b/config/schema/content_lock.views.schema.yml
@@ -6,10 +6,6 @@ views.filter.content_lock_filter:
       type: string
       label: 'Value'
 
-views.field.content_lock_field:
-  type: views.field.boolean
-  label: 'Is Locked'
-
 views.field.content_lock_break_link:
   type: views_field
   label: 'Break link'
diff --git a/content_lock.module b/content_lock.module
index 875f900..bdc339c 100644
--- a/content_lock.module
+++ b/content_lock.module
@@ -222,19 +222,26 @@ function content_lock_views_data() {
 
   $types = \Drupal::configFactory()->get('content_lock.settings')->get("types");
 
-  foreach ($types as $type => $bundles) {
+  $content_lock = \Drupal::service('content_lock');
 
+  foreach (array_filter($types) as $type => $value) {
     $definition = \Drupal::entityTypeManager()->getDefinition($type);
     $data['content_lock']['table']['join'][$definition->getDataTable()] = [
       'left_field' => $definition->getKey('id'),
       'field' => 'entity_id',
       'extra' => [
-        0 => [
+        [
           'field' => 'entity_type',
           'value' => $type,
         ],
       ],
     ];
+    if ($content_lock->isTranslationLockEnabled($type)) {
+      $data['content_lock']['table']['join'][$definition->getDataTable()]['extra'][] = [
+        'left_field' => $definition->getKey('langcode'),
+        'field' => 'langcode',
+      ];
+    }
 
     $data['content_lock'][$definition->getKey('id')] = [
       'title' => t('@type locked', ['@type' => $definition->getLabel()]),
@@ -274,12 +281,47 @@ function content_lock_views_data() {
     ],
   ];
 
+  $data['content_lock']['langcode'] = [
+    'title' => t('Lock Language'),
+    'help' => t('Language of the lock'),
+    'field' => [
+      'id' => 'language',
+    ],
+    'sort' => [
+      'id' => 'standard',
+    ],
+    'filter' => [
+      'id' => 'language',
+    ],
+    'argument' => [
+      'id' => 'language',
+    ],
+    'entity field' => 'langcode',
+  ];
+
+  $data['content_lock']['form_op'] = [
+    'title' => t('Lock Form Operation'),
+    'help' => t('Form operation of the lock'),
+    'field' => [
+      'id' => 'standard',
+    ],
+    'sort' => [
+      'id' => 'standard',
+    ],
+    'filter' => [
+      'id' => 'string',
+    ],
+    'argument' => [
+      'id' => 'string',
+    ],
+  ];
+
   $data['content_lock']['is_locked'] = [
+    'real field' => 'timestamp',
     'title' => t('Is Locked'),
     'help' => t('Whether the node is currently locked'),
     'field' => [
-      'id' => 'content_lock_field',
-      'additional fields' => ['timestamp' => ['table' => 'content_lock', 'field' => 'timestamp']],
+      'id' => 'boolean',
     ],
     'sort' => [
       'id' => 'content_lock_sort',
diff --git a/src/Controller/ContentLockController.php b/src/Controller/ContentLockController.php
index 4a2aa23..5772985 100644
--- a/src/Controller/ContentLockController.php
+++ b/src/Controller/ContentLockController.php
@@ -10,7 +10,6 @@ use Drupal\Core\Ajax\PrependCommand;
 use Drupal\Core\Controller\ControllerBase;
 use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Session\AccountInterface;
-use Drupal\language\Entity\ConfigurableLanguage;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\Request;
 
@@ -28,12 +27,18 @@ class ContentLockController extends ControllerBase {
    */
   protected $lockService;
 
+  /**
+   * EntityBreakLockForm constructor.
+   *
+   * @param \Drupal\content_lock\ContentLock\ContentLock $lock_service
+   *   Content lock service.
+   */
   public function __construct(ContentLock $lock_service) {
     $this->lockService = $lock_service;
   }
 
   /**
-   * {@inheritDoc}
+   * {@inheritdoc}
    */
   public static function create(ContainerInterface $container) {
     return new static(
@@ -54,7 +59,7 @@ class ContentLockController extends ControllerBase {
   public function createLockCall(Request $request, ContentEntityInterface $entity, $langcode, $form_op) {
     $response = new AjaxResponse();
 
-    // Not lockable entity or entity creation
+    // Not lockable entity or entity creation.
     if (!$this->lockService->isLockable($entity, $form_op) || is_null($entity->id())) {
       $lockable = FALSE;
       $lock = FALSE;
@@ -64,11 +69,12 @@ class ContentLockController extends ControllerBase {
       $destination = $request->query->get('destination') ?: $entity->toUrl('edit-form')->toString();
       $lock = $lockable ? $this->lockService->locking($entity->id(), $langcode, $form_op, $this->currentUser()->id(), $entity->getEntityTypeId(), FALSE, $destination) : FALSE;
 
-      // Render status messages from locking service
+      // Render status messages from locking service.
       $response->addCommand(new PrependCommand('', ['#type' => 'status_messages']));
 
       if ($lock) {
-        $url = $entity->toUrl('canonical', ['language' => ConfigurableLanguage::load($langcode)]);
+        $language = $this->languageManager->getLanguage($langcode);
+        $url = $entity->toUrl('canonical', ['language' => $language]);
         $unlock_button = $this->lockService->unlockButton($entity->getEntityTypeId(), $entity->id(), $langcode, $form_op, $url->toString());
         $response->addCommand(new AppendCommand('.content-lock-actions.form-actions', $unlock_button));
       }
diff --git a/src/Form/EntityBreakLockForm.php b/src/Form/EntityBreakLockForm.php
index 2542b29..83947a4 100644
--- a/src/Form/EntityBreakLockForm.php
+++ b/src/Form/EntityBreakLockForm.php
@@ -8,9 +8,9 @@ use Drupal\Core\Entity\ContentEntityInterface;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Language\LanguageInterface;
+use Drupal\Core\Language\LanguageManagerInterface;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\Core\Url;
-use Drupal\language\Entity\ConfigurableLanguage;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Symfony\Component\HttpFoundation\RequestStack;
 
@@ -33,6 +33,13 @@ class EntityBreakLockForm extends FormBase {
    */
   protected $request;
 
+  /**
+   * Language manager service.
+   *
+   * @var \Drupal\Core\Language\LanguageManagerInterface
+   */
+  protected $languageManager;
+
   /**
    * EntityBreakLockForm constructor.
    *
@@ -40,10 +47,13 @@ class EntityBreakLockForm extends FormBase {
    *   Content lock service.
    * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
    *   Request stack service.
+   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
+   *   Language manager service.
    */
-  public function __construct(ContentLock $contentLock, RequestStack $requestStack) {
+  public function __construct(ContentLock $contentLock, RequestStack $requestStack, LanguageManagerInterface $language_manager) {
     $this->lockService = $contentLock;
     $this->request = $requestStack->getCurrentRequest();
+    $this->languageManager = $language_manager;
   }
 
   /**
@@ -52,7 +62,8 @@ class EntityBreakLockForm extends FormBase {
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('content_lock'),
-      $container->get('request_stack')
+      $container->get('request_stack'),
+      $container->get('language_manager')
     );
   }
 
@@ -65,7 +76,7 @@ class EntityBreakLockForm extends FormBase {
     $langcode = $form_state->getValue('langcode');
     $form_op = $form_state->getValue('form_op') ?: NULL;
 
-    $this->lockService->release($entity_id, $langcode, $form_op,NULL, $entity_type);
+    $this->lockService->release($entity_id, $langcode, $form_op, NULL, $entity_type);
     if ($form_state->get('translation_lock')) {
       drupal_set_message($this->t('Lock broken. Anyone can now edit this content translation.'));
     }
@@ -79,7 +90,8 @@ class EntityBreakLockForm extends FormBase {
       $form_state->setRedirectUrl($url);
     }
     else {
-      $url = Url::fromRoute("entity.$entity_type.canonical", [$entity_type => $entity_id], ['language' => ConfigurableLanguage::load($form_state->get('langcode_entity'))]);
+      $language = $this->languageManager->getLanguage($form_state->get('langcode_entity'));
+      $url = Url::fromRoute("entity.$entity_type.canonical", [$entity_type => $entity_id], ['language' => $language]);
       $form_state->setRedirectUrl($url);
     }
   }
diff --git a/src/Plugin/views/field/ContentLockBreak.php b/src/Plugin/views/field/ContentLockBreak.php
index eb9abf5..3335375 100644
--- a/src/Plugin/views/field/ContentLockBreak.php
+++ b/src/Plugin/views/field/ContentLockBreak.php
@@ -31,7 +31,11 @@ class ContentLockBreak extends FieldPluginBase {
     $entity = $this->getEntity($values);
     $url = Url::fromRoute(
       'content_lock.break_lock.' . $entity->getEntityTypeId(),
-      ['entity' => $entity->id()]
+      [
+        'entity' => $entity->id(),
+        'langcode' => $entity->language()->getId(),
+        'form_op' => isset($values->content_lock_form_op) ? $values->content_lock_form_op :  '*',
+      ]
     );
 
     $break_link = Link::fromTextAndUrl('Break lock', $url);
diff --git a/src/Plugin/views/field/ContentLockField.php b/src/Plugin/views/field/ContentLockField.php
deleted file mode 100644
index c3b9087..0000000
--- a/src/Plugin/views/field/ContentLockField.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-
-namespace Drupal\content_lock\Plugin\views\field;
-
-use Drupal\Component\Utility\Xss as UtilityXss;
-use Drupal\views\Plugin\views\field\Boolean;
-use Drupal\views\Render\ViewsRenderPipelineMarkup;
-use Drupal\views\ResultRow;
-
-/**
- * A handler to provide proper displays for dates.
- *
- * @group views_field_handlers
- *
- * @ViewsField("content_lock_field")
- */
-class ContentLockField extends Boolean {
-
-  /**
-   * Query.
-   */
-  public function query() {
-    $this->ensureMyTable();
-    $this->addAdditionalFields();
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function render(ResultRow $values) {
-    $value = $values->content_lock_timestamp ? TRUE : FALSE;
-    if (!empty($this->options['not'])) {
-      $value = !$value;
-    }
-
-    if ($this->options['type'] == 'custom') {
-      $custom_value = $value ? $this->options['type_custom_true'] : $this->options['type_custom_false'];
-      return ViewsRenderPipelineMarkup::create(UtilityXss::filterAdmin($custom_value));
-    }
-    elseif (isset($this->formats[$this->options['type']])) {
-      return $value ? $this->formats[$this->options['type']][0] : $this->formats[$this->options['type']][1];
-    }
-    else {
-      return $value ? $this->formats['yes-no'][0] : $this->formats['yes-no'][1];
-    }
-  }
-
-}
