function translation_entity_form_alter

Implements hook_form_alter().

File

drupal/core/modules/translation_entity/translation_entity.module, line 424
Allows entities to be translated into different languages.

Code

function translation_entity_form_alter(array &$form, array &$form_state) {
  if (($form_controller = translation_entity_form_controller($form_state)) && ($entity = $form_controller
    ->getEntity($form_state)) && !$entity
    ->isNew()) {
    $controller = translation_entity_controller($entity
      ->entityType());
    $controller
      ->entityFormAlter($form, $form_state, $entity);

    // @todo Move the following lines to the code generating the property form
    //   elements once we have an official #multilingual FAPI key.
    $translations = $entity
      ->getTranslationLanguages();
    $form_langcode = $form_controller
      ->getFormLangcode($form_state);

    // Handle fields shared between translations when there is at least one
    // translation available or a new one is being created.
    if (!$entity
      ->isNew() && (!isset($translations[$form_langcode]) || count($translations) > 1)) {
      if ($entity instanceof EntityNG) {
        foreach ($entity
          ->getPropertyDefinitions() as $property_name => $definition) {
          if (isset($form[$property_name])) {
            $form[$property_name]['#multilingual'] = !empty($definition['translatable']);
          }
        }
      }
      else {
        foreach (field_info_instances($entity
          ->entityType(), $entity
          ->bundle()) as $instance) {
          $field_name = $instance['field_name'];
          $field = field_info_field($field_name);
          $form[$field_name]['#multilingual'] = !empty($field['translatable']);
        }
      }
    }
  }
}