diff -r 25cb6c98df8b quiz/quiz.admin.inc
--- a/quiz/quiz.admin.inc	Wed Mar 17 10:38:59 2010 +0100
+++ b/quiz/quiz.admin.inc	Wed Mar 17 13:25:29 2010 +0100
@@ -113,6 +113,8 @@
  *  HTML output to create page.
  */
 function quiz_questions_form($context, $quiz) {
+  $form['#quiz'] = $quiz;
+
   // This is a target for AHAH callbacks. Do not remove.
   $form['ahah_target'] = array(
     '#type' => 'markup',
@@ -165,7 +167,7 @@
     '#size' => 60,
     '#maxlength' => 256,
     '#required' => FALSE,
-    '#autocomplete_path' => 'admin/quiz/listquestions',
+    '#autocomplete_path' => 'admin/quiz/listquestions/'.$quiz->language,
   );
   $form['filtered_question_list_always']['always_box']['add_to_list'] = array(
     '#type' => 'submit',
@@ -219,7 +221,7 @@
     '#maxlength' => 256,
     '#required' => FALSE,
     '#weight' => -2,
-    '#autocomplete_path' => 'admin/quiz/listquestions',
+    '#autocomplete_path' => 'admin/quiz/listquestions/'.$quiz->language,
   );
   $form['filtered_question_list_random']['random_box']['add_to_random'] = array(
     '#type' => 'submit',
@@ -310,10 +312,11 @@
  * Validate that the supplied questions are real.
  */
 function quiz_questions_form_validate($form, $form_state) {
+  $quiz = $form['#quiz'];
   $question_types = array_keys(_quiz_get_question_types());
   $removed = explode(',', $form_state['values']['remove_from_quiz']);
   $placeholders = db_placeholders($question_types, 'varchar');
-  $sql = 'SELECT COUNT(nid) FROM {node} WHERE type IN (' . $placeholders . ') AND nid = %d';
+  $sql = "SELECT COUNT(nid) FROM {node} WHERE type IN ($placeholders) AND nid = %d AND (language = '%s' OR language = '')";
   $already_checked = array();
   if (empty($form_state['values']['weights'])) {
     return;
@@ -326,6 +329,7 @@
     list($state, $nid) = explode('-', $id, 2);
     $params = $question_types; // Copy array.
     $params[] = $nid;
+    $params[] = $quiz->language;
 
     if (db_result(db_query($sql, $params)) == 0) {
       form_set_error('none', 'One of the supplied questions was invalid. It has been removed from the quiz.');
@@ -353,8 +357,7 @@
   *  Array containing the form values.
   */
 function quiz_questions_form_submit($form, &$form_state) {
-  // This is ugly and should be fixed.
-  $quiz = node_load(arg(1));
+  $quiz = $form['#quiz'];
 
   $new_revision = $form_state['values']['new_revision'];
   $num_random = $form_state['values']['number_of_random_questions'];
@@ -419,7 +422,7 @@
 /**
  * Autocompletion function for quiz questions.
  */
-function quiz_admin_list_questions_ac($vid, $string = '') {
+function quiz_admin_list_questions_ac($language, $string) {
   $type_map = _quiz_get_question_types();
   $values = array_keys($type_map);
   $placeholder = db_placeholders($values, 'varchar');
@@ -433,7 +436,17 @@
       AND (LOWER(n.title) LIKE '%%%s%%' OR LOWER(r.body) LIKE '%%%s%%')";
 
   array_push($values, $query, $query);
-  $result = db_query_range(db_rewrite_sql($sql), $values, 0, 20);
+
+  if (variable_get('language_content_type_quiz', 0) == 0) {
+    //No multilingual support for quiz, failback to query rewriting to enfore
+    //language selection options
+    $sql = db_rewrite_sql($sql);
+  }
+  elseif($language) {
+    $sql .= " AND (language = '%s' OR language = '' OR language IS NULL)";
+    $values[] = $language;
+  }  
+  $result = db_query_range($sql, $values, 0, 20);
 
   $matches = array();
   while ($node = db_fetch_object($result)) {
diff -r 25cb6c98df8b quiz/quiz.module
--- a/quiz/quiz.module	Wed Mar 17 10:38:59 2010 +0100
+++ b/quiz/quiz.module	Wed Mar 17 13:25:29 2010 +0100
@@ -220,11 +220,11 @@
   );
 
   // JSON callback
-  $items['admin/quiz/listquestions'] = array(
+  $items['admin/quiz/listquestions/%/%menu_tail'] = array(
     'title' => t('List Quiz Questions'),
     'description' => t('Auto-completion question listing.'),
     'page callback' => 'quiz_admin_list_questions_ac',
-    'page arguments' => array(''),
+    'page arguments' => array(3, 4),
     'type' => MENU_CALLBACK,
     //'access callback' => 'user_access',
     'access arguments' => array('create quiz'),
diff -r 25cb6c98df8b quiz/tests/quiz.test
--- a/quiz/tests/quiz.test	Wed Mar 17 10:38:59 2010 +0100
+++ b/quiz/tests/quiz.test	Wed Mar 17 13:25:29 2010 +0100
@@ -10,13 +10,13 @@
   public function getInfo() {
     return array(
       'name' => t('Quiz i18n'),
-      'description' => t('Test i18n support in Quiz.'),
+      'description' => t('Test i18n support in Quiz. <b>Requires Locale module and French language.</b>'),
       'group' => t('Quiz'),
     );
   }
 
   public function setUp() {
-    parent::setUp('quiz', 'multichoice', 'taxonomy', 'locale', 'translation', 'i18n', 'i18nstrings', 'i18ntaxonomy');
+    parent::setUp('locale', 'translation', 'quiz', 'multichoice', 'taxonomy', 'i18n', 'i18nstrings', 'i18ntaxonomy');
     //Create an adminsitrative user
     $this->admin_user = $this->drupalCreateUser(array('access content', 'access quiz', 'administer languages', 'administer nodes', 'access administration pages', 'administer taxonomy', 'access content', 'create quiz'));
     $this->drupalLogin($this->admin_user);
@@ -24,10 +24,46 @@
     $this->drupalpost('admin/settings/language/configure', array('language_negotiation' => 2), 'Save settings');
     variable_set('language_content_type_quiz', 2);
     variable_set('language_content_type_multichoice', 2);
+    global $language;
+    $language = $this->originalLanguage;
+    $this->pass($language->name);
   }
 
   public function tearDown() {
     parent::tearDown();
+    global $language;
+    $language = $this->originalLanguage;
+  }
+
+  protected function testListQuestionsAutoComplete() {
+    $settings = array(
+      'title' => 'Question in English',
+      'description' => $this->randomName(),
+      'type' => 'multichoice',
+      'language' => 'en',
+      'status' => 1,
+    );
+    for ($j = 0; $j < 5; $j++) {
+      $settings['answers'][] = array(
+          'correct' => $j == 0,
+          'answer' =>  '('. $j .') '. $this->randomName(),
+        );
+    }
+    $this->drupalCreateNode($settings);
+
+    $settings['title'] = 'Question in French';
+    $settings['language'] = 'fr';
+    $this->drupalCreateNode($settings);
+
+    $this->drupalGet('admin/quiz/listquestions//q');
+    $this->assertText('Question in English');
+    $this->assertText('Question in French');
+    $this->drupalGet('admin/quiz/listquestions/en/q');
+    $this->assertText('Question in English');
+    $this->assertNoText('Question in French');
+    $this->drupalGet('admin/quiz/listquestions/fr/q');
+    $this->assertNoText('Question in English');
+    $this->assertText('Question in French');
   }
 
   protected function testGetRandomTaxonomyQuestion() {
