function ContentTranslationHooks::formFieldConfigEditFormAlter

Implements hook_form_FORM_ID_alter() for 'field_config_edit_form'.

File

core/modules/content_translation/src/Hook/ContentTranslationHooks.php, line 441

Class

ContentTranslationHooks
Hook implementations for content_translation.

Namespace

Drupal\content_translation\Hook

Code

public function formFieldConfigEditFormAlter(array &$form, FormStateInterface $form_state) : void {
    $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;
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.