--- i18nviews.module.orig	2008-12-02 10:53:03.000000000 -0200
+++ i18nviews.module	2008-12-02 13:08:43.000000000 -0200
@@ -149,3 +149,36 @@ function i18ntaxonomy_views_handler_fiel
   }
   return $links;
 }
+
+/**
+ * Implement hook_form_alter to localize exposed forms
+ *
+ */
+function i18nviews_form_alter(&$form, $form_state, $form_id) {
+  if ($form_id != 'views_exposed_form') return;
+  global $language;  
+  // Localise taxonomy terms
+  foreach(element_children($form) as $key) {
+    if ($key == 'tid' || preg_match('/^tid_\d+/', $key) || preg_match('/^term_node_tid_depth_\d+/', $key)) {
+      if (is_array($form[$key]['#options'])) {
+        foreach ($form[$key]['#options'] as $index => $opt) {
+          $term_language =  db_result(db_query('SELECT language FROM {term_data} WHERE tid = %d', $index));
+          if($index != 'All' && $language->language != $term_language && !empty($term_language)) {
+            // Remove translated terms
+            unset($form[$key]['#options'][$index]);
+          }
+        }
+      }
+    }
+  }
+    
+  // Localize labels
+  if (!empty($form['#info'])) {
+    foreach(element_children($form['#info']) as $key) {
+      if (!empty($form['#info'][$key]['label'])) {
+        $type = str_replace('views-exposed-form-', '', $form['#id']) . ':' . $key;
+        $form['#info'][$key]['label'] = tt("views:exposed:$type", $form['#info'][$key]['label']);
+      }
+    }
+  }
+}
