diff --git a/core/modules/content_translation/content_translation.admin.inc b/core/modules/content_translation/content_translation.admin.inc
index a568182..d892d13 100644
--- a/core/modules/content_translation/content_translation.admin.inc
+++ b/core/modules/content_translation/content_translation.admin.inc
@@ -60,7 +60,8 @@ function content_translation_field_sync_widget(FieldDefinitionInterface $field)
 function _content_translation_form_language_content_settings_form_alter(array &$form, array &$form_state) {
   // Inject into the content language settings the translation settings if the
   // user has the required permission.
-  if (!user_access('administer content translation')) {
+  $account = \Drupal::currentUser();
+  if (!$account->hasPermission('administer content translation')) {
     return;
   }
 
@@ -146,7 +147,8 @@ function _content_translation_form_language_content_settings_form_alter(array &$
 function _content_translation_preprocess_language_content_settings_table(&$variables) {
   // Alter the 'build' variable injecting the translation settings if the user
   // has the required permission.
-  if (!user_access('administer content translation')) {
+  $account = \Drupal::currentUser();
+  if (!$account->hasPermission('administer content translation')) {
     return;
   }
 
diff --git a/core/modules/content_translation/content_translation.module b/core/modules/content_translation/content_translation.module
index 0d476cb..3c5169d 100644
--- a/core/modules/content_translation/content_translation.module
+++ b/core/modules/content_translation/content_translation.module
@@ -308,8 +308,15 @@ function _content_translation_menu_strip_loaders($path) {
  *   The entity whose translation overview should be displayed.
  */
 function content_translation_translate_access(EntityInterface $entity) {
+  global $user;
+
+  if (!isset($account)) {
+    // In the installer request session is not set, so we have to fall back
+    // to the global $user. In all other cases the session key is preferred.
+    $account = \Drupal::currentUser() ?: $user;
+  }
   return $entity instanceof ContentEntityInterface && empty($entity->getUntranslated()->language()->locked) && language_multilingual() && $entity->isTranslatable() &&
-    (user_access('create content translations') || user_access('update content translations') || user_access('delete content translations'));
+    ($account->hasPermission('create content translations') || $account->hasPermission('update content translations') || $account->hasPermission('delete content translations'));
 }
 
 /**
@@ -324,13 +331,20 @@ function content_translation_translate_access(EntityInterface $entity) {
  *   the current user.
  */
 function content_translation_view_access(EntityInterface $entity, $langcode, AccountInterface $account = NULL) {
+  global $user;
+
+  if (!isset($account)) {
+    // In the installer request session is not set, so we have to fall back
+    // to the global $user. In all other cases the session key is preferred.
+    $account = \Drupal::currentUser() ?: $user;
+  }
   $entity_type = $entity->entityType();
   $info = $entity->entityInfo();
   $permission = "translate $entity_type";
   if (!empty($info['permission_granularity']) && $info['permission_granularity'] == 'bundle') {
     $permission = "translate {$entity->bundle()} $entity_type";
   }
-  return !empty($entity->translation[$langcode]['status']) || user_access('translate any entity', $account) || user_access($permission, $account);
+  return !empty($entity->translation[$langcode]['status']) || $account->hasPermission('translate any entity', $account) || $account->hasPermission($permission, $account);
 }
 
 /**
@@ -902,7 +916,14 @@ function content_translation_enable_widget($entity_type, $bundle, array &$form,
  *   Processed language configuration element.
  */
 function content_translation_language_configuration_element_process(array $element, array &$form_state, array &$form) {
-  if (empty($element['#content_translation_skip_alter']) && user_access('administer content translation')) {
+  global $user;
+
+  if (!isset($account)) {
+    // In the installer request session is not set, so we have to fall back
+    // to the global $user. In all other cases the session key is preferred.
+    $account = \Drupal::currentUser() ?: $user;
+  }
+  if (empty($element['#content_translation_skip_alter']) && $account->hasPermission('administer content translation')) {
     $form_state['content_translation']['key'] = $element['#name'];
     $context = $form_state['language'][$element['#name']];
 
diff --git a/core/modules/content_translation/content_translation.pages.inc b/core/modules/content_translation/content_translation.pages.inc
index fca8b9a..26d32a3 100644
--- a/core/modules/content_translation/content_translation.pages.inc
+++ b/core/modules/content_translation/content_translation.pages.inc
@@ -23,8 +23,8 @@ function content_translation_overview(EntityInterface $entity) {
   $languages = language_list();
   $original = $entity->getUntranslated()->language()->id;
   $translations = $entity->getTranslationLanguages();
-  $field_ui = \Drupal::moduleHandler()->moduleExists('field_ui') && user_access('administer ' . $entity->entityType() . ' fields');
-
+  $account = \Drupal::currentUser();
+  $field_ui = \Drupal::moduleHandler()->moduleExists('field_ui') && $account->hasPermission('administer ' . $entity->entityType() . ' fields');
   $rel = array();
   foreach (array('canonical', 'edit-form', 'drupal:content-translation-overview') as $name) {
     $rel[$name] = $entity->uri($name);
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php b/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
index 6d14c1b..e2befb1 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/ContentTranslationController.php
@@ -63,10 +63,11 @@ public function getTranslationAccess(EntityInterface $entity, $op) {
     $translate_permission = TRUE;
     // If no permission granularity is defined this entity type does not need an
     // explicit translate permission.
-    if (!user_access('translate any entity') && !empty($info['permission_granularity'])) {
-      $translate_permission = user_access($info['permission_granularity'] == 'bundle' ? "translate {$entity->bundle()} {$entity->entityType()}" : "translate {$entity->entityType()}");
+    $account = \Drupal::currentUser();
+    if (!$account->hasPermission('translate any entity') && !empty($info['permission_granularity'])) {
+      $translate_permission = $account->hasPermission($info['permission_granularity'] == 'bundle' ? "translate {$entity->bundle()} {$entity->entityType()}" : "translate {$entity->entityType()}");
     }
-    return $translate_permission && user_access("$op content translations");
+    return $translate_permission && $account->hasPermission("$op content translations");
   }
 
   /**
