--- i18ntaxonomy.module.orig	2008-12-19 12:18:20.000000000 +0100
+++ i18ntaxonomy.module	2008-12-19 12:18:40.000000000 +0100
@@ -386,6 +386,37 @@ function i18ntaxonomy_form_alter(&$form,
       }
       break;
 
+    case 'views_exposed_form':
+      // 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)) && is_array($form[$key]['#options']) {
+          foreach ($form[$key]['#options'] as $index => $opt) {
+            foreach ($opt->option as $opt_key => $opt_value) {
+              $prefix = '';
+              if (preg_match('/^(-+?)(.*)$/', $opt_value, $matches)) {
+                $opt_value = $matches[2];
+                $prefix = $matches[1];
+              }
+              $form[$key]['#options'][$index]->option[$opt_key] = $prefix . tt("taxonomy:term:$opt_key:name", $opt_value);
+            }
+            $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']);
+          }
+        }
+      break;
+
     default:
       if (isset($form['type']) && $form['type']['#value'] .'_node_form' == $form_id
         && ($node = $form['#node']) && isset($form['taxonomy']) ) {
