diff --git a/entity_translation.admin.inc b/entity_translation.admin.inc index ac09c56..38c1541 100644 --- a/entity_translation.admin.inc +++ b/entity_translation.admin.inc @@ -86,7 +86,7 @@ function entity_translation_overview($entity_type, $entity, $callback = NULL) { // If we have a view path defined for the current entity get the switch // links based on it. if ($path) { - $links = language_negotiation_get_switch_links(LANGUAGE_TYPE_CONTENT, $path); + $links = _entity_translation_language_switch_links($path); } foreach ($languages as $language) { @@ -97,8 +97,8 @@ function entity_translation_overview($entity_type, $entity, $callback = NULL) { $add_path = "$base_path/edit/add/$source/$langcode"; if ($base_path) { - $add_links = language_negotiation_get_switch_links(LANGUAGE_TYPE_CONTENT, $add_path); - $edit_links = language_negotiation_get_switch_links(LANGUAGE_TYPE_CONTENT, $edit_path); + $add_links = _entity_translation_language_switch_links($add_path); + $edit_links = _entity_translation_language_switch_links($edit_path); } if (isset($translations->data[$langcode])) { diff --git a/entity_translation.module b/entity_translation.module index 38b5a22..fe88658 100644 --- a/entity_translation.module +++ b/entity_translation.module @@ -408,7 +408,7 @@ function entity_translation_menu_local_tasks_alter(&$data, $router_item, $root_p } foreach ($translations->data as $langcode => $translation) { - $links = language_negotiation_get_switch_links(LANGUAGE_TYPE_CONTENT, $handler->getEditPath($langcode)); + $links = _entity_translation_language_switch_links($handler->getEditPath($langcode)); $link = $links->links[$langcode]; $tab = array(); $tab['#theme'] = 'menu_local_task'; @@ -430,6 +430,17 @@ function entity_translation_menu_local_tasks_alter(&$data, $router_item, $root_p } } +function _entity_translation_language_switch_links($path) { + $links = language_negotiation_get_switch_links(LANGUAGE_TYPE_CONTENT, $path); + if (empty($links)) { + // If content language is set up to fall back to the interface language, + // then there will be no switch links for LANGUAGE_TYPE_CONTENT, ergo we + // also need to use interface switch links. + $links = language_negotiation_get_switch_links(LANGUAGE_TYPE_INTERFACE, $path); + } + return $links; +} + /** * TODO */ diff --git a/entity_translation.node.inc b/entity_translation.node.inc index f4460a3..d374759 100644 --- a/entity_translation.node.inc +++ b/entity_translation.node.inc @@ -125,7 +125,7 @@ function entity_translation_node_alter_form(&$form, $form_state, $handler) { function entity_translation_node_view($node, $build_mode) { if (!empty($node->translations) && drupal_multilingual() && entity_translation_node_supported_type($node->type)) { $path = 'node/' . $node->nid; - $links = language_negotiation_get_switch_links(LANGUAGE_TYPE_CONTENT, $path); + $links = _entity_translation_language_switch_links($path); if (is_object($links) && !empty($links->links)) { $handler = entity_translation_get_handler('node', $node);