Merge "Update team members in overview"
diff --git a/kalamar.dict b/kalamar.dict
index a7b5aa6..b88a0d2 100644
--- a/kalamar.dict
+++ b/kalamar.dict
@@ -65,8 +65,36 @@
       doc => {
         ql => {
           'poliqarp-plus' => 'de/doc/ql/poliqarp-plus'
+        },
+        api => {
+          'koralquery' => 'de/doc/api/koralquery'
+        },
+        data => {
+          'annotation' => 'de/doc/data/annotation'
+        },
+        korap => {
+          'kalamar' => 'de/doc/korap/kalamar',
+          'karang' => 'de/doc/korap/karang',
+          'koral' => 'de/doc/korap/koral',
+          'krill' => 'de/doc/korap/krill',
+          'kustvakt' => 'de/doc/korap/kustvakt'
         }
       }
+    },
+    Nav => {
+      'ql' => 'Anfragesprachen',
+      '#segments' => 'Einfache Segmente',
+      '#complex' => 'Komplexe Segmente',
+      '#spans' => 'Span Segmente',
+      '#paradigmatic-operators' => 'Paradigmatische Operatoren',
+      '#syntagmatic-operators' => 'Syntagmatische Operatoren',
+      '#class-operators' => 'Klassen Operatoren',
+      'regexp' => 'Reguläre Ausdrücke',
+      'data' => 'Daten',
+      'corpus' => 'Korpora',
+      'annotation' => 'Annotationen',
+      '#default-foundries' => 'Standard Foundries',
+      'faq' => 'Häufig gestellte Fragen'
     }
   },
   -en => {
@@ -125,14 +153,37 @@
     Template => {
       doc => {
         ql => {
-#          'annis' => 'doc/ql/annis',
-#          'cosmas-2' => 'doc/ql/cosmas-2',
-#          'cql' => 'doc/ql/cql',
-          'poliqarp-plus' => 'doc/ql/poliqarp-plus',
-#          'regexp' => 'doc/ql/regexp',
-#          'wildcards' => 'doc/ql/wildcards'
+          'poliqarp-plus' => 'doc/ql/poliqarp-plus'
+        },
+        api => {
+          'koralquery' => 'doc/api/koralquery'
+        },
+        data => {
+          'annotation' => 'doc/data/annotation'
+        },
+        korap => {
+          'kalamar' => 'doc/korap/kalamar',
+          'karang' => 'doc/korap/karang',
+          'koral' => 'doc/korap/koral',
+          'krill' => 'doc/korap/krill',
+          'kustvakt' => 'doc/korap/kustvakt'
         }
       }
+    },
+    Nav => {
+      'ql' => 'Query Languages',
+      '#segments' => 'Simple Segments',
+      '#complex' => 'Complex Segments',
+      '#spans' => 'Span Segments',
+      '#paradigmatic-operators' => 'Paradigmatic Operators',
+      '#syntagmatic-operators' => 'Syntagmatic Operators',
+      '#class-operators' => 'Class Operators',
+      'regexp' => 'Regular Expressions',
+      'data' => 'Data',
+      'corpus' => 'Corpora',
+      'annotation' => 'Annotations',
+      '#default-foundries' => 'Default Foundries',
+      'faq' => 'F.A.Q.'
     }
   }
 };
diff --git a/lib/Kalamar/Plugin/KalamarHelpers.pm b/lib/Kalamar/Plugin/KalamarHelpers.pm
index 8ae6c1e..a091a28 100644
--- a/lib/Kalamar/Plugin/KalamarHelpers.pm
+++ b/lib/Kalamar/Plugin/KalamarHelpers.pm
@@ -18,7 +18,7 @@
 
       my $base = $c->url_for('index');
       if ($base->path->parts->[0]) {
-	$base->path->trailing_slash(1);
+        $base->path->trailing_slash(1);
       };
 
       # If there is a different base - append this as a base
@@ -26,11 +26,12 @@
 
       $url->fragment($scope);
 
-      return $c->tag('object',
-	data => $url,
-	type => 'image/svg+xml',
-	alt  => $c->loc('korap_overview'),
-	id   => 'overview'
+      return $c->tag(
+        'object',
+        data => $url,
+        type => 'image/svg+xml',
+        alt  => $c->loc('korap_overview'),
+        id   => 'overview'
       );
     }
   );
@@ -48,17 +49,17 @@
       ($page, my $fragment) = split '#', $page;
 
       my $url = $c->url_with(
-	'doc',
-	scope => $scope,
-	page => $page
+        'doc',
+        scope => $scope,
+        page => $page
       );
 
       $url->fragment($fragment) if $fragment;
 
       return $c->link_to(
-	$title,
-	$url,
-	class => 'doc-link'
+        $title,
+        $url,
+        class => 'doc-link'
       );
     }
   );
@@ -87,11 +88,11 @@
       my $scope = shift;
       my $url;
       if ($page) {
-	$url = $c->url_for('doc', page => $page, scope => $scope);
-	$url->path->canonicalize;
+        $url = $c->url_for('doc', page => $page, scope => $scope);
+        $url->path->canonicalize;
       }
       else {
-	$url = $c->url_for('doc_start');
+        $url = $c->url_for('doc_start');
       };
       return $c->link_to($cb->($c), $url);
     }
