diff --git a/datatables.serverside.inc b/datatables.serverside.inc
new file mode 100644
index 0000000..471bdec
--- /dev/null
+++ b/datatables.serverside.inc
@@ -0,0 +1,116 @@
+<?php
+/**
+*  Serverside processing of datatables
+*/
+function datatables_serverside($name, $display_id, $base64_args){
+  if(user_access('ajax datatables')) {
+    /**
+    *  Datatables GET Variablen
+    */
+    $view_name = check_plain($name);
+    $view_display_id = check_plain($display_id);
+    $args = explode('|',base64_decode($base64_args));
+    
+    $iColumns = $_GET['iColumns'];
+    $iDisplayLength = is_numeric($_GET['iDisplayLength'])? $_GET['iDisplayLength']:10;
+    $iDisplayStart = is_numeric($_GET['iDisplayStart'])? $_GET['iDisplayStart']:0;
+    $iSortCol_0 = is_numeric($_GET['iSortCol_0'])? $_GET['iSortCol_0']:0;
+    $iSortingCols = is_numeric($_GET['iSortingCols'])? $_GET['iSortingCols']:0;
+    $sEcho = is_numeric($_GET['sEcho'])?$_GET['sEcho']:0; 
+    $sSearch = check_plain($_GET['sSearch']);
+    $sSortDir_0 = is_numeric($_GET['sSortDir_0'])?$_GET['sSortDir_0']:0;
+    
+    
+    /**
+    *  View laden
+    */
+    $view = views_get_view($view_name);
+    $view->set_display($view_display_id);
+    $view->set_arguments($args);
+    $view->set_current_page(0);  
+    $view->set_items_per_page($iDisplayLength);
+    $view->get_total_rows = TRUE;
+    $view->is_cacheable = FALSE;
+    $view->offset = $iDisplayStart;
+    
+    $view->execute();
+
+    $iTotalRecords = $view->total_rows + $iDisplayStart;
+    $iTotalDisplayRecords = $view->total_rows + $iDisplayStart;
+
+    $vars['rows'] = array();
+
+    $options  = $view->style_plugin->options;
+    $handler  = $view->style_plugin;
+
+    $fields   = &$view->field;
+    $columns  = $handler->sanitize_columns($options['columns'], $fields);
+    $active   = !empty($handler->active) ? $handler->active : '';
+    $order    = !empty($handler->order) ? $handler->order : 'asc';
+
+    $renders = array();
+    $keys = array_keys($view->field);
+
+	  /*
+	   * Output
+	   */
+	  $output = array(
+		  "sEcho" => intval($_GET['sEcho']),
+		  "iTotalRecords" => $iTotalRecords,
+		  "iTotalDisplayRecords" => $iTotalDisplayRecords,
+		  "aaData" => array()
+	  );
+
+    foreach ($view->result as $count => $row) {
+      foreach ($keys as $id) {
+        $renders[$count][$id] = $view->field[$id]->theme($row);
+      }
+    }
+    
+    $position = 0;
+    
+    foreach ($columns as $field => $column) {
+      $column_options = NULL;
+      // render the header labels
+      if ($field == $column && empty($fields[$field]->options['exclude'])) {
+        $vars['header'][$field] = check_plain(!empty($fields[$field]) ? $fields[$field]->label() : '');
+        if (empty($options['info'][$field]['sortable']) || !$fields[$field]->click_sortable()) {
+          $column_options['bSortable'] = FALSE;
+        }
+        else {
+          // Check if rendered field has html
+          if (strlen($handler->rendered_fields[0][$field]) != strlen(strip_tags($handler->rendered_fields[0][$field]))) {
+            $column_options['sType'] = 'html';
+          }
+          $column_options['bSortable'] = TRUE;
+        }
+      
+       $datatable_options['aoColumns'][] = $column_options;
+      }
+      // Set default sort order
+      if ($options['default'] == $field) {
+        $datatable_options['aaSorting'] = array(array($position, $options['order']));
+      }
+      
+      // Render each field into its appropriate column.
+      foreach ($view->result as $num => $row) {     
+        if (!empty($fields[$field]) && empty($fields[$field]->options['exclude'])) {
+          $field_output = $renders[$num][$field];
+          
+          // Don't bother with separators and stuff if the field does not show up.
+          if (empty($field_output) && !empty($vars['rows'][$num][$column])) {
+            continue;
+          }
+        
+          $vars['rows'][$num][] = $field_output;
+        }
+      }
+     $position++;
+    }
+    
+    $output['aaData'] = $vars['rows'];
+    print drupal_json($output); 
+    exit;
+    #return ' test ';
+  }  
+}
diff --git a/translations/de.po b/translations/de.po
new file mode 100644
index 0000000..6997ea9
--- /dev/null
+++ b/translations/de.po
@@ -0,0 +1,184 @@
+# $Id$
+#
+# German translation of Drupal (general)
+# Copyright YEAR NAME <EMAIL@ADDRESS>
+# Generated from files:
+#  datatables.module,v 1.3.2.1 2010/07/28 01:06:23 duellj
+#  datatables.install,v 1.1 2009/12/15 07:21:47 duellj
+#  datatables.info: n/a
+#  datatables.views.inc,v 1.1 2009/12/16 00:59:58 duellj
+#  datatables_style_plugin.inc,v 1.1.2.1 2010/07/28 01:06:23 duellj
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2011-12-19 19:11+0100\n"
+"PO-Revision-Date: 2011-12-20 02:15+0800\n"
+"Last-Translator: Frank Romweber <frank@romweber.de>\n"
+"Language-Team: German <EMAIL@ADDRESS>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+
+#: datatables.module:181;266
+msgid "First page"
+msgstr "Erste Seite"
+
+#: datatables.module:182;267
+msgid "Last page"
+msgstr "Letzte Seite"
+
+#: datatables.module:183;268
+msgid "Next page"
+msgstr "Nächste Seite"
+
+#: datatables.module:184;269
+msgid "Previous page"
+msgstr "Vorherige Seite"
+
+#: datatables.module:186;271
+msgid "Got a total of _TOTAL_ entries to show (_START_ to _END_)"
+msgstr "Insgesamt _TOTAL_ EInträge vorhanden von (_START_ bis _END_)"
+
+#: datatables.module:187;272
+msgid "- filtering from _MAX_ records"
+msgstr ""
+
+#: datatables.module:188;273
+msgid "Display _MENU_ records"
+msgstr "Zeige _MENU_ EInträge"
+
+#: datatables.module:189;274
+msgid "Please wait - loading..."
+msgstr ""
+
+#: datatables.module:191;276
+msgid "All records shown are derived from real information."
+msgstr "Alle gezeigten Einträge beruhen auf vorhandenen Informationen."
+
+#: datatables.module:192;277
+msgid "No entries to show"
+msgstr "Keine EInträge vorhanden"
+
+#: datatables.module:193;278
+msgid "Processing..."
+msgstr "Verarbeite..."
+
+#: datatables.module:194;279
+msgid "Search"
+msgstr "Suche"
+
+#: datatables.module:195;280
+msgid "No records to display"
+msgstr "Keine Einträge vorhanden"
+
+#: datatables.module:14
+msgid "ajax datatables"
+msgstr ""
+
+#: (duplicate) datatables.install:22
+msgid "Not found"
+msgstr "Nicht gefunden"
+
+#: (duplicate) datatables.install:24
+msgid "The <a href=\"@datatables\">DataTables</a> plugin is missing. <a href=\"@download\">Download</a> and extract it to your <em>datatables</em> module directory. See <a href=\"@readme\">README.txt</a> for more info."
+msgstr ""
+
+#: datatables.info:0
+#: views/datatables.views.inc:18
+msgid "DataTables"
+msgstr "DataTables"
+
+#: datatables.info:0
+msgid "Provides integration of the jquery DataTables plugin into views."
+msgstr ""
+
+#: views/datatables.views.inc:19
+msgid "Displays rows in a jQuery table."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:42
+msgid "DataTables works best if you disable views pager and configure the page to show all values, since DataTabels contains its own pager implementation.<br/><br/>Place fields into columns; you may combine multiple fields into the same column. If you do, the separator in the column specified will be used to separate the fields. Check the sortable box to make that column click sortable, and check the default sort radio to determine which column will be sorted by default, if any. You may control column order and field labels in the fields section."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:46
+msgid "Enable the scrolly collapse."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:53
+msgid "Height of the scrolly table."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:61
+msgid "Enable the search filter box."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:67
+msgid "Enable the table information display."
+msgstr "Aktiviere die Tabellen Innformationsanzeige"
+
+#: views/datatables_style_plugin.inc:69
+msgid "This shows information about the data that is currently visible on the page, including information about filtered data if that action is being performed."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:74
+msgid "Enable the auto width."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:76
+msgid "This enables or disables the datatables auto width function.(default disabled buggy!)"
+msgstr ""
+
+#: views/datatables_style_plugin.inc:81
+msgid "Enable the save state function."
+msgstr "Aktiviere das speichern des letzten Tabellen Statusses"
+
+#: views/datatables_style_plugin.inc:83
+msgid "This enables or disables the save state table support."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:88
+msgid "Enable the jquery ThemeRoller."
+msgstr "Ativiere den jquery ThemeRoller."
+
+#: views/datatables_style_plugin.inc:90;120
+msgid "This enables or disables the jquery UI ThemeRoller support."
+msgstr "Aktiviert oder deaktiviert die jquery UI ThemeRoller Unterstützung."
+
+#: views/datatables_style_plugin.inc:95
+msgid "Show processing info."
+msgstr "Zeige Verarbeitungs Dialog"
+
+#: views/datatables_style_plugin.inc:97
+msgid "This enables or disables the processing info layer of the table."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:102
+msgid "Server side processing of the datatables."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:104
+msgid "This enables or disables the server side processing of the table (ajax)."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:109
+msgid "Enable or disable the pagination."
+msgstr ""
+
+#: views/datatables_style_plugin.inc:111
+msgid "This enables or disables the pagination."
+msgstr "Dies schaltet die Pagination ein oder aus"
+
+#: views/datatables_style_plugin.inc:114
+msgid "Full numbers"
+msgstr "Zahlen"
+
+#: views/datatables_style_plugin.inc:114
+msgid "Two buttons"
+msgstr "Zwei Knöpfe"
+
+#: views/datatables_style_plugin.inc:117
+msgid "Choose the pagination of the datatable."
+msgstr "Wähle die Art des Pagers"
+
