diff --git a/core/includes/theme.inc b/core/includes/theme.inc
index d8f3136..a88fca5 100644
--- a/core/includes/theme.inc
+++ b/core/includes/theme.inc
@@ -1364,7 +1364,7 @@ function template_preprocess_page(&$variables) {
   // Move some variables to the top level for themer convenience and template cleanliness.
   $variables['title'] = $variables['page']['#title'];
 
-  foreach (system_region_list(\Drupal::theme()->getActiveTheme()->getName()) as $region_key => $region_name) {
+  foreach (system_region_list(\Drupal::theme()->getActiveTheme()->getName(), REGIONS_ALL, FALSE) as $region_key) {
     if (!isset($variables['page'][$region_key])) {
       $variables['page'][$region_key] = array();
     }
diff --git a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php
index addd13c..6c1a1fb 100644
--- a/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php
+++ b/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php
@@ -225,8 +225,8 @@ protected function prepare(array $main_content, Request $request, RouteMatchInte
 
     // $page is now fully built. Find all non-empty page regions, and add a
     // theme wrapper function that allows them to be consistently themed.
-    $regions = system_region_list(\Drupal::theme()->getActiveTheme()->getName());
-    foreach (array_keys($regions) as $region) {
+    $regions = system_region_list(\Drupal::theme()->getActiveTheme()->getName(), REGIONS_ALL, FALSE);
+    foreach ($regions as $region) {
       if (!empty($page[$region])) {
         $page[$region]['#theme_wrappers'][] = 'region';
         $page[$region]['#region'] = $region;
diff --git a/core/modules/block/src/BlockRepository.php b/core/modules/block/src/BlockRepository.php
index 485a66f..61d364e 100644
--- a/core/modules/block/src/BlockRepository.php
+++ b/core/modules/block/src/BlockRepository.php
@@ -47,13 +47,13 @@ public function __construct(EntityManagerInterface $entity_manager, ThemeManager
   }
 
   /**
-   * Returns the human-readable list of regions keyed by machine name.
+   * Returns the list of regions keyed by machine name.
    *
    * @return array
-   *   An array of human-readable region names keyed by machine name.
+   *   An array of region machine names keyed by machine name.
    */
   protected function getRegionNames() {
-    return system_region_list($this->getTheme());
+    return system_region_list($this->getTheme(), REGIONS_ALL, FALSE);
   }
 
   /**
@@ -71,7 +71,7 @@ protected function getTheme() {
    */
   public function getVisibleBlocksPerRegion(array $contexts) {
     // Build an array of the region names in the right order.
-    $empty = array_fill_keys(array_keys($this->getRegionNames()), array());
+    $empty = array_fill_keys($this->getRegionNames(), array());
 
     $full = array();
     foreach ($this->blockStorage->loadByProperties(array('theme' => $this->getTheme())) as $block_id => $block) {
diff --git a/core/modules/block/tests/src/Unit/BlockRepositoryTest.php b/core/modules/block/tests/src/Unit/BlockRepositoryTest.php
index f589e82..1cd639b 100644
--- a/core/modules/block/tests/src/Unit/BlockRepositoryTest.php
+++ b/core/modules/block/tests/src/Unit/BlockRepositoryTest.php
@@ -69,9 +69,9 @@ protected function setUp() {
     $this->blockRepository->expects($this->once())
       ->method('getRegionNames')
       ->willReturn([
-        'top' => 'Top',
-        'center' => 'Center',
-        'bottom' => 'Bottom',
+        'top' => 'top',
+        'center' => 'center',
+        'bottom' => 'bottom',
       ]);
   }
 
diff --git a/core/modules/system/system.module b/core/modules/system/system.module
index 8acaf33..dbbc1bb 100644
--- a/core/modules/system/system.module
+++ b/core/modules/system/system.module
@@ -1042,10 +1042,12 @@ function _system_default_theme_features() {
  * @param $show
  *   Possible values: REGIONS_ALL or REGIONS_VISIBLE. Visible excludes hidden
  *   regions.
+ * @param bool $labels
+ *   Whether to return the translated labels as part of the array.
  * @return
  *   An array of regions in the form $region['name'] = 'description'.
  */
-function system_region_list($theme, $show = REGIONS_ALL) {
+function system_region_list($theme, $show = REGIONS_ALL, $labels = TRUE) {
   if (!$theme instanceof Extension) {
     $themes = \Drupal::service('theme_handler')->listInfo();
     if (!isset($themes[$theme])) {
@@ -1058,7 +1060,12 @@ function system_region_list($theme, $show = REGIONS_ALL) {
   // If requested, suppress hidden regions. See block_admin_display_form().
   foreach ($info['regions'] as $name => $label) {
     if ($show == REGIONS_ALL || !isset($info['regions_hidden']) || !in_array($name, $info['regions_hidden'])) {
-      $list[$name] = t($label);
+      if ($labels) {
+        $list[$name] = t($label);
+      }
+      else {
+        $list[$name] = $name;
+      }
     }
   }
 