@@ -111,71 +112,73 @@
       # Embed all link tags
       foreach (@$items) {
 
-	my ($active, $url) = 0;
+        my ($active, $url) = 0;
 
-	# There is a fragment!
-	if (index($_->{id}, '#') == 0) {
+        # There is a fragment!
+        if (index($_->{id}, '#') == 0) {
 
-	  my $part_scope = scalar($scope);
-	  $part_scope =~ s!\/([^\/]+)$!!;
-	  my $page = $1;
-	  my $id = $_->{id};
-	  $id =~ s/^#//;
+          my $part_scope = scalar($scope);
+          $part_scope =~ s!\/([^\/]+)$!!;
+          my $page = $1;
+          my $id = $_->{id};
+          $id =~ s/^#//;
 
-	  $url = $c->url_with(
-	    'doc',
-	    'scope' => $part_scope,
-	    'page' => $page
-	  );
+          $url = $c->url_with(
+            'doc',
+            'scope' => $part_scope,
+            'page' => $page
+          );
 
-	  $url->fragment($id);
-	}
+          $url->fragment($id);
+        }
 
-	# There is no fragment
-	else {
+        # There is no fragment
+        else {
 
-	  # The item is active
-	  if ($c->stash('page') && $c->stash('page') eq $_->{id}) {
-	    $active = 1;
-	  };
+          # The item is active
+          if ($c->stash('page') && $c->stash('page') eq $_->{id}) {
+            $active = 1;
+          };
 
-	  # Generate url with query parameter inheritance
-	  $url = $c->url_with(
-	    'doc',
-	    'scope' => $scope,
-	    'page' => $_->{id}
-	  );
+          # Generate url with query parameter inheritance
+          $url = $c->url_with(
+            'doc',
+            'scope' => $scope,
+            'page' => $_->{id}
+          );
 
-	  # Canonicalize (for empty scopes)
-	  $url->path->canonicalize;
-	};
+          # Canonicalize (for empty scopes)
+          $url->path->canonicalize;
+        };
 
-	my @classes;
-	push(@classes, $_->{'class'}) if $_->{'class'};
-	push(@classes, 'active') if $active;
+        my @classes;
+        push(@classes, $_->{'class'}) if $_->{'class'};
+        push(@classes, 'active') if $active;
 
 
-	# New list item
-	$html .= '<li';
-	if (@classes) {
-	  $html .= ' class="' . join(' ', @classes) . '"';
-	};
-	$html .= '>';
+        # New list item
+        $html .= '<li';
+        if (@classes) {
+          $html .= ' class="' . join(' ', @classes) . '"';
+        };
+        $html .= '>';
 
+        # Translate title
+        my $title = $c->loc('Nav_' . $_->{id}, $_->{title});
 
-	# Generate link
-	$html .= $c->link_to($_->{title}, $url);
+        # Generate link
+        $html .= $c->link_to($title, $url);
 
-	# Set sub entries
-	if ($_->{items} && ref($_->{items}) eq 'ARRAY') {
-	  $html .= "\n";
-	  my $subscope = $scope ? scalar($scope) . '/' . $_->{id} : $_->{id};
-	  $html .= $c->doc_navi($subscope, $_->{items});
-	  $html .= "</li>\n";
-	}
-	else {
-	  $html .= "</li>\n";
-	};
+        # Set sub entries
+        if ($_->{items} && ref($_->{items}) eq 'ARRAY') {
+          $html .= "\n";
+          my $subscope = $scope ? scalar($scope) . '/' . $_->{id} : $_->{id};
+          $html .= $c->doc_navi($subscope, $_->{items});
+          $html .= "</li>\n";
+        }
+        else {
+          $html .= "</li>\n";
+        };
       };
       return $html . "</ul>\n";
     }
@@ -192,13 +195,13 @@
 
       # Return tag
       b('<pre class="query tutorial" ' .
-	  qq!data-query="$q" data-query-cutoff="! .
-	    ($param{cutoff} ? 1 : 0) .
-	      '"' .
-		qq! data-query-language="$ql">! .
-		  '<code>' . $q . '</code>' .
-		    '</pre>'
-		);
+          qq!data-query="$q" data-query-cutoff="! .
+          ($param{cutoff} ? 1 : 0) .
+          '"' .
+          qq! data-query-language="$ql">! .
+          '<code>' . $q . '</code>' .
+          '</pre>'
+        );
     }
   );
 
@@ -210,14 +213,14 @@
 
       # Test port is defined in the stash
       if (defined $c->stash('kalamar.test_port')) {
-	return $c->stash('kalamar.test_port');
+        return $c->stash('kalamar.test_port');
       };
 
       # Check the port
       if ($c->req->url->to_abs->port == 6666 ||
-	    $c->app->mode =~ m/^development|test$/) {
-	$c->stash('kalamar.test_port' => 1);
-	return 1;
+            $c->app->mode =~ m/^development|test$/) {
+        $c->stash('kalamar.test_port' => 1);
+        return 1;
       };
 
       # No test port
diff --git a/t/docnavi.t b/t/docnavi.t
index a9dc149..122956f 100644
--- a/t/docnavi.t
+++ b/t/docnavi.t
@@ -1,8 +1,8 @@
 use Mojo::Base -strict;
-use lib '../lib', 'lib';
 use Mojolicious::Lite;
 use Test::More;
 use Test::Mojo;
+use utf8;
 
 my $t = Test::Mojo->new;
 my $app = $t->app;
@@ -16,6 +16,23 @@
 # Load plugin to test
 $app->plugin('KalamarHelpers');
 
