diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index da9f11b..1b5424f 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -1415,7 +1415,7 @@ function _install_get_version_info($version) {
       \.          # .
       (?P<minor>[0-9]+)    # Minor release number.
       \.          # .
-      (?P<patch>[0-9]+)    # Patch release number.
+      (?P<patch>[0-9x]+)    # Patch release number.
     )             #
     (             #
       -           # - separator for "extra" version information.
@@ -1828,6 +1828,21 @@ function install_check_translations($langcode, $server_pattern) {
     '%core' => \Drupal::CORE_COMPATIBILITY,
     '%language' => $langcode,
   );
+
+  // For dev releases, remove the '-dev' part and trust the translation server
+  // to fall back to the latest stable release for that branch.
+  // @todo refactor so that locale_translation_build_projects() use common code.
+  if (isset($variables['%version']) && strpos($variables['%version'], '-dev')) {
+    if (preg_match("/^(\d+\.x-\d+\.).*$/", $variables['%version'], $matches)) {
+      // Example matches: 8.x-1.x-dev, 8.x-1.0-alpha1+5-dev => 8.x-1.x
+      $variables['%version'] = $matches[1] . 'x';
+    }
+    elseif (preg_match("/^(\d+\.\d+\.).*$/", $variables['%version'], $matches)) {
+      // Example match: 8.0.0-dev => 8.0.x (Drupal core)
+      $variables['%version'] = $matches[1] . 'x';
+    }
+  }
+
   $translation_url = strtr($server_pattern, $variables);
 
   $elements = parse_url($translation_url);
diff --git a/core/modules/node/src/Tests/NodeTypeTranslationTest.php b/core/modules/node/src/Tests/NodeTypeTranslationTest.php
index 487a5e5..10c6865 100644
--- a/core/modules/node/src/Tests/NodeTypeTranslationTest.php
+++ b/core/modules/node/src/Tests/NodeTypeTranslationTest.php
@@ -14,10 +14,6 @@
 /**
  * Ensures that node types translation work correctly.
  *
- * Note that the child site is installed in French; therefore, when making
- * assertions on translated text it is important to provide a langcode. This
- * ensures the asserts pass regardless of the Drupal version.
- *
  * @group node
  */
 class NodeTypeTranslationTest extends WebTestBase {
@@ -109,16 +105,12 @@ public function testNodeTypeTranslation() {
     // Check the name is translated without admin theme for editing.
     $this->drupalPostForm('admin/appearance', array('use_admin_theme' => '0'), t('Save configuration'));
     $this->drupalGet("$langcode/node/add/$type");
-    // This is a Spanish page, so ensure the text asserted is translated in
-    // Spanish and not French by adding the langcode option.
-    $this->assertRaw(t('Create @name', array('@name' => $translated_name), array('langcode' => $langcode)));
+    $this->assertRaw(t('Create @name', array('@name' => $translated_name)));
 
     // Check the name is translated with admin theme for editing.
     $this->drupalPostForm('admin/appearance', array('use_admin_theme' => '1'), t('Save configuration'));
     $this->drupalGet("$langcode/node/add/$type");
-    // This is a Spanish page, so ensure the text asserted is translated in
-    // Spanish and not French by adding the langcode option.
-    $this->assertRaw(t('Create @name', array('@name' => $translated_name), array('langcode' => $langcode)));
+    $this->assertRaw(t('Create @name', array('@name' => $translated_name)));
   }
 
   /**
@@ -136,19 +128,17 @@ public function testNodeTypeTitleLabelTranslation() {
 
     // Assert that the title label is displayed on the translation form with the right value.
     $this->drupalGet("admin/structure/types/manage/$type/translate/$langcode/add");
-    $this->assertText('Edited title');
+    $this->assertRaw(t('Label'));
+    $this->assertRaw(t('Edited title'));
 
     // Translate the title label.
     $this->drupalPostForm(NULL, array("translation[config_names][core.base_field_override.node.$type.title][label]" => 'Translated title'), t('Save translation'));
 
-    // Assert that the right title label is displayed on the node add form. The
-    // translations are created in this test; therefore, the assertions do not
-    // use t(). If t() were used then the correct langcodes would need to be
-    // provided.
+    // Assert that the right title label is displayed on the node add form.
     $this->drupalGet("node/add/$type");
-    $this->assertText('Edited title');
+    $this->assertRaw(t('Edited title'));
     $this->drupalGet("$langcode/node/add/$type");
-    $this->assertText('Translated title');
+    $this->assertRaw(t('Translated title'));
   }
 
 }
