diff --git a/apachesolr_multilingual.module b/apachesolr_multilingual.module
index 90827e5..72faffa 100644
--- a/apachesolr_multilingual.module
+++ b/apachesolr_multilingual.module
@@ -129,7 +129,17 @@ function apachesolr_multilingual_apachesolr_index_documents_alter(&$documents, $
             foreach ($translations as $node_stub) {
               if ($node_stub->nid != $document->entity_id) {
                 if ($translation_node = node_load($node_stub->nid)) {
-                  apachesolr_multilingual_index_node_translation($document, $translation_node, $env_id);
+                  $reentrance = FALSE;
+                  // apachesolr_convert_entity_to_documents() calls hook_apachesolr_index_documents_alter().
+                  // The variable $reentrance avoids an endless recursion.
+                  $tmp_documents = apachesolr_convert_entity_to_documents($translation_node, 'node', $env_id);
+                  $reentrance = TRUE;
+
+                  // Handle multiple documents is a future use case of apachesolr we don't care about now.
+                  $translation_document = reset($tmp_documents);
+
+                  apachesolr_multilingual_fire_callbacks($translation_document, $translation_node, 'node', 'document callback', $env_id);
+                  apachesolr_multilingual_copy_common_to_i18n_fields($translation_document, $document);
                 }
               }
             }
@@ -157,6 +167,7 @@ function apachesolr_multilingual_apachesolr_index_documents_alter(&$documents, $
               $tmp_documents = apachesolr_convert_entity_to_documents($entity, $entity_type, $env_id);
               $reentrance = TRUE;
 
+              // Handle multiple documents is a future use case of apachesolr we don't care about now.
               $basic_fields = reset($tmp_documents);
 
               foreach ($basic_fields->getFieldNames() as $field) {
@@ -168,19 +179,7 @@ function apachesolr_multilingual_apachesolr_index_documents_alter(&$documents, $
               // when original document is removed. See apachesolr_index_delete_entity_from_index().
               $additional_documents[$id]->sm_parent_document_id = array($document->id);
 
-              // See _apachesolr_index_process_entity_get_document().
-              $bundle = $entity->type;
-              //Get the callback array to add stuff to the document
-              $document_callbacks = apachesolr_entity_get_callback($entity_type, 'document callback', $bundle);
-              $tmp_documents = array();
-              foreach ($document_callbacks as $document_callback) {
-                // Call a type-specific callback to add stuff to the document.
-                $tmp_documents = array_merge($tmp_documents, $document_callback($additional_documents[$id], $entity, $entity_type, $env_id));
-                // Generic use case for future reference. Callbacks can
-                // allow you to send back multiple documents.
-                // @see apachesolr_index_node_solr_document()
-                // $tmp_documents is not in use yet.
-              }
+              apachesolr_multilingual_fire_callbacks($additional_documents[$id], $entity, $entity_type, 'document callback', $env_id);
 
               // Recursive call to deal with 'apachesolr_multilingual_index_translations' aka CLIR and title field, see above and below
               apachesolr_multilingual_apachesolr_index_documents_alter($additional_documents, $entity, $entity_type, $env_id);
@@ -256,11 +255,20 @@ function apachesolr_multilingual_copy_common_to_i18n_fields($src_document, $dst_
   }
 }
 
-function apachesolr_multilingual_index_node_translation($document, $translation_node, $env_id) {
-  $translation_document = new ApacheSolrDocument();
-  $translation_document->ss_language = $translation_node->language;
-  apachesolr_index_node_solr_document($translation_document, $translation_node, 'node', $env_id);
-  apachesolr_multilingual_copy_common_to_i18n_fields($translation_document, $document);
+function apachesolr_multilingual_fire_callbacks($document, $entity, $entity_type, $callback_name, $env_id) {
+  // See _apachesolr_index_process_entity_get_document().
+  $bundle = $entity->type;
+  //Get the callback array to add stuff to the document
+  $document_callbacks = apachesolr_entity_get_callback($entity_type, $callback_name, $bundle);
+  $tmp_documents = array();
+  foreach ($document_callbacks as $document_callback) {
+    // Call a type-specific callback to add stuff to the document.
+    $tmp_documents = array_merge($tmp_documents, $document_callback($document, $entity, $entity_type, $env_id));
+    // Generic use case for future reference. Callbacks can
+    // allow you to send back multiple documents.
+    // @see apachesolr_index_node_solr_document()
+    // $tmp_documents is not in use yet.
+  }
 }
 
 /**
