diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc
index 43d1eac..c3dfd04 100644
--- a/core/includes/bootstrap.inc
+++ b/core/includes/bootstrap.inc
@@ -2987,6 +2987,28 @@ function _current_path($path = NULL) {
 }
 
 /**
+ * Return the current URL path of the page being viewed.
+ *
+ * Examples:
+ * - http://example.com/node/306 returns "node/306".
+ * - http://example.com/drupalfolder/node/306 returns "node/306" while
+ *   base_path() returns "/drupalfolder/".
+ * - http://example.com/path/alias (which is a path alias for node/306) returns
+ *   "node/306" as opposed to the path alias.
+ *
+ * @return
+ *   The current Drupal URL path.
+ *
+ * @see request_path()
+ */
+function current_path() {
+  if (drupal_container()->isScopeActive('request')) {
+    return drupal_container()->get('request')->attributes->get('system_path');
+  }
+  return _current_path();
+}
+
+/**
  * Returns a component of the current Drupal path.
  *
  * When viewing a page at the path "admin/structure/types", for example, arg(0)
@@ -3022,9 +3044,7 @@ function arg($index = NULL, $path = NULL) {
   $arguments = &$drupal_static_fast['arguments'];
 
   if (!isset($path)) {
-    // @todo The public function current_path() is not available during early
-    //   bootstrap.
-    $path = _current_path();
+    $path = current_path();
   }
   if (!isset($arguments[$path])) {
     $arguments[$path] = explode('/', $path);
diff --git a/core/includes/path.inc b/core/includes/path.inc
index ba7c034..c402a59 100644
--- a/core/includes/path.inc
+++ b/core/includes/path.inc
@@ -64,38 +64,6 @@ function drupal_match_path($path, $patterns) {
 }
 
 /**
- * Return the current URL path of the page being viewed.
- *
- * Examples:
- * - http://example.com/node/306 returns "node/306".
- * - http://example.com/drupalfolder/node/306 returns "node/306" while
- *   base_path() returns "/drupalfolder/".
- * - http://example.com/path/alias (which is a path alias for node/306) returns
- *   "node/306" as opposed to the path alias.
- *
- * This function is not available in hook_boot() so use request_path() instead.
- * However, be careful when doing that because in the case of Example #3
- * request_path() will contain "path/alias". If "node/306" is needed, calling
- * drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL) makes this function available.
- *
- * @return
- *   The current Drupal URL path.
- *
- * @see request_path()
- */
-function current_path() {
-  // @todo Remove the check for whether the request service exists and the
-  // fallback code below, once the path alias logic has been figured out in
-  // http://drupal.org/node/1269742.
-  if (drupal_container()->isScopeActive('request')) {
-    return drupal_container()->get('request')->attributes->get('system_path');
-  }
-  // If we are outside the request scope, fall back to using the path stored in
-  // _current_path().
-  return _current_path();
-}
-
-/**
  * Fetch a specific URL alias from the database.
  *
  * @param $conditions
diff --git a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
index 8cd5b49..62100ad 100644
--- a/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
+++ b/core/modules/node/lib/Drupal/node/Tests/NodeTranslationUITest.php
@@ -24,7 +24,7 @@ class NodeTranslationUITest extends EntityTranslationUITest {
    *
    * @var array
    */
