You are here

function entity_translation_i18n_menu_menu_link_alter in Entity Translation 7

Implements hook_menu_link_alter().

File

entity_translation_i18n_menu/entity_translation_i18n_menu.module, line 99
The menu specific translation functions and hook implementations.

Code

function entity_translation_i18n_menu_menu_link_alter(&$link) {
  if (!empty($link['mlid']) && !empty($link['entity_language']) && $link['language'] == LANGUAGE_NONE && entity_translation_i18n_menu_item($link)) {
    $sources = array();
    foreach (array(
      'title' => 'link_title',
      'description' => 'description',
    ) as $key => $link_field) {
      $name = array(
        'menu',
        'item',
        $link['mlid'],
        $key,
      );
      $source = i18n_string_get_source($name);

      // The source might not exist yet.
      $sources[$key] = is_object($source) ? $source
        ->get_string() : $link[$link_field];
    }

    // If the link values to be saved are translated, we need to revert the
    // localized menu link back to the original. This way they can be saved
    // without accidentially storing a translation string as a source string.
    // The translated values are put in a separate key for later reference.
    if ($link['entity_language'] != i18n_string_source_language()) {
      $link['entity_translation_strings'] = array(
        'title' => $link['link_title'],
        'description' => $link['description'],
      );
      $link['link_title'] = $sources['title'];
      $link['options']['attributes']['title'] = $sources['description'];
    }
    else {
      $link['entity_translation_strings'] = array(
        'title' => $sources['title'],
        'description' => $sources['description'],
      );
      $link['entity_language'] = $link['entity_translation_handler']
        ->getLanguage();
    }
  }
}