diff --git a/apachesolr_multilingual.module b/apachesolr_multilingual.module
index 919c8da..0141a22 100644
--- a/apachesolr_multilingual.module
+++ b/apachesolr_multilingual.module
@@ -130,16 +130,15 @@ function apachesolr_multilingual_apachesolr_update_index(&$document, $node, $nam
         $document->{'tags_inline_' . $language} = $document->tags_inline;
       }
 
-      $solr = apachesolr_get_solr();
-      $fields = $solr->getFields();
-      foreach ($fields as $field_name => $field) {
-        if (strpos($field_name, 'ts_') === 0 && isset($document->{$field_name}) && !empty($document->{$field_name})) {
+      $fields = $document->getFieldNames();
+      foreach ($fields as $field_name) {
+        if ((strpos($field_name, 'ts_') === 0 || strpos($field_name, 'tm_') === 0) && isset($document->{$field_name}) && !empty($document->{$field_name})) {
           // deal with fields like cck using dynamic ts_* fields
 
           // search for existing language identifier at second position
           $tmp = explode('_', $field_name);
           if ($language != $tmp[1]) {
-            $document->{'ts_' . $language . drupal_substr($field_name, 2)} = $document->{$field_name};
+            $document->{$tmp[0] . '_' . $language . drupal_substr($field_name, 2)} = $document->{$field_name};
           }
         }
       }
@@ -172,14 +171,14 @@ function apachesolr_multilingual_apachesolr_update_index(&$document, $node, $nam
                   $document->{'tags_inline_' . $translation_language} = $translation_document->tags_inline;
                 }
 
-                foreach ($fields as $field_name => $field) {
-                  if (strpos($field_name, 'ts_') === 0 && isset($translation_document->{$field_name}) && !empty($translation_document->{$field_name})) {
+                foreach ($fields as $field_name) {
+                  if ((strpos($field_name, 'ts_') === 0 || strpos($field_name, 'tm_') === 0) && isset($translation_document->{$field_name}) && !empty($translation_document->{$field_name})) {
                     // deal with fields like cck using dynamic ts_* fields
 
                     // search for existing language identifier at second position
                     $tmp = explode('_', $field_name);
                     if ($translation_language != $tmp[1]) {
-                      $document->{'ts_' . $translation_language . drupal_substr($field_name, 2)} = $translation_document->{$field_name};
+                      $document->{$tmp[0] . '_' . $translation_language . drupal_substr($field_name, 2)} = $translation_document->{$field_name};
                     }
                   }
                 }