+my $languages = [qw/en de/];
+$app->plugin('Localize' => {
+  dict => {
+    Nav => {
+      _ => sub { $languages },
+      -en => {
+        faq => 'F.A.Q.',
+        '#default-foundries' => 'Default Foundries',
+      },
+      de => {
+        faq => 'Häufige Fragen',
+        '#default-foundries' => 'Standard Foundries'
+      }
+    }
+  }
+});
+
 my $navi = [
   {
     id => 'korap',
@@ -50,8 +67,8 @@
     title => 'KorAP',
     items => [
       {
-	id => 'krill',
-	title => 'Krill',
+        id => 'krill',
+        title => 'Krill',
       }
     ]
   },
@@ -72,12 +89,12 @@
     title => 'KorAP',
     items => [
       {
-	id => 'krill',
-	title => 'Krill',
+        id => 'krill',
+        title => 'Krill',
       },
       {
-	id => 'koral',
-	title => 'Koral'
+        id => 'koral',
+        title => 'Koral'
       }
     ]
   },
@@ -86,22 +103,22 @@
     id => 'ql',
     items => [
       {
-	title => 'Cosmas II',
-	id => 'cosmas2'
+        title => 'Cosmas II',
+        id => 'cosmas2'
       },
       {
-	'title' => 'Poliqarp+',
-	'id' => 'poliqarp-plus',
-	items => [
-	  {
-	    "title" => "Simple Segments",
-	    "id" => "#segments"
-	  },
-	  {
-	    "title" => "Complex Segments",
-	    "id" => "#complex"
-	  }
-	]
+        'title' => 'Poliqarp+',
+        'id' => 'poliqarp-plus',
+        items => [
+          {
+            "title" => "Simple Segments",
+            "id" => "#segments"
+          },
+          {
+            "title" => "Complex Segments",
+            "id" => "#complex"
+          }
+        ]
       }
     ]
   },
@@ -155,12 +172,12 @@
     title => 'KorAP',
     items => [
       {
-	id => 'krill',
-	title => 'Krill',
+        id => 'krill',
+        title => 'Krill',
       },
       {
-	id => 'koral',
-	title => 'Koral'
+        id => 'koral',
+        title => 'Koral'
       }
     ]
   },
@@ -169,23 +186,23 @@
     id => 'ql',
     items => [
       {
-	title => 'Cosmas II',
-	id => 'cosmas2'
+        title => 'Cosmas II',
+        id => 'cosmas2'
       },
       {
-	'title' => 'Poliqarp+',
-	'id' => 'poliqarp-plus',
-	'class' => 'folded',
-	items => [
-	  {
-	    "title" => "Simple Segments",
-	    "id" => "#segments"
-	  },
-	  {
-	    "title" => "Complex Segments",
-	    "id" => "#complex"
-	  }
-	]
+        'title' => 'Poliqarp+',
+        'id' => 'poliqarp-plus',
+        'class' => 'folded',
+        items => [
+          {
+            "title" => "Simple Segments",
+            "id" => "#segments"
+          },
+          {
+            "title" => "Complex Segments",
+            "id" => "#complex"
+          }
+        ]
       }
     ]
   },
@@ -205,6 +222,45 @@
      'Path matches doc/ql/poliqarp-plus#complex');
 like($render, qr!class="folded active".*?Poliqarp\+!, 'Active and folded value for Poliqarp+');
 
+
+# Test for translations
+$navi = [
+  {
+    id => 'korap',
+    title => 'KorAP',
+    items => [
+      {
+        id => 'krill',
+        title => 'Krill',
+      }
+    ]
+  },
+  {
+    id => 'faq',
+    title => 'F.A.Q.'
+  }
+];
+
+$render = $app->doc_navi($navi);
+like($render, qr!/doc/korap!, 'Path matches doc/korap');
+like($render, qr!/doc/korap/krill!, 'Path matches korap/krill');
+like($render, qr!<a href="/doc/korap/krill">Krill</a>!,
+     'Path matches korap/krill');
+like($render, qr!<a href="/doc/faq">F\.A\.Q\.</a>!,
+     'Path matches FAQ');
+
+# Change preferred language
+$languages = [qw/de en/];
+
+$render = $app->doc_navi($navi);
+like($render, qr!/doc/korap!, 'Path matches doc/korap');
+like($render, qr!/doc/korap/krill!, 'Path matches korap/krill');
+like($render, qr!<a href="/doc/korap/krill">Krill</a>!,
+     'Path matches korap/krill');
+like($render, qr!<a href="/doc/faq">Häufige Fragen</a>!,
+     'Path matches FAQ');
+
+
 done_testing;
 
 __END__
