Index: i18ntaxonomy/i18ntaxonomy.module
===================================================================
--- i18ntaxonomy/i18ntaxonomy.module	(revision 18915)
+++ i18ntaxonomy/i18ntaxonomy.module	(working copy)
@@ -257,12 +257,20 @@
       // Update vocabulary settings.
       if (isset($edit['i18nmode'])) {
         i18ntaxonomy_vocabulary($vid, $edit['i18nmode']);
-
+        
         $language = isset($edit['language']) ? $edit['language'] : '';
-        db_query("UPDATE {vocabulary} SET language='%s' WHERE vid = %d", $language, $edit['vid']);
-        if ($language && $op == 'update') {
-          db_query("UPDATE {term_data} SET language='%s' WHERE vid = %d", $edit['language'], $edit['vid']);
-          drupal_set_message(t('Reset language for all terms.'));
+        if ($edit['i18nmode'] == I18N_TAXONOMY_LANGUAGE) {
+          db_query("UPDATE {vocabulary} SET language='%s' WHERE vid = %d", $language, $edit['vid']);
+          if ($language && $op == 'update') {
+            db_query("UPDATE {term_data} SET language='%s' WHERE vid = %d", $edit['language'], $edit['vid']);
+            drupal_set_message(t('Reset language for all terms.'));
+          }
+        }
+        else if ($language) {
+          // Make sure language isn't set for any mode besides I18N_TAXONOMY_LANGUAGE because it doesn't make sense
+          $language = '';
+          db_query("UPDATE {vocabulary} SET language='%s' WHERE vid = %d", $language, $edit['vid']);
+          drupal_set_message(t('Vocabulary language not set because it only makes sense when using the "Set language to vocabulary" translation mode.'));
         }
         // Always add vocabulary translation if !$language.
         if (!$language) {
