diff --git a/smartqueue_language.module b/smartqueue_language.module
index 0951cf0..2fc2126 100644
--- a/smartqueue_language.module
+++ b/smartqueue_language.module
@@ -110,31 +110,30 @@ function smartqueue_language_nodequeue_subqueues(&$queue, $node) {
 /**
  * Implements hook_nodequeue_autocomplete().
  */
-function smartqueue_language_nodequeue_autocomplete($queue, $subqueue, $string, $where, $where_args) {
-  $matches = array();
+function smartqueue_language_query_nodequeue_api_autocomplete_alter(QueryAlterableInterface $query) {
+  $default_language = language_default();
+  $queue = $query->getMetaData('queue');
+  $subqueue = $query->getMetaData('subqueue');
   $settings = unserialize($queue->reference);
 
-  //filter for language
-  if ($settings['language_neutral']) {
-    $where .=  " (n.language = :language OR n.language = '')";
-    $where_args[':language'] = $subqueue->reference;
-  }
-  else {
-    $where .=  " n.language = :language";
-    $where_args[':language'] = $subqueue->reference;
-  }
+  if($settings) {
+    //filter for language
+    $languages[] = $subqueue->reference;
+    if ($settings['language_neutral']) {
+      $languages[] = LANGUAGE_NONE;
+    }
+    if ($settings['languages'] == 'all') {
+      $languages[] = $default_language->language;
+    }
 
-  //filter by content type
-  if (!empty($queue->types)) {
-    $where .= " AND n.type IN (:types)";
-    $where_args[':types'] = $queue->types;
-  }
-  $result = db_query_range("SELECT n.nid, n.title FROM {node} n WHERE " . $where, 0, variable_get('nodequeue_autocomplete_limit', 10), $where_args);
-  while ($node = $result->fetchObject()) {
-    $matches[$node->nid] = check_plain($node->title) . " [nid: $node->nid]";
-  }
+    //filter by content type
+    if (!empty($queue->types)) {
+      $where .= " AND n.type IN (:types)";
+      $where_args[':types'] = $queue->types;
+    }
 
-  return $matches;
+    $query->condition('n.language', $languages, 'IN');
+  }
 }
 
 /**
@@ -182,4 +181,4 @@ function smartqueue_language_language_delete(&$form, &$form_state) {
   while ($row = $result->fetchObject()) {
     nodequeue_remove_subqueue($row->sqid);
   }
-}
\ No newline at end of file
+}
