Index: apachesolr_multilingual.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/apachesolr_multilingual/apachesolr_multilingual.module,v
retrieving revision 1.5
diff -u -r1.5 apachesolr_multilingual.module
--- apachesolr_multilingual.module	26 Aug 2010 10:41:59 -0000	1.5
+++ apachesolr_multilingual.module	30 Aug 2010 15:11:13 -0000
@@ -118,7 +118,12 @@
       foreach ($fields as $field_name => $field) {
         if (strpos($field_name, 'ts_') === 0 && !empty($document->{$field_name})) {
           // deal with fields like cck using dynamic ts_* fields
-          $document->{'ts_' . $language . drupal_substr($field_name, 2)} = $document->{$field_name};
+
+          // 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};
+          }
         }
       }
 
@@ -139,7 +144,12 @@
                 foreach ($fields as $field_name => $field) {
                   if (strpos($field_name, 'ts_') === 0 && !empty($translation_document->{$field_name})) {
                     // deal with fields like cck using dynamic ts_* fields
-                    $document->{'ts_' . $translation_language . drupal_substr($field_name, 2)} = $translation_document->{$field_name};
+
+                    // 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};
+                    }
                   }
                 }
               }
@@ -193,6 +203,7 @@
       // Only indexed fields are searchable.
       if ($field->schema{0} == 'I') {
         if ('text' != $field->type && strpos($field->type, 'text') === 0 && strpos($field->type, 'textSpell') !== 0) {
+          // search for language identifier at last or second position
           $tmp = explode('_', $field_name);
           $lang = array_pop($tmp);
           if (empty($active_languages[$lang])) {
@@ -202,12 +213,15 @@
               unset($tmp[1]);
             }
           }
-          $base_field_name = implode('_', $tmp);
-          $form['apachesolr_search_query_fields'][$base_field_name]['#description'] = t('Recommended to "Omit". Use language specific fields instead.');
-          $form['apachesolr_search_query_fields'][$field_name]['#access'] = TRUE;
 
-          if (!array_key_exists($field_name, $qf)) {
-            $form['apachesolr_search_query_fields'][$field_name]['#default_value'] = isset($qf[$base_field_name]) ? $qf[$base_field_name] : '0';
+          if (!empty($active_languages[$lang])) {
+            $base_field_name = implode('_', $tmp);
+            $form['apachesolr_search_query_fields'][$base_field_name]['#description'] = t('Recommended to "Omit". Use language specific fields instead.');
+            $form['apachesolr_search_query_fields'][$field_name]['#access'] = TRUE;
+
+            if (!array_key_exists($field_name, $qf)) {
+              $form['apachesolr_search_query_fields'][$field_name]['#default_value'] = isset($qf[$base_field_name]) ? $qf[$base_field_name] : '0';
+            }
           }
         }
       }
@@ -227,6 +241,7 @@
     // Only indexed fields are searchable.
     if ($field->schema{0} == 'I') {
       if ('text' != $field->type && strpos($field->type, 'text') === 0 && strpos($field->type, 'textSpell') !== 0) {
+        // serach for language identifier at last or second position within the field name
         $tmp = explode('_', $field_name);
         $lang = array_pop($tmp);
         if (empty($active_languages[$lang])) {
