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();
}
}
}