diff --git a/templates/de/doc/api/koralquery.html.ep b/templates/de/doc/api/koralquery.html.ep
new file mode 100644
index 0000000..0df876a
--- /dev/null
+++ b/templates/de/doc/api/koralquery.html.ep
@@ -0,0 +1,7 @@
+% layout 'main', title => 'KorAP: KoralQuery';
+
+<h2>KoralQuery</h2>
+
+<p><strong>Hauptentwickler:</strong> Nils Diewald, Joachim Bingel</p>
+
+<p>Die Spezifikation für KoralQuery ist auf <%=doc_ext_link_to 'GitHub', "http://korap.github.io/Koral"%> verfügbar.</p>
diff --git a/templates/de/doc/data/annotation.html.ep b/templates/de/doc/data/annotation.html.ep
new file mode 100644
index 0000000..4fcb2a1
--- /dev/null
+++ b/templates/de/doc/data/annotation.html.ep
@@ -0,0 +1,115 @@
+% layout 'main', title => 'KorAP: Annotationen';
+
+<h2>Annotationen</h2>
+
+<p>KorAP bietet Zugriff auf mehrere Ebenen von Annotationen, die aus mehreren Ressourcen stammen, so genannten <em>foundries</em>.</p>
+
+<section id="base">
+  <h3>Basis Foundry</h3>
+  <p>Die Basis Foundry steht allen Korpora zur Verfügung und dient als gemeinsame Grundlage für die Dokumentenstrukturannotation im layer <code>s</code>. Sie unterstützt drei Arten von Spans: <code>&lt;base/s=s&gt;</code> für Sätze, <code>&lt;base/s=p&gt;</code> für Absätze und <code>&lt;base/s=t&gt;</code> für den gesamten Text.</p>
+  %= doc_query poliqarp => '<base/s=s>', cutoff => 1
+</section>
+
+
+<section id="cnx">
+  <h3>Connexor (<code>cnx</code>)</h3>
+  <p>Connexor-Annotationen liefern die folgenden Layer für das <code>cnx</ code> Präfix:</p>
+  <dl>
+    <dt><abbr data-type="token" title="Lemma">l</abbr></dt>
+    <dd>Alle Lemmata sind in Kleinbuchstaben geschrieben. Komposita werden aufgeteilt, z. B. wird das Token &quot;Leitfähigkeit&quot durch die Lemmata &quot;leit&quot; und &quot;fähigkeit&quot; gefunden - nicht durch das Lemma &quot;leitfähigkeit&quot.</dd>
+    <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
+    <dd>Part-of-Speech-Informationen werden in Großbuchstaben geschrieben und basieren auf STTS</dd>
+    <dt><abbr data-type="token" title="Syntaktische Informationen">syn</abbr></dt>
+    <dd>Enthält Token-basierte Informationen wie <code>@PREMOD</code>, <code>@NH</code>, <code>@MAIN</code> ...</dd>
+    <dt><abbr data-type="token" title="Morphosyntaktische Information">m</abbr></dt>
+    <dd>Enthält Informationen über Tempus (<code>PRES</code> ...), Modus (<code>IND</code>), Numerus (<code>PL</code> ...) etc.</dd>
+    <dt><abbr data-type="span" title="Phrasen">c</abbr></dt>
+    <dd>Es stehen nur Nominalphrasen zur Verfügung und alle Nominalphrasen sind in Kleinbuchstaben geschrieben (<code>np</code>)</dd>
+  </dl>
+  %= doc_query poliqarp => '[cnx/p=CC]', cutoff => 1
+</section>
+
+
+<section id="corenlp">
+  <h3>CoreNLP (<code>corenlp</code>)</h3>
+  <dl>
+    <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
+    <dd>Part-of-Speech-Informationen werden in Großbuchstaben geschrieben und basieren auf STTS</dd>
+    <dt><abbr data-type="token" title="Constituency">c</abbr></dt>
+    <dd>Konstituenten Informationen folgen den Annotationen des <a href="http://www.coli.uni-saarland.de/projects/sfb378/negra-corpus/negra-corpus.html">negr@ Korpus</a>.</dd>
+    <dt><abbr data-type="token" title="Named Entity">ne</abbr></dt>
+    <dd>Enthält benannte Entitäten wie <code>I-PER</code>, <code>I-ORG</code> etc.</dd>
+    <dt><abbr data-type="token" title="Named Entity">ne_hgc_175m_600</abbr></dt>
+    <dd>S.o</dd>
+    <dt><abbr data-type="token" title="Named Entity">ne_dewac_175_175m_600</abbr></dt>
+    <dd>S.o.</dd>
+  </dl>
+  %= doc_query poliqarp => '[corenlp/ne_dewac_175m_600=I-ORG]', cutoff => 1
+</section>
+
+
+<section id="tt">
+  <h3>TreeTagger (<code>tt</code>)</h3>
+  <dl>
+    <dt><abbr data-type="token" title="Lemma">l</abbr></dt>
+    <dd>Alle Nicht-Nomen-Lemmata sind in Kleinbuchstaben geschrieben, Substantive sind in Großbuchstaben geschrieben. Komposita bleiben intakt (z. B. <code>Normalbedingung</code>).</dd>
+    <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
+    <dd>Alle Part-of-Speech-Informationen werden in Großbuchstaben geschrieben und basieren auf STTS.</dd>
+  </dl>
+  %= doc_query poliqarp => '[tt/p=ADV]', cutoff => 1
+</section>
+
+
+<section id="mate">
+  <h3>Mate (<code>mate</code>)</h3>
+  <dl>
+    <dt><abbr data-type="token" title="Lemma">l</abbr></dt>
+    <dd>Alle Lemmata sind in Kleinbuchstaben geschrieben. Komposita bleiben intakt (z. B. <code>buchstabenbezeichnung</code>)</dd>
+    <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
+    <dd>Alle Part-of-Speech-Informationen sind in Großbuchstaben geschrieben und basieren auf STTS</dd>
+    <dt><abbr data-type="token" title="Morphosyntaktische Informationen">m</abbr></dt>
+    <dd>Enthält Informationen über Tempus (<code>tense:pres</code> ...), Modus (<code>mood:ind</code>), Nummerus (<code>number:pl</code> ...), Geschlecht (<code>gender:masc</code> ...) etc.</dd>
+  </dl>
+  %= doc_query poliqarp => '[mate/m=gender:fem]', cutoff => 1
+</section>
+
+
+<section id="opennlp">
+  <h3>OpenNLP (<code>opennlp</code>)</h3>
+  <dl>
+    <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
+    <dd>Alle Part-of-Speech-Informationen sind in Großbuchstaben geschrieben und basieren auf STTS</dd>
+  </dl>
+  %= doc_query poliqarp => '[opennlp/p=PDAT]', cutoff => 1
+</section>
+
+<!--
+<section id="xip">
+  <h3>Xerox Incremental Parser (<code>xip</code>)</h3>
+  <dl>
+    <dt><abbr data-type="token" title="Lemma">l</abbr></dt>
+    <dd>All non-noun lemmas are written in lower case, nouns are written upper case. Composita are split, e.g. the token <code>Leitfähigkeit</code> is matched by the lemmas <code>leiten</code> and <code>Fähigkeit</code> - and by a merged and pretty useless <code>leitenfähigkeit</code> (This is going to change)</dd>
+    <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
+    <dd>All part-of-spech information is written in capital letters and is based on STTS</dd>
+    <dt><abbr data-type="span" title="Phrases">c</abbr></dt>
+    <dd>Some phrases to create sentences, all upper case (<code>NP</code>, <code>NPA</code>, <code>NOUN</code>, <code>VERB</code>, <code>PREP</code>, <code>AP</code> ...)</dd>      
+  </dl>
+  %= doc_query poliqarp => '[xip/p=ADJ]', cutoff => 1
+  %= doc_query poliqarp => '<xip/c=VERB>', cutoff => 1
+</section>
+-->
+
+<section id="default-foundries">
+  <h3>Standard Foundries</h3>
+  <p>Für Abfragen auf bestimmten Ebenen ohne vorgegebene Foundries stellt KorAP Standard Foundries zur Verfügung. Die Standardfoundries gelten für die folgenden Ebenen:</p>
+
+  <ul>
+    <li><strong>orth</strong>: <code>opennlp</code></li>
+    <li><strong>lemma</strong>: <code>tt</code></li>
+    <li><strong>pos</strong>: <code>tt</code></li>
+  </ul>
+
+  <blockquote>
+    <p>Im Lucene-Backend kann die <code>orth</code>-Ebene nur an eine bestimmte Foundry gebunden werden, da nur eine Tokenisierung unterstützt wird.</p>
+  </blockquote>
+</section>
diff --git a/templates/de/doc/korap/kalamar.html.ep b/templates/de/doc/korap/kalamar.html.ep
new file mode 100644
index 0000000..b43d522
--- /dev/null
+++ b/templates/de/doc/korap/kalamar.html.ep
@@ -0,0 +1,11 @@
+% layout 'main', title => 'KorAP: Kalamar';
+
+<h2>Kalamar</h2>
+
+%= korap_overview 'kalamar'
+
+<p><strong>Hauptentwickler:</strong> Nils Diewald</p>
+
+<p>Kalamar ist das wichtigste User-Frontend von KorAP. Es basiert auf <%= doc_ext_link_to 'Mojolicious', "http://mojolicio.us/" %> und ist in Perl und JavaScript geschrieben.</p>
+
+<p>Kalamar ist Open Source und steht unter <%= doc_ext_link_to 'GitHub', "https://github.com/KorAP/Kalamar"%> zur Verfügung.</p>
diff --git a/templates/de/doc/korap/karang.html.ep b/templates/de/doc/korap/karang.html.ep
new file mode 100644
index 0000000..84dc66d
--- /dev/null
+++ b/templates/de/doc/korap/karang.html.ep
@@ -0,0 +1,9 @@
+% layout 'main', title => 'KorAP: Karang';
+
+<h2>Karang</h2>
+
+%= korap_overview 'karang'
+
+<p><strong>Hauptentwickler:</strong> Piotr Pęzik</p>
+
+<p>Karang ist ein Neo4j-basiertes Such-Backend für KorAP.</p>
diff --git a/templates/de/doc/korap/koral.html.ep b/templates/de/doc/korap/koral.html.ep
new file mode 100644
index 0000000..ea90c03
--- /dev/null
+++ b/templates/de/doc/korap/koral.html.ep
@@ -0,0 +1,11 @@
+% layout 'main', title => 'KorAP: Koral';
+
+<h2>Koral</h2>
+
+%= korap_overview 'koral'
+
+<p><strong>Hauptentwickler:</strong> Joachim Bingel</p>
+
+<p>Koral ist eine Bibliothek, die für die Übersetzung verschiedener Korpus-Abfragesprachen nach <%= doc_link_to('KoralQuery', 'api', 'koralquery')%> konzipiert ist. Derzeit unterstützte Abfragesprachen sind <%= doc_link_to 'Cosmas II', 'ql', 'cosmas2'%>, <%= doc_link_to('Annis QL', 'ql', 'annis')%>, <%= doc_link_to ( 'Poliqarp +', 'ql', 'poliqarp-plus')%> (eine erweiterte Version von Poliqarp) und <%= doc_link_to('CQL', 'ql', 'cql')%>.
+
+<p>Koral ist Open Source und steht unter <%= doc_ext_link_to 'GitHub', "https://github.com/KorAP/Koral"%> zur Verfügung.</p>
diff --git a/templates/de/doc/korap/krill.html.ep b/templates/de/doc/korap/krill.html.ep
new file mode 100644
index 0000000..39b6aec
--- /dev/null
+++ b/templates/de/doc/korap/krill.html.ep
@@ -0,0 +1,11 @@
+% layout 'main', title => 'KorAP: Krill';
+
+<h2>Krill</h2>
+
+%= korap_overview 'krill'
+
+<p><strong>Hauptentwickler:</strong> Nils Diewald, Eliza Margaretha</p>
+
+<p>Krill ist eine <%= doc_ext_link_to 'Lucene', "https://lucene.apache.org/"%> basierte Suchmaschine für große kommentierte Korpora, die als Backend-Komponente für KorAP verwendet wird. Es ist die Referenzimplementierung für <%= doc_link_to('KoralQuery', 'api', 'koralquery')%>, die die meisten Protokolleigenschaften abdeckt.</p>
+
+<p>Krill ist Open Source und steht unter <%= doc_ext_link_to 'GitHub', "https://github.com/KorAP/Krill"%> zur Verfügung.</p>
diff --git a/templates/de/doc/korap/kustvakt.html.ep b/templates/de/doc/korap/kustvakt.html.ep
new file mode 100644
index 0000000..8cc2d81
--- /dev/null
+++ b/templates/de/doc/korap/kustvakt.html.ep
@@ -0,0 +1,9 @@
+% layout 'main', title => 'KorAP: Kustvakt';
+
+<h2>Kustvakt</h2>
+
+%= korap_overview 'kustvakt'
+
+<p><strong>Hauptentwickler:</strong> Michael Hanl, Eliza Margaretha, Franck Bodmer</p>
+
+<p>Kustvakt ist eine Benutzer- und Rechte-Management-Software, die in der Lage ist, Abfragen für richtlinienbasierte Dokumentenbeschränkungen umzuschreiben.</p>
diff --git a/templates/doc/data/annotation.html.ep b/templates/doc/data/annotation.html.ep
index 49e48b7..032375c 100644
--- a/templates/doc/data/annotation.html.ep
+++ b/templates/doc/data/annotation.html.ep
@@ -6,8 +6,8 @@
 
 <section id="base">
   <h3>Base Foundry</h3>
