diff --git a/includes/ckeditor_link.node.inc b/includes/ckeditor_link.node.inc
index 0cbe20a..e4956e7
--- a/includes/ckeditor_link.node.inc
+++ b/includes/ckeditor_link.node.inc
@@ -14,7 +14,7 @@ function ckeditor_link_ckeditor_link_node_autocomplete($string, $limit) {
   $node_types = array_keys(array_filter(variable_get('ckeditor_link_autocomplete_node_types', array('- any -' => '- any -'))));
   if (count($node_types)) {
     $query = db_select('node', 'n')
-      ->fields('n', array('nid', 'title'))
+      ->fields('n', array('nid', 'title', 'language'))
       ->condition('n.title', '%'. db_like($string) .'%', 'LIKE')
       ->orderBy('n.title')
       ->orderBy('n.type')
@@ -25,7 +25,9 @@ function ckeditor_link_ckeditor_link_node_autocomplete($string, $limit) {
     }
     $result = $query->execute();
     foreach ($result as $node) {
-      $matches['node/'. $node->nid] = $node->title;
+        $langcode = (isset($node->language)) ? $node->language : LANGUAGE_NONE;
+        $path = ckeditor_link_path_prefix_language('node/'. $node->nid, $langcode);
+        $matches[$path] = $node->title;
     }
   }

@@ -46,7 +48,7 @@ function ckeditor_link_ckeditor_link_node_revert($path, &$langcode) {
     ->condition('n.nid', $nid)
     ->addTag('node_access');
   if ($node = $query->execute()->fetchObject()) {
-    if ($node->language != LANGUAGE_NONE) {
+    if ($node->language != $langcode) {
       $langcode = LANGUAGE_NONE;
     }
     return $node->title;
@@ -67,9 +69,15 @@ function ckeditor_link_ckeditor_link_node_url($path, $langcode) {

   $languages = ckeditor_link_get_languages();
   if ($languages) {
-    $language = db_query('SELECT language FROM {node} WHERE nid = :nid', array(':nid' => $nid))->fetchField();
-    if ($language && ($language != LANGUAGE_NONE) && isset($languages[$language])) {
-      $langcode = $language;
+    // Core language support for content types has 2 as maximum value. Over this
+    // contrib modules such as Entity Translation might introduce different
+    // behaviors, hence we just skip any language alteration.
+    $node = db_query('SELECT nid, type, language FROM {node} WHERE nid = :nid', array(':nid' => $nid))->fetchObject();
+    if ($node) {
+      $language_support = variable_get('language_content_type_' . $node->type, 0) <= 2;
+      if ($language_support && $node->language && ($node->language != LANGUAGE_NONE) && isset($languages[$node->language])) {
+        $langcode = $node->language;
+      }
     }
   }

