diff --git a/modules/language.views.inc b/modules/language.views.inc
new file mode 100644
index 0000000000000000000000000000000000000000..d9065e850819f1b036d0ee4a23e9d7c47e614319
--- /dev/null
+++ b/modules/language.views.inc
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @file
+ * Provide views data and handlers for language.module.
+ *
+ * @ingroup views_module_handlers
+ */
+
+/**
+ * Implements hook_views_data().
+ */
+function language_views_data() {
+  $data['language']['table']['group']  = t('Language');
+
+  $data['language']['table']['base'] = array(
+    'field' => 'langcode',
+    'title' => t('Language'),
+    'help' => t('A language used in drupal.'),
+  );
+
+  // name
+  // direction
+  // weight
+
+  $data['language']['langcode'] = array(
+    'title' => t('Language code'),
+    'help' => t("Language code, e.g. 'de' or 'en-US'."),
+    'field' => array(
+      'handler' => 'views_handler_field',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string'
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['language']['name'] = array(
+    'title' => t('Language name'),
+    'help' => t("Language name, e.g. 'German' or 'English'."),
+    'field' => array(
+      'handler' => 'views_handler_field',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string'
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['language']['direction'] = array(
+    'title' => t('Direction'),
+    'help' => t('Direction of language (Left-to-Right = 0, Right-to-Left = 1).'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric'
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['language']['weight'] = array(
+    'title' => t('Weight'),
+    'help' => t('Weight, used in lists of languages.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric'
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  return $data;
+}
diff --git a/views.module b/views.module
index 3d34603365a0268ad1ae5ab441bdf619c56b6910..27bb3aa9f079755de838da09257887c3f3833191 100644
--- a/views.module
+++ b/views.module
@@ -2397,6 +2397,10 @@ function filter_views_api() { return views_views_api(); }
   function image_views_api() { return views_views_api(); }
 }
 
+if (!function_exists('language_views_api')) {
+  function language_views_api() { return views_views_api(); }
+}
+
 if (!function_exists('locale_views_api')) {
   function locale_views_api() { return views_views_api(); }
 }