-  <p>The base foundry is available for all corpora and acts as a common ground for document structure annotation. It supports two types of spans: <code>&lt;s&gt;</code> for sentences and <code>&lt;p&gt;</code> for paragraphs - this will likely change in the next index version. These spans lack prefix information!</p>
-  %= doc_query poliqarp => '<s>', cutoff => 1
+  <p>The base foundry is available for all corpora and acts as a common ground for document structure annotation in the layer <code>s</code>. It supports three types of spans: <code>&lt;base/s=s&gt;</code> for sentences, <code>&lt;base/s=p&gt;</code> for paragraphs, and <code>&lt;base/s=t&gt;</code> for the text span</p>
+  %= doc_query poliqarp => '<base/s=s>', cutoff => 1
 </section>
 
 
@@ -33,8 +33,14 @@
 <section id="corenlp">
   <h3>CoreNLP (<code>corenlp</code>)</h3>
   <dl>
-    <dt><abbr data-type="token" title="Named Entity">ne_hgc_175m_600</abbr></dt>
+    <dt><abbr data-type="token" title="Part-of-Speech">p</abbr></dt>
+    <dd>Part-of-speech information is written in capital letters and is based on STTS</dd>
+    <dt><abbr data-type="token" title="Constituency">c</abbr></dt>
+    <dd>Constituency information follows the annotations of the <a href="http://www.coli.uni-saarland.de/projects/sfb378/negra-corpus/negra-corpus.html">negr@ corpus</a>.</dd>
+    <dt><abbr data-type="token" title="Named Entity">ne</abbr></dt>
     <dd>Contains named entities like <code>I-PER</code>, <code>I-ORG</code> etc.</dd>
