diff --git a/core/modules/config_translation/src/Form/ConfigTranslationFormBase.php b/core/modules/config_translation/src/Form/ConfigTranslationFormBase.php
index 5b6125a..acb1c41 100644
--- a/core/modules/config_translation/src/Form/ConfigTranslationFormBase.php
+++ b/core/modules/config_translation/src/Form/ConfigTranslationFormBase.php
@@ -9,12 +9,14 @@
 
 use Drupal\config_translation\ConfigMapperManagerInterface;
 use Drupal\Core\Config\Config;
+use Drupal\Core\Config\Schema\ArrayElement;
 use Drupal\Core\Config\Schema\Element;
 use Drupal\Core\Config\TypedConfigManagerInterface;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Form\BaseFormIdInterface;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Language\LanguageInterface;
+use Drupal\Core\TypedData\DataDefinition;
 use Drupal\language\Config\LanguageConfigOverride;
 use Drupal\language\ConfigurableLanguageManagerInterface;
 use Drupal\locale\StringStorageInterface;
@@ -267,16 +269,17 @@ public function submitForm(array &$form, array &$form_state) {
    * @return array
    *   An associative array containing the structure of the form.
    */
-  protected function buildConfigForm(Element $schema, $config_data, $base_config_data, $open = TRUE, $base_key = '') {
+  protected function buildConfigForm(ArrayElement $schema, $config_data, $base_config_data, $open = TRUE, $base_key = '') {
     $build = array();
     foreach ($schema as $key => $element) {
+      /** @var \Drupal\Core\Config\Schema\Element $element */
       // Make the specific element key, "$base_key.$key".
       $element_key = implode('.', array_filter(array($base_key, $key)));
       $definition = $element->getDataDefinition();
-      if (!$definition->getLabel()) {
+      if (!$definition->getLabel() && $definition instanceof DataDefinition) {
         $definition->setLabel($this->t('N/A'));
       }
-      if ($element instanceof Element) {
+      if ($element instanceof ArrayElement) {
         // Build sub-structure and include it with a wrapper in the form
         // if there are any translatable elements there.
         $sub_build = $this->buildConfigForm($element, $config_data[$key], $base_config_data[$key], FALSE, $element_key);
@@ -309,8 +312,6 @@ protected function buildConfigForm(Element $schema, $config_data, $base_config_d
         }
       }
       else {
-        $definition = $element->getDataDefinition();
-
         // Invoke hook_config_translation_type_info_alter() implementations to
         // alter the configuration types.
         $definitions = array(
@@ -332,7 +333,7 @@ protected function buildConfigForm(Element $schema, $config_data, $base_config_d
           '#title' => $this->t(
             '!label <span class="visually-hidden">(!source_language)</span>',
             array(
-              '!label' => $this->t($definition['label']),
+              '!label' => $this->t($definition->getLabel()),
               '!source_language' => $this->sourceLanguage->name,
             )
           ),
