diff -ruNwp /home/olivier/tmp.2/i18n/i18nviews/i18nviews.module ./i18nviews/i18nviews.module
--- /home/olivier/tmp.2/i18n/i18nviews/i18nviews.module	2008-09-25 21:16:12.000000000 +0200
+++ ./i18nviews/i18nviews.module	2008-11-17 17:42:00.000000000 +0100
@@ -145,3 +145,10 @@ function i18ntaxonomy_views_handler_fiel
   }
   return $links;
 }
+
+function i18nviews_views_api() {
+  return array(
+    'api' => '2.0',
+    'path' => drupal_get_path('module', 'i18nviews') . '/includes',
+  );
+}
diff -ruNwp /home/olivier/tmp.2/i18n/i18nviews/includes/content_negotiation_filter_handler.inc ./i18nviews/includes/content_negotiation_filter_handler.inc
--- /home/olivier/tmp.2/i18n/i18nviews/includes/content_negotiation_filter_handler.inc	1970-01-01 01:00:00.000000000 +0100
+++ ./i18nviews/includes/content_negotiation_filter_handler.inc	2008-10-23 12:19:45.000000000 +0200
@@ -0,0 +1,16 @@
+<?php
+
+class content_negotiation_filter_handler extends views_handler_filter {
+  function query() {
+    $table_alias = $this->query->ensure_table('node');
+    $where = i18n_db_rewrite_where($table_alias, 'node');
+    $this->query->add_where($this->options['group'], $where);
+  }
+  
+  function option_definition() {
+    $options = parent::option_definition();
+    $options['operator']['default'] = '';
+    $options['value']['default'] = '';
+    return $options;
+  }
+}
diff -ruNwp /home/olivier/tmp.2/i18n/i18nviews/includes/i18nviews.views.inc ./i18nviews/includes/i18nviews.views.inc
--- /home/olivier/tmp.2/i18n/i18nviews/includes/i18nviews.views.inc	1970-01-01 01:00:00.000000000 +0100
+++ ./i18nviews/includes/i18nviews.views.inc	2008-11-17 17:42:07.000000000 +0100
@@ -0,0 +1,27 @@
+<?php
+
+function i18nviews_views_data() {
+  $data['node']['content_negotiation'] = array(
+    'group' => t('i18n'),
+    'title' => t('Content negotiation'),
+    'help' => t('Removes the nodes that are not valid according to the content selection mode'),
+    'filter' => array(
+      'handler' => 'content_negotiation_filter_handler',
+    ),
+  );
+  return $data;
+}
+
+/**
+ * Implementation of hook_views_handlers
+ */
+function i18nviews_views_handlers() {
+  return array(
+    'handlers' => array(
+      'content_negotiation_filter_handler' => array(
+        'parent' => 'views_handler_filter',
+        'file' => 'includes/content_negotiation_filter_handler.inc' 
+      ),
+    ),
+  );
+}