+    <dt><abbr data-type="token" title="Named Entity">ne_hgc_175m_600</abbr></dt>
+    <dd>See above</dd>
     <dt><abbr data-type="token" title="Named Entity">ne_dewac_175_175m_600</abbr></dt>
     <dd>See above</dd>
   </dl>
@@ -77,7 +83,7 @@
   %= doc_query poliqarp => '[opennlp/p=PDAT]', cutoff => 1
 </section>
 
-
+<!--
 <section id="xip">
   <h3>Xerox Incremental Parser (<code>xip</code>)</h3>
   <dl>
@@ -91,10 +97,11 @@
   %= doc_query poliqarp => '[xip/p=ADJ]', cutoff => 1
   %= doc_query poliqarp => '<xip/c=VERB>', cutoff => 1
 </section>
+-->
 
 <section id="default-foundries">
   <h3>Default Foundries</h3>
-  <p>For queries on specific layers without given foundries, KorAP provides default foundries, that can be overwritten by user configurations. The default foundries apply to the following layers:</p>
+  <p>For queries on specific layers without given foundries, KorAP provides default foundries<!--, that can be overwritten by user configurations-->. The default foundries apply to the following layers:</p>
 
   <ul>
     <li><strong>orth</strong>: <code>opennlp</code></li>
diff --git a/templates/doc/faq.html.ep b/templates/doc/faq.html.ep
index a7c41e2..72b9f22 100644
--- a/templates/doc/faq.html.ep
+++ b/templates/doc/faq.html.ep
@@ -9,6 +9,7 @@
   <p>Parts of KorAP are already available on <%= doc_ext_link_to 'GitHub', 'https://github.com/KorAP' %>, and we will publish more components in the future.</p>
 </section>
 
