diff --git a/i18nmenu_node.module b/i18nmenu_node.module
index 41676b2..90188ec 100644
--- a/i18nmenu_node.module
+++ b/i18nmenu_node.module
@@ -551,24 +551,29 @@ function i18nmenu_node_token_values($type, $node = NULL, $options = array()) {
   $values = array();
 
   if ($type == 'node') {
-    $value = '';
     $trail_raw = array();
-    $tnid = _i18nmenu_node_get_node_tnid($node);
-    $tnode = !empty($tnid) && $tnid != $nid ? (object) array('nid' => $tnid) : $node;
-    _i18nmenu_node_prepare($tnode);
-
-    if (!empty($tnode->menu)) {
-      $item = $tnode->menu;
-
-      while ($item) {
-        array_unshift($trail_raw, _i18nmenu_get_item_title($item, FALSE, $node->language));
-        $item = empty($item['plid']) ? FALSE : menu_link_load($item['plid']);
+    $item = FALSE;
+
+    // If the current node has no menu item we use the source node one.
+    if (empty($node->menu['mlid'])) {
+      $tnid = _i18nmenu_node_get_node_tnid($node);
+      if (!empty($tnid) && $tnid != $node->nid ) {
+        $tnode = (object) array('nid' => $tnid);
+        _i18nmenu_node_prepare($tnode);
+        // We use the source node menu item only if node translation is enabled.
+        $item = !empty($tnode->menu['mlid']) && i18nmenu_node_enabled($tnode->menu) ? $tnode->menu : FALSE;
       }
+    }
+    else {
+      $item = $node->menu;
+    }
 
-      $value = implode('/', $trail_raw);
+    while ($item) {
+      array_unshift($trail_raw, _i18nmenu_get_item_title($item, FALSE, $node->language));
+      $item = empty($item['plid']) ? FALSE : menu_link_load($item['plid']);
     }
 
-    $values['i18n-menupath-raw'] = !empty($options['pathauto']) ? $trail_raw : $value;
+    $values['i18n-menupath-raw'] = !empty($options['pathauto']) ? $trail_raw : implode('/', $trail_raw);
   }
 
   return $values;
