Same name and namespace in other branches
  1. 8.9.x core/modules/content_translation/content_translation.module \content_translation_form_field_config_edit_form_alter()
  2. 9 core/modules/content_translation/content_translation.module \content_translation_form_field_config_edit_form_alter()

Implements hook_form_FORM_ID_alter() for 'field_config_edit_form'.

File

core/modules/content_translation/content_translation.module, line 486
Allows entities to be translated into different languages.

Code

function content_translation_form_field_config_edit_form_alter(array &$form, FormStateInterface $form_state) {
  $field = $form_state
    ->getFormObject()
    ->getEntity();
  $bundle_is_translatable = \Drupal::service('content_translation.manager')
    ->isEnabled($field
    ->getTargetEntityTypeId(), $field
    ->getTargetBundle());
  $form['translatable'] = [
    '#type' => 'checkbox',
    '#title' => t('Users may translate this field'),
    '#default_value' => $field
      ->isTranslatable(),
    '#weight' => -1,
    '#disabled' => !$bundle_is_translatable,
    '#access' => $field
      ->getFieldStorageDefinition()
      ->isTranslatable(),
  ];

  // Provide helpful pointers for administrators.
  if (\Drupal::currentUser()
    ->hasPermission('administer content translation') && !$bundle_is_translatable) {
    $toggle_url = Url::fromRoute('language.content_settings_page', [], [
      'query' => \Drupal::destination()
        ->getAsArray(),
    ])
      ->toString();
    $form['translatable']['#description'] = t('To configure translation for this field, <a href=":language-settings-url">enable language support</a> for this type.', [
      ':language-settings-url' => $toggle_url,
    ]);
  }
  if ($field
    ->isTranslatable()) {
    \Drupal::moduleHandler()
      ->loadInclude('content_translation', 'inc', 'content_translation.admin');
    $element = content_translation_field_sync_widget($field);
    if ($element) {
      $form['third_party_settings']['content_translation']['translation_sync'] = $element;
      $form['third_party_settings']['content_translation']['translation_sync']['#weight'] = -10;
    }
  }
}