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) {