+<!--
 <section>
   <h3>Why can’t I create an account?</h3>
   <blockquote>
@@ -22,12 +23,15 @@
   <h3>Why is this written in English only?</h3>
   <p>This is a temporary collection of info before we develop proper documentation.</p>
 </section>
+-->
 
 <section>
   <h3>Why do some queries take a long time to finish, or in the end yield no results?</h3>
   <p>In the alpha phase, part of our tasks is to optimize the system. In the beginning, one may expect some actions to take an inordinate amount of time, but this is getting better and better. If you notice a persistent failure in some specific case, please be so kind as to <%= mail_to_chiffre join('@', 'korap', 'ids-mannheim.de'), subject => 'I found a bug in the query system', begin %>let us know<% end %>.</p>
 </section
 
+
+<!--
 <section>
   <h3>How do I know which tagset to use for collocation analysis properties?</h3>
   <blockquote>
@@ -45,13 +49,15 @@
   <p>The collocation search view uses collocation properties to find collocates in the context of the specified query. This property can be of either a POS or a lemma. The operator assigns this property either an inclusive and exclusive state (i.e. negation) or can specify that the selected property is a regular expression. You can assign multiple properties per queries.</p>
   <p>For more information on this topic, see our <%= doc_ext_link_to 'tutorial video', 'http://youtu.be/hiKHw50Hq9k' %>.</p>
 </section>
+-->
 
 <section>
   <h3>I want to report an issue, how do I do it?</h3>
-  <p>At some point, we shall move to a public ticketing system. For now, we are mostly aware of the outstanding issues and some others are listed below. When you want to report an issue, please send us an <%= mail_to_chiffre join('@', 'korap', 'ids-mannheim.de'), subject => 'I found an issue', begin %>e-mail<% end %>.</p>
+  <p>Please refer to our public ticketing system <%= doc_ext_link_to 'for the frontend at GitHub', 'https://github.com/KorAP/Kalamar/issues' %>, to report on any issues. If you don't have a GitHub account, please send us an <%= mail_to_chiffre join('@', 'korap', 'ids-mannheim.de'), subject => 'I found an issue', begin %>e-mail<% end %>.</p>
   %# This option is the preferred one because it gathers some (and will in time gather more) important versioning data.
 </section>
 
+    <!--
 <section>
   <h3>Are you aware of this/that issue?</h3>
   <p>What follows is a list of selected issues that might affect the users. We are aware of them and will address them. (When? As soon as possible, given the development schedule and time constraints.)</p>
@@ -59,14 +65,13 @@
     <li><strong>Some matches are completely wrong - what’s going on?</strong><br>
       Before the data can be searched, it has to be preprocessed and indexed. These processes can also suffer from errors, especially if the input data format is not perfectly regular, as a result of prior conversions. While fixes in the frontend and in the backend are uploaded quickly, fixes in the preprocessing pipeline (including tokenization, lemmatization etc.) only appear after reindexation - and that doesn’t happen very often. So these bugs will stay online for a while even if they are already fixed in the datasets. Known index bugs already fixed but with the fixes not visible immediately include:
       <ul>
-	<li>Sentence annotations for Treetagger</li>
-	<li>All annotations for Mate (including lemmata)</li>
-	<li>Some annotations on the first token of a text (includes first sentences and first paragraphs, in case they start at the beginning of a text)</li>
+	      <li>Sentence annotations for Treetagger</li>
+	      <li>All annotations for Mate (including lemmata)</li>
+	      <li>Some annotations on the first token of a text (includes first sentences and first paragraphs, in case they start at the beginning of a text)</li>
       </ul>
     </li>
   </ul>
-
   <p>We will be happy to get reports about all wrong matches not related to these bugs.</p>
 </section>
-
+-->
 
diff --git a/templates/doc/navigation.json b/templates/doc/navigation.json
index 931fa7f..12e4683 100644
--- a/templates/doc/navigation.json
+++ b/templates/doc/navigation.json
@@ -4,24 +4,24 @@
     "id" : "korap",
     "items" : [
       {
-	"title" : "Kalamar",
-	"id" : "kalamar"
+        "title" : "Kalamar",
+        "id" : "kalamar"
       },
       {
-	"title" : "Kustvakt",
-	"id" : "kustvakt"
+        "title" : "Kustvakt",
+        "id" : "kustvakt"
       },
       {
-	"title" : "Koral",
-	"id" : "koral"
+        "title" : "Koral",
+        "id" : "koral"
       },
       {
-	"title" : "Krill",
-	"id" : "krill"
+        "title" : "Krill",
+        "id" : "krill"
       },
       {
-	"title" : "Karang",
-	"id" : "karang"
+        "title" : "Karang",
+        "id" : "karang"
       }
     ]
   },
