Index: i18nviews.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/i18n/i18nviews/i18nviews.module,v
retrieving revision 1.1.2.5
diff -u -r1.1.2.5 i18nviews.module
--- i18nviews.module	25 Apr 2007 19:07:02 -0000	1.1.2.5
+++ i18nviews.module	29 Nov 2008 23:14:20 -0000
@@ -71,6 +71,42 @@
   return $languages[$value];
 }
 
+
+/**
+ * Implementation of hook_views_arguments to add the language argument selectors.
+ */ 
+function i18n_views_arguments() {
+  $arguments = array(
+    'i18n_language' => array(
+      'name' => t('Internationalization: Language'),
+      'handler' => 'i18n_views_handler_argument',
+      'option' => 'string',
+      'help' => t('This argument specifies a language selector.'),
+    ),
+  );
+  return $arguments;
+}
+
+function i18n_views_handler_argument($op, &$query, $argtype, $arg = '') {
+  switch($op) {
+    case 'summary':
+      $query->add_table('i18n_node', false, 1, array('left' => array('table' => 'node', 'field' => 'nid'), 'right' => array('table' => 'i18n_node', 'field' => 'nid')));
+      $fieldinfo['field'] = "i18n_node.language";
+      $fieldinfo['fieldname'] = "language";
+      return $fieldinfo;
+      break;
+    case 'filter':
+      $query->add_table('i18n_node', false, 1, array('left' => array('table' => 'node', 'field' => 'nid'), 'right' => array('table' => 'i18n_node', 'field' => 'nid')));
+      $query->add_field("language", "i18n_node");
+      $query->add_where("i18n_node.language = '$arg'");
+      break;
+    case 'link':
+      return l($query->language, "$arg/$query->language");
+    case 'title':
+      return $query;
+  }
+}
+
 /**
  * Filter handler callback. Manages language selection mode
  */
