diff --git a/views_filters_selective/views_filters_selective.module b/views_filters_selective/views_filters_selective.module
index fdafbb0..680ddf4 100644
--- a/views_filters_selective/views_filters_selective.module
+++ b/views_filters_selective/views_filters_selective.module
@@ -46,7 +46,8 @@ function views_filters_selective_views_filters_selective_handler() {
  * Callback implementation for generic filter.
  */
 function views_filters_selective_handler_filter($filter, $oids) {
-  return _views_filter_selective_query($filter, $filter->real_field, $filter->table, $oids);
+  $field_name = isset($filter->definition['real field'])?$filter->definition['real field']:$filter->real_field;
+  return _views_filter_selective_query($filter, $field_name, $filter->table, $oids);
 }
 
 /**
@@ -70,16 +71,12 @@ function _views_filter_selective_query($filter, $field_name, $table_name, $oids)
   if (!empty($filter->options['relationship']) && $filter->options['relationship'] != 'none') {
     $table_name = _views_filter_selective_query_relationship($filter->view->relationship[$filter->options['relationship']], $query);
   }
-
   $field_alias = $query->add_field($table_name, $field_name);
+
   $query->add_where_expression(0, "{$filter->view->base_table}.{$filter->view->base_field} IN (:oids)", array(':oids' => $oids));
   $query->set_distinct(TRUE, TRUE);
   $query->view = (object)array('name' => 'dummy'); // needed to avoid PHP notice
-  
-  if (!empty($views_data['table']['base']['database'])) {
-    $query->view->base_database = $views_data['table']['base']['database'];
-  }
-  
+
   // Return the results.
   $options = array();
   $result = $query->query()->execute();
diff --git a/views_filters_selective/views_handler_filter_selective.inc b/views_filters_selective/views_handler_filter_selective.inc
index b180d58..1d437ca 100644
--- a/views_filters_selective/views_handler_filter_selective.inc
+++ b/views_filters_selective/views_handler_filter_selective.inc
@@ -14,21 +14,27 @@ class views_handler_filter_selective extends views_handler_filter_in_operator {
         // Encode the values to keep special chars.
         $this->value_options = array_combine(array_map('urlencode', array_values($options)), array_values($options));
       }
-      // Modify value_options to include title for term node reference fields.
-      if ($this->definition['proxy'] == 'views_handler_filter_term_node_tid') {
-        foreach ($this->value_options as $tid) {
-          $result = db_query('SELECT name FROM {taxonomy_term_data} WHERE tid = :tid', array(':tid' => $tid));
-          $title = $result->fetchField();
-          if (!empty($title)) {
-            $this->value_options[$tid] = $title;
+      // Modify value_options to include title based on the filter type.
+      switch ($this->definition['proxy']) {
+        case 'views_handler_filter_term_node_tid':
+        case 'i18nviews_handler_filter_taxonomy_index_tid':
+          $result = db_query("SELECT tid, name FROM {taxonomy_term_data} WHERE tid IN (:tids)", array(':tids' => $this->value_options));
+          while ($row = $result->fetchObject()) {
+            if (!empty($row->name)) {
+              if ($this->definition['proxy'] == 'i18nviews_handler_filter_taxonomy_index_tid') {
+                $row->name = i18n_string('taxonomy:term:'. $row->tid .':name', $row->name);
+              }
+              $this->value_options[$row->tid] = $row->name;
+            }
           }
-        }
-        // Re-sort results based on title.
-        asort($this->value_options);
+
+          // Re-sort results based on title.
+          asort($this->value_options);
+          break;
       }
 
       // Remove empty values.
-      $this->value_options = array_diff_key($this->value_options , array("" => NULL)); 
+      $this->value_options = array_diff_key($this->value_options , array("" => NULL));
     }
   }
 
