Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.956
diff -u -F^f -r1.956 node.module
--- modules/node/node.module	14 Apr 2008 17:48:38 -0000	1.956
+++ modules/node/node.module	19 Apr 2008 08:53:39 -0000
@@ -1215,6 +1215,16 @@ function node_search($op = 'search', $ke
         $keys = search_query_insert($keys, 'category');
       }
 
+      if ($languages = search_query_extract($keys, 'language')) {
+        $categories = array();
+        foreach (explode(',', $languages) as $l) {
+          $categories[] = "n.language = '%s'";
+          $arguments1[] = $l;
+        }
+        $conditions1 .= ' AND (' . implode(' OR ', $categories) . ')';
+        $keys = search_query_insert($keys, 'language');
+      }
+
       // Build ranking expression (we try to map each parameter to a
       // uniform distribution in the range 0..1).
       $ranking = array();
@@ -1871,6 +1881,22 @@ function node_form_alter(&$form, $form_s
       '#suffix' => '</div>',
     );
 
+    // Language:
+    $language_options = array(0 => t('All'));
+    foreach (language_list('language') as $key => $object) {
+      $language_options[$key] = $object->name;
+    }
+    if (count($language_options) > 2) {
+      $form['advanced']['language'] = array(
+        '#type' => 'select',
+        '#title' => t('Language'),
+        '#prefix' => '<div class="criterion">',
+        '#suffix' => '</div>',
+        '#options' => $language_options,
+      );
+    }
+    
+
     $form['#validate'][] = 'node_search_validate';
   }
 }
@@ -1894,6 +1920,9 @@ function node_search_validate($form, &$f
   if (isset($form_state['values']['category']) && is_array($form_state['values']['category'])) {
     $keys = search_query_insert($keys, 'category', implode(',', $form_state['values']['category']));
   }
+  if ($form_state['values']['language']) {
+    $keys = search_query_insert($keys, 'language', $form_state['values']['language']);
+  }
   if ($form_state['values']['or'] != '') {
     if (preg_match_all('/ ("[^"]+"|[^" ]+)/i', ' ' . $form_state['values']['or'], $matches)) {
       $keys .= ' ' . implode(' OR ', $matches[1]);
