diff --git a/modules/taxonomy/views_handler_filter_term_node_tid.inc b/modules/taxonomy/views_handler_filter_term_node_tid.inc
index 7eb868f..7dede32 100644
--- a/modules/taxonomy/views_handler_filter_term_node_tid.inc
+++ b/modules/taxonomy/views_handler_filter_term_node_tid.inc
@@ -98,15 +98,12 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on
     if ($this->options['type'] == 'textfield') {
       $default = '';
       if ($this->value) {
-        $result = db_select('taxonomy_term_data', 'td')
-          ->fields('td')
-          ->condition('td.tid', $this->value)
-          ->execute();
-        foreach ($result as $term) {
+        $result = taxonomy_term_load_multiple($this->value);
+        foreach ($result as $entity_term) {
           if ($default) {
             $default .= ', ';
           }
-          $default .= $term->name;
+          $default .= entity_label('taxonomy_term', $entity_term);
         }
       }
 
@@ -126,29 +123,43 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on
         $options = array();
 
         if ($tree) {
+          // Translation system needs full entity objects, so we have access to label.
           foreach ($tree as $term) {
+            $tids[] = $term->tid;
+          }
+          $entities = taxonomy_term_load_multiple($tids);
+
+          foreach ($tree as $entity_term) {
             $choice = new stdClass();
-            $choice->option = array($term->tid => str_repeat('-', $term->depth) . $term->name);
+            $choice->option = array($entity_term->tid => str_repeat('-', $entity_term->depth) . entity_label('taxonomy_term', $entities[$entity_term->tid]));
             $options[] = $choice;
           }
         }
       }
       else {
         $options = array();
-        $query = db_select('taxonomy_term_data', 'td');
-        $query->innerJoin('taxonomy_vocabulary', 'tv', 'td.vid = tv.vid');
-        $query->fields('td');
-        $query->orderby('tv.weight');
-        $query->orderby('tv.name');
-        $query->orderby('td.weight');
-        $query->orderby('td.name');
-        $query->addTag('term_access');
+        $query = new EntityFieldQuery();
+        $query->entityCondition('entity_type', 'taxonomy_term')
+          ->propertyOrderBy('vid') // Equivalent of sorting by vocab name, per EFQ docs.
+          ->propertyOrderBy('weight')
+          ->propertyOrderBy('name')
+          ->addTag('term_access');
+
         if ($this->options['limit']) {
-          $query->condition('tv.machine_name', $vocabulary->machine_name);
+          $query->entityCondition('bundle', $vocabulary->machine_name);
         }
         $result = $query->execute();
-        foreach ($result as $term) {
-          $options[$term->tid] = $term->name;
+
+        if (!empty($result['taxonomy_term'])) {
+          $terms = entity_load('taxonomy_term', array_keys($result['taxonomy_term']));
+          foreach ($terms as $term) {
+            $options[$term->tid] = entity_label('taxonomy_term', $term);
+          }
+        }
+        $entities = taxonomy_term_load_multiple($tids);
+
+        foreach ($entities as $entity_term) {
+          $options[$entity_term->tid] = entity_label('taxonomy_term', $entity_term);
         }
       }
 
@@ -347,12 +358,9 @@ class views_handler_filter_term_node_tid extends views_handler_filter_many_to_on
 
     if ($this->value) {
       $this->value = array_filter($this->value);
-      $result = db_select('taxonomy_term_data', 'td')
-        ->fields('td')
-        ->condition('td.tid', $this->value)
-        ->execute();
-      foreach ($result as $term) {
-        $this->value_options[$term->tid] = $term->name;
+      $result = taxonomy_term_load_multiple($this->value);
+      foreach ($result as $entity_term) {
+        $this->value_options[$entity_term->tid] = entity_label('taxonomy_term', $entity_term);
       }
     }
     return parent::admin_summary();
