diff --git a/core/modules/content_translation/content_translation.admin.inc b/core/modules/content_translation/content_translation.admin.inc index b65eeea..cddd7e1 100644 --- a/core/modules/content_translation/content_translation.admin.inc +++ b/core/modules/content_translation/content_translation.admin.inc @@ -87,11 +87,16 @@ function _content_translation_form_language_content_settings_form_alter(array &$ $entity_type = $entity_manager->getDefinition($entity_type_id); $storage_definitions = $entity_type instanceof ContentEntityTypeInterface ? $entity_manager->getFieldStorageDefinitions($entity_type_id) : array(); + $entity_type_translatable = $entity_type->isTranslatable(); + $form['settings'][$entity_type_id]['#translatable'] = $entity_type_translatable; foreach (entity_get_bundles($entity_type_id) as $bundle => $bundle_info) { // Here we do not want the widget to be altered and hold also the "Enable // translation" checkbox, which would be redundant. Hence we add this key // to be able to skip alterations. $form['settings'][$entity_type_id][$bundle]['settings']['language']['#content_translation_skip_alter'] = TRUE; + if (!$entity_type_translatable) { + continue; + } $fields = $entity_manager->getFieldDefinitions($entity_type_id, $bundle); if ($fields) { @@ -139,13 +144,12 @@ 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. + $element = $variables['element']; if (!\Drupal::currentUser()->hasPermission('administer content translation')) { return; } - $element = $variables['element']; $build = &$variables['build']; - array_unshift($build['#header'], array('data' => t('Translatable'), 'class' => array('translatable'))); $rows = array(); @@ -167,6 +171,7 @@ function _content_translation_preprocess_language_content_settings_table(&$varia } else { $translatable = array( + 'data' => t('N/A'), 'class' => array('untranslatable'), ); array_unshift($rows[$bundle]['data'], $translatable); diff --git a/core/modules/language/src/Form/ContentLanguageSettingsForm.php b/core/modules/language/src/Form/ContentLanguageSettingsForm.php index 13d15e9..32ab95c 100644 --- a/core/modules/language/src/Form/ContentLanguageSettingsForm.php +++ b/core/modules/language/src/Form/ContentLanguageSettingsForm.php @@ -7,6 +7,7 @@ namespace Drupal\language\Form; +use Drupal\Core\Entity\ContentEntityTypeInterface; use Drupal\Core\Entity\EntityManagerInterface; use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; @@ -62,7 +63,8 @@ public function buildForm(array $form, FormStateInterface $form_state) { $bundles = $this->entityManager->getAllBundleInfo(); $language_configuration = array(); foreach ($entity_types as $entity_type_id => $entity_type) { - if (!$entity_type->isTranslatable()) { + $langcodeKey = $entity_type->getKey('langcode'); + if (!$entity_type instanceof ContentEntityTypeInterface || empty($langcodeKey)) { continue; } $labels[$entity_type_id] = $entity_type->getLabel() ?: $entity_type_id;