diff --git a/modules/taxonomy.views.inc b/modules/taxonomy.views.inc
index 58d62d1..a57726e 100644
--- a/modules/taxonomy.views.inc
+++ b/modules/taxonomy.views.inc
@@ -292,7 +292,7 @@ function taxonomy_views_data() {
     'title' => t('Content with term'),
     'help' => t('Relate all content tagged with a term.'),
     'relationship' => array(
-      'handler' => 'views_handler_relationship',
+      'handler' => 'views_handler_relationship_term_node',
       'base' => 'node',
       'base field' => 'nid',
       'label' => t('node'),
diff --git a/modules/taxonomy/views_handler_relationship_term_node.inc b/modules/taxonomy/views_handler_relationship_term_node.inc
new file mode 100644
index 0000000..e8e4b7c
--- /dev/null
+++ b/modules/taxonomy/views_handler_relationship_term_node.inc
@@ -0,0 +1,59 @@
+<?php
+
+/**
+ * @file
+ * Definition of views_handler_relationship_term_node.
+ */
+
+/**
+ * Relationship handler to return the nodes matching taxonomy terms with the
+ * option for selecting languages
+ *
+ * @ingroup views_relationship_handlers
+ */
+class views_handler_relationship_term_node extends views_handler_relationship  {
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['relationship_language'] = array('default' => '0');
+    $options['language'] = array('default' => '***CURRENT_LANGUAGE***');
+    return $options;
+  }
+
+  function options_form(&$form, &$form_state) {
+    if (module_exists('translation')) {
+      $languages = array(
+        '***CURRENT_LANGUAGE***' => t("Current user's language"),
+        '***DEFAULT_LANGUAGE***' => t("Default site language"),
+        LANGUAGE_NONE => t('No language')
+      );
+      $languages = array_merge($languages, views_language_list());
+
+      $form['relationship_language'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Add a specific language to this relationship'),
+        '#default_value' => $this->options['relationship_language'],
+        '#description' => t('Enable this if you want to relate the content by a specific language.'),
+      );
+
+      $form['language'] = array(
+        '#type' => 'radios',
+        '#title' => t('Language'),
+        '#options' => $languages,
+        '#default_value' => $this->options['language'],
+        '#description' => t('Choose which vocabularies you wish to relate. Remember that every term found will create a new record, so this relationship is best used on just one vocabulary that has only one term per node.'),
+        '#dependency' => array('edit-options-relationship-language' => array(TRUE)),
+      );
+    }
+    parent::options_form($form, $form_state);
+  }
+
+  function query() {
+    if ($this->options['relationship_language']) {
+      $this->definition['extra'][] = array(
+        'field' => 'language',
+        'value' => $this->options['language'],
+      );
+    }
+    parent::query();
+  }
+}
diff --git a/views.info b/views.info
index 7521d82..e44ca08 100644
--- a/views.info
+++ b/views.info
@@ -169,6 +169,7 @@ files[] = modules/taxonomy/views_handler_filter_term_node_tid_depth.inc
 files[] = modules/taxonomy/views_handler_filter_vocabulary_vid.inc
 files[] = modules/taxonomy/views_handler_filter_vocabulary_machine_name.inc
 files[] = modules/taxonomy/views_handler_relationship_node_term_data.inc
+files[] = modules/taxonomy/views_handler_relationship_term_node.inc
 files[] = modules/taxonomy/views_plugin_argument_validate_taxonomy_term.inc
 files[] = modules/taxonomy/views_plugin_argument_default_taxonomy_tid.inc
 files[] = modules/tracker/views_handler_argument_tracker_comment_user_uid.inc
