--- nodereference.module    2010-10-22 17:54:46.000000000 +0200
+++ nodereference.module  2010-10-22 16:41:30.000000000 +0200
@@ -133,10 +133,36 @@ function nodereference_field_settings($o
           );
         }
       }
+      if(module_exists('i18n')) {
+        if(!isset($form['advanced'])) {
+          $form['advanced'] = array(
+            '#type' => 'fieldset',
+            '#title' => t('Advanced - Nodes that can be referenced (language)'),
+            '#collapsible' => TRUE,
+            '#collapsed' => !isset($field['advanced_view']) || $field['advanced_view'] == '--',
+          );
+       }
+       else {
+               $form['advanced']['#title'] = t('Advanced - Nodes that can be referenced (View & language)');
+       }
+       module_load_include('inc', 'i18n', 'i18n.admin');
+       $selection_modes = _i18n_selection_mode();
+        $selection_modes[NULL] = t('Use <a href="@i18n-setting-page">site settings</a>.', array('@i18n-setting-page' => url('admin/settings/language/i 18n/configure')));
+       $form['advanced']['i18n_selection_mode'] = array(
+          '#type' => 'radios',
+          '#title' => t('Content selection mode'),
+          '#default_value' =>  isset($field['i18n_selection_mode']) ? $field['i18n_selection_mode'] : NULL,
+          '#options' => $selection_modes,
+          '#description' => t('Determines which content to show depending on the current page language and the default language of the site.'),
+       );
+      }
       return $form;

     case 'save':
       $settings = array('referenceable_types');
+      if(module_exists('i18n')) {
+        $settings[] = 'i18n_selection_mode';
+      }
       if (module_exists('views')) {
         $settings[] = 'advanced_view';
         $settings[] = 'advanced_view_args';
@@ -803,7 +829,10 @@ function nodereference_allowed_values($f
  */
 function _nodereference_potential_references($field, $string = '', $match = 'contains', $ids = array(), $limit = NULL) {
   static $results = array();
-
+  if(module_exists('i18n') && $field['i18n_selection_mode']) {
+       i18n_selection_mode($field['i18n_selection_mode']);
+       $reset_i18n_selection_mode = TRUE;
+  }
   // Create unique id for static cache.
   $cid = $field['field_name'] .':'. $match .':'. ($string !== '' ? $string : implode('-', $ids)) .':'. $limit;
   if (!isset($results[$cid])) {
@@ -820,7 +849,9 @@ function _nodereference_potential_refere
     // Store the results.
     $results[$cid] = !empty($references) ? $references : array();
   }
-
+  if($reset_i18n_selection_mode) {
+    i18n_selection_mode('reset');
+  }
   return $results[$cid];
 }