diff --git a/i18nviews.info b/i18nviews.info
index 5a755f1..3e7cc8c 100644
--- a/i18nviews.info
+++ b/i18nviews.info
@@ -15,6 +15,7 @@ files[] = includes/i18nviews_handler_argument_taxonomy_index_tid.inc
 files[] = includes/i18nviews_handler_argument_taxonomy_term_name.inc
 files[] = includes/i18nviews_handler_argument_term_language.inc
 files[] = includes/i18nviews_handler_argument_term_node_tid_depth.inc
+files[] = includes/i18nviews_handler_field_node_link_edit.inc
 files[] = includes/i18nviews_handler_field_taxonomy_term_description.inc
 files[] = includes/i18nviews_handler_field_taxonomy_term_language.inc
 files[] = includes/i18nviews_handler_field_taxonomy_term_name.inc
diff --git a/includes/i18nviews.views.inc b/includes/i18nviews.views.inc
index 364687a..42bdadd 100644
--- a/includes/i18nviews.views.inc
+++ b/includes/i18nviews.views.inc
@@ -7,6 +7,26 @@ function i18nviews_views_data_alter(&$data) {
   if (module_exists('i18n_taxonomy')) {
     i18nviews_views_data_alter_i18n_taxonomy($data);
   }
+  if (module_exists('i18n_node')) {
+    i18nviews_views_data_alter_i18n_node($data);
+  }
+}
+
+/**
+ * Implementation of hook_views_data_alter().
+ *
+ * Registers views handlers with dependency to i18n_node.
+ */
+function i18nviews_views_data_alter_i18n_node(&$data) {
+  // NODE
+  // Add a i18n aware edit link for node.
+  $data['views_entity_node']['edit_node_i18n'] = array(
+    'field' => array(
+      'title' => t('Edit link (translated)'),
+      'help' => t('Provide a simple link to edit the content.'),
+      'handler' => 'i18nviews_handler_field_node_link_edit',
+    ),
+  );
 }
 
 /**
diff --git a/includes/i18nviews_handler_field_node_link_edit.inc b/includes/i18nviews_handler_field_node_link_edit.inc
new file mode 100644
index 0000000..ce2bc99
--- /dev/null
+++ b/includes/i18nviews_handler_field_node_link_edit.inc
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @file
+ * Definition of i18nviews_handler_field_node_link_edit.
+ */
+
+/**
+ * Field handler to present a link node edit.
+ *
+ * @ingroup views_field_handlers
+ */
+class i18nviews_handler_field_node_link_edit extends views_handler_field_node_link_edit {
+
+  function init(&$view, &$options) {
+    parent::init($view, $options);
+    
+    // This handler depends on i18n Node, which depends itself on
+    // Translation module. So the 'language' column exists.
+    $this->additional_fields['language'] = array('table' => 'node', 'field' => 'language');
+  }
+  
+  /**
+   * Renders the link.
+   */
+  function render_link($node, $values) {
+    // Ensure user has access to edit this node.
+    if (node_access('update', $node)) {
+      $this->alter_link_language($values);
+      return parent::render_link($node, $values);
+    }
+  }
+  
+  /**
+   * Add langcode to link alter options when applicable.
+   */
+  function alter_link_language($values) {
+    // Since the 'Switch interface for translating' option has been
+    // dropped from i18n node module, the following lines only apply
+    // to instances that had this option enabled then upgraded to a
+    // newer version of i18n.
+    // Curerntly the 'i18n_node_translation_switch' varialbe is not
+    // removed by any hook_update_N()...
+    // @see #1551688
+    if (isset($this->aliases['language']) && variable_get_value('i18n_node_translation_switch')) {
+      $languages = language_list();
+      $language = $this->get_value($values, 'language');
+      if (isset($languages[$language])) {
+        $this->options['alter']['language'] = $languages[$language];
+      }
+      elseif (isset($this->options['alter']['language'])) {
+        unset($this->options['alter']['language']);
+      }
+    }
+  }
+}