-  public static $modules = array('language', 'translation_entity', 'node');
+  public static $modules = array('language', 'translation_entity', 'node', 'block');
 
   public static function getInfo() {
     return array(
diff --git a/core/modules/translation_entity/lib/Drupal/translation_entity/Tests/EntityTranslationUITest.php b/core/modules/translation_entity/lib/Drupal/translation_entity/Tests/EntityTranslationUITest.php
index 934ed62..f14d57b 100644
--- a/core/modules/translation_entity/lib/Drupal/translation_entity/Tests/EntityTranslationUITest.php
+++ b/core/modules/translation_entity/lib/Drupal/translation_entity/Tests/EntityTranslationUITest.php
@@ -77,6 +77,9 @@ protected function setupLanguages() {
       language_save(new Language(array('langcode' => $langcode)));
     }
     array_unshift($this->langcodes, language_default()->langcode);
+    $prefixes = language_negotiation_url_prefixes();
+    $prefixes['en'] = 'en';
+    language_negotiation_url_prefixes_save($prefixes);
   }
 
   /**
@@ -165,8 +168,9 @@ function testTranslationUI() {
 
     $controller = translation_entity_controller($this->entityType);
     $base_path = $controller->getBasePath($entity);
-    $path = $langcode . '/' . $base_path . '/translations/add/' . $default_langcode . '/' . $langcode;
-    $this->drupalPost($path, $this->getEditValues($values, $langcode), t('Save'));
+    $path = $base_path . '/translations/add/' . $default_langcode . '/' . $langcode;
+    $language = language_load($langcode);
+    $this->drupalPost($path, $this->getEditValues($values, $langcode), t('Save'), array('language' => $language));
     if ($this->testLanguageSelector) {
       $this->assertNoFieldByXPath('//select[@id="edit-langcode"]', NULL, 'Language selector correclty disabled on translations.');
     }
@@ -176,8 +180,9 @@ function testTranslationUI() {
     $langcode = 'fr';
     $source_langcode = 'it';
     $edit = array('source_langcode[source]' => $source_langcode);
-    $path = $langcode . '/' . $base_path . '/translations/add/' . $default_langcode . '/' . $langcode;
-    $this->drupalPost($path, $edit, t('Change'));
+    $path = $base_path . '/translations/add/' . $default_langcode . '/' . $langcode;
+    $language = language_load($langcode);
+    $this->drupalPost($path, $edit, t('Change'), array('language' => $language));
     $this->assertFieldByXPath("//input[@name=\"{$this->fieldName}[fr][0][value]\"]", $values[$source_langcode][$this->fieldName][0]['value'], 'Source language correctly switched.');
 
     // Add another translation and mark the other ones as outdated.
@@ -199,17 +204,17 @@ function testTranslationUI() {
 
     // Check that every translation has the correct "outdated" status.
     foreach ($this->langcodes as $enabled_langcode) {
-      $prefix = $enabled_langcode != $default_langcode ? $enabled_langcode . '/' : '';
-      $path = $prefix . $controller->getEditPath($entity);
-      $this->drupalGet($path);
+      $path = $controller->getEditPath($entity);
+      $options = array('language' => language_load($enabled_langcode));
+      $this->drupalGet($path, $options);
       if ($enabled_langcode == $langcode) {
         $this->assertFieldByXPath('//input[@name="translation[retranslate]"]', FALSE, 'The retranslate flag is not checked by default.');
       }
       else {
         $this->assertFieldByXPath('//input[@name="translation[translate]"]', TRUE, 'The translate flag is checked by default.');
         $edit = array('translation[translate]' => FALSE);
-        $this->drupalPost($path, $edit, t('Save'));
-        $this->drupalGet($path);
+        $this->drupalPost($path, $edit, t('Save'), $options);
+        $this->drupalGet($path, $options);
         $this->assertFieldByXPath('//input[@name="translation[retranslate]"]', FALSE, 'The retranslate flag is now shown.');
         $entity = entity_load($this->entityType, $entity->id(), TRUE);
         $this->assertFalse($entity->retranslate[$enabled_langcode], 'The "outdated" status has been correctly stored.');
@@ -217,8 +222,8 @@ function testTranslationUI() {
     }
 
     // Confirm and delete a translation.
-    $this->drupalPost($path, array(), t('Delete translation'));
-    $this->drupalPost(NULL, array(), t('Delete'));
+    $this->drupalPost($path, array(), t('Delete translation'), $options);
+    $this->drupalPost(NULL, array(), t('Delete'), $options);
     $entity = entity_load($this->entityType, $entity->id(), TRUE);
     $translations = $entity->getTranslationLanguages();
     $this->assertTrue(count($translations) == 2 && empty($translations[$enabled_langcode]), 'Translation successfully deleted.');