@@ -30,55 +30,55 @@
     "id" : "ql",
     "items" : [
       {
-	"title" : "Cosmas II",
-	"id" : "cosmas-2"
+        "title" : "Cosmas II",
+        "id" : "cosmas-2"
       },
       {
-	"title" : "Poliqarp+",
-	"id" : "poliqarp-plus",
-	"class" : "folded",
-	"items" : [
-	  {
-	    "title" : "Simple Segments",
-	    "id" : "#segments"
-	  },
-	  {
-	    "title" : "Complex Segments",
-	    "id" : "#complex"
-	  },
-	  {
-	    "title" : "Span Segments",
-	    "id" : "#spans"
-	  },
-	  {
-	    "title" : "Paradigmatic Operators",
-	    "id" : "#paradigmatic-operators"
-	  },
-	  {
-	    "title" : "Syntagmatic Operators",
-	    "id" : "#syntagmatic-operators"
-	  },
-	  {
-	    "title" : "Class Operators",
-	    "id" : "#class-operators"
-	  }
-	]
+        "title" : "Poliqarp+",
+        "id" : "poliqarp-plus",
+        "class" : "folded",
+        "items" : [
+          {
+            "title" : "Simple Segments",
+            "id" : "#segments"
+          },
+          {
+            "title" : "Complex Segments",
+            "id" : "#complex"
+          },
+          {
+            "title" : "Span Segments",
+            "id" : "#spans"
+          },
+          {
+            "title" : "Paradigmatic Operators",
+            "id" : "#paradigmatic-operators"
+          },
+          {
+            "title" : "Syntagmatic Operators",
+            "id" : "#syntagmatic-operators"
+          },
+          {
+            "title" : "Class Operators",
+            "id" : "#class-operators"
+          }
+        ]
       },
       {
-	"title" : "Annis QL",
-	"id" : "annis"
+        "title" : "Annis QL",
+        "id" : "annis"
       },
       {
-	"title" : "CQL",
-	"id" : "cql"
+        "title" : "CQL",
+        "id" : "cql"
       },
       {
-	"title" : "Regular Expressions",
-	"id" : "regexp"
+        "title" : "Regular Expressions",
+        "id" : "regexp"
       },
       {
-	"title" : "Wildcards",
-	"id" : "wildcards"
+        "title" : "Wildcards",
+        "id" : "wildcards"
       }
     ]
   },
@@ -87,54 +87,54 @@
     "id" : "data",
     "items" : [
       {
-	"title" : "Corpora",
-	"id" : "corpus",
-	"class" : "folded",
-	"items" : [
-	  {
-	    "title" : "DeReKo",
-	    "id" : "#dereko"
-	  }
-	]
+        "title" : "Corpora",
+        "id" : "corpus",
+        "class" : "folded",
+        "items" : [
+          {
+            "title" : "DeReKo",
+            "id" : "#dereko"
+          }
+        ]
       },
       {
-	"title" : "Annotations",
-	"id" : "annotation",
-	"class" : "folded",
-	"items" : [
-	  {
-	    "title" : "Base",
-	    "id" : "#base"
-	  },
-	  {
-	    "title" : "Connexor",
-	    "id" : "#cnx"
-	  },
-	  {
-	    "title" : "CoreNLP",
-	    "id" : "#corenlp"
-	  },
-	  {
-	    "title" : "TreeTagger",
-	    "id" : "#tt"
-	  },
-	  {
-	    "title" : "Mate",
-	    "id" : "#mate"
-	  },
-	  {
-	    "title" : "OpenNLP",
-	    "id" : "#opennlp"
-	  },
-	  {
-	    "title" : "XIP",
-	    "id" : "#xip"
-	  },
-	  {
-	    "title" : "Default Foundries",
-	    "id" : "#default-foundries"
-	  }
-	]
+        "title" : "Annotations",
+        "id" : "annotation",
+        "class" : "folded",
+        "items" : [
+          {
+            "title" : "Base",
+            "id" : "#base"
+          },
+          {
+            "title" : "Connexor",
+            "id" : "#cnx"
+          },
+          {
+            "title" : "CoreNLP",
+            "id" : "#corenlp"
+          },
+          {
+            "title" : "TreeTagger",
+            "id" : "#tt"
+          },
+          {
+            "title" : "Mate",
+            "id" : "#mate"
+          },
+          {
+            "title" : "OpenNLP",
+            "id" : "#opennlp"
+          },
+          {
+            "title" : "XIP",
+            "id" : "#xip"
+          },
+          {
+            "title" : "Default Foundries",
+            "id" : "#default-foundries"
+          }
+        ]
       }
     ]
   },
@@ -143,20 +143,20 @@
     "id" : "api",
     "items" : [
       {
-	"title" : "KoralQuery",
-	"id" : "koralquery"
+        "title" : "KoralQuery",
+        "id" : "koralquery"
       },
       {
-	"title" : "Search API",
-	"id" : "search"
+        "title" : "Search API",
+        "id" : "search"
       },
       {
-	"title" : "Match API",
-	"id" : "match"
+        "title" : "Match API",
+        "id" : "match"
       },
       {
-	"title" : "User API",
-	"id" : "user"
+        "title" : "User API",
+        "id" : "user"
       }
     ]
   },
diff --git a/templates/layouts/main.html.ep b/templates/layouts/main.html.ep
index f887155..f91aab7 100644
--- a/templates/layouts/main.html.ep
+++ b/templates/layouts/main.html.ep
@@ -19,7 +19,7 @@
   <body<% if ($embedded) { %> class="embedded"<% } %>>
     <div id="kalamar-bg"></div>
 
-% if (!user_auth && stash('auth_support')) { # user not logged in
+% if (!$embedded && !user_auth && stash('auth_support')) { # user not logged in
 % content_for 'sidebar', begin
 % if (flash('handle_or_email') && !param('handle_or_email')) {
 %   param(handle_or_email => flash('handle_or_email'));
@@ -38,6 +38,7 @@
 %#    <li><%= link_to loc('register') => 'register' %></li>
 %#    <li><%= link_to loc('pwdforgotten') => 'pwd_forgotten' %></li>
 %#  </ul>
+
 </fieldset>
 % end
 % }