The corpus is localizable in the poliqarp tutorial

Change-Id: I4717c6390f57e892767600a4c4b8d11d339e0086
diff --git a/templates/de/doc/ql/poliqarp-plus.html.ep b/templates/de/doc/ql/poliqarp-plus.html.ep
index 3540b90..c1d9120 100644
--- a/templates/de/doc/ql/poliqarp-plus.html.ep
+++ b/templates/de/doc/ql/poliqarp-plus.html.ep
@@ -9,15 +9,15 @@
 
   <p>Die kleinsten Elemente von Poliqarp sind Segmente. Meistens repräsentieren Segmente Wörter und können leicht abgefragt werden:</p>
 
-  %= doc_query poliqarp => loc('Q_poliqarp_simple', 'Tree')
+  %= doc_query poliqarp => loc('Q_poliqarp_simple', '** Tree')
 
   <p>Abfolgen einfacher Segmente werden durch Leerzeichen getrennt:</p>
 
-  %= doc_query poliqarp => loc('Q_poliqarp_simpleseq', 'the Tree')
+  %= doc_query poliqarp => loc('Q_poliqarp_simpleseq', '** the Tree')
 
   <p>Einfache Segmente beziehen sich immer auf die Oberflächenform eines Wortes. Wenn Sie nach einer Oberflächenform ohne Beachtung der Groß- und Kleinschreibung suchen, können Sie <code>/i</code> anfügen.</p>
 
-  %= doc_query poliqarp => loc('Q_poliqarp_simpleci', 'run/i')
+  %= doc_query poliqarp => loc('Q_poliqarp_simpleci', '** run/i')
 
   <p>Die Abfrage oben findet alle Vorkommen des Wortes unabhängig von ihrer Großschreibung.
 
@@ -25,20 +25,20 @@
 
   <p>Segmente können auch durch <%= doc_link_to 'Reguläre Ausdrücke', 'ql', 'regexp' %> abgefragt werden - indem das Segment mit doppelten Anführungszeichen umschlossen wird.</p>
 
-  %= doc_query poliqarp => '"l(au|ie)fen"'
+  %= doc_query poliqarp => loc('Q_poliqarp_re', '** "r(u|a)n"'), cutoff => 1
 
   <p>Reguläre Ausdrücke stimmen immer mit dem gesamten Segment überein,
     d.h. die obige Abfrage findet Wörter, die mit dem ersten Buchstaben des Ausdrucks beginnen und mit dem letzten Buchstaben enden. Um Teilausdrücke zu unterstützen, können Sie das Flag <code>/x</code> verwenden.</p>
 
-    %= doc_query poliqarp => '"l(au|ie)fen"/x', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_rex', '** "r(u|a)n"/x'), cutoff => 1
 
   <p>Das <code>/x</code> flag sucht nach allen Segmenten, die eine Sequenz von Zeichen enthalten, die mit dem regulären Ausdruck übereinstimmen. Das bedeutet, dass die obige Abfrage äquivalent zu der Folgenden ist:</p>
 
-  %= doc_query poliqarp => '".*?l(au|ie)fen.*?"', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_recontext', '** ".*?r(u|a)n.*?"'), cutoff => 1
 
   <p>Das <Code>/x</code> Flag kann auch in Verbindung mit exakten Ausdrücken verwendet werden, um nach Teilzeichenketten zu suchen:</p>
 
-  %= doc_query poliqarp => 'trenn/xi', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_simplex', '** part/xi'), cutoff => 1
 
   <p>Die obige Abfrage findet alle Vorkommen von Segmenten mit der definierten Zeichenfolge - unabhängig von Groß-Kleinschreibung und unabhängig von ihrem Zeichenkontext.</p>
 
@@ -48,7 +48,7 @@
 
   <p>Sie können das <code>/i</code> Flag erneut anwenden, um unabhängig von Groß-Kleinschreibung zu suchen.</p>
 
-  %= doc_query poliqarp => '"l(au|ie)fen"/xi', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_rexi', '** "r(u|a)n"/xi'), cutoff => 1
 
 </section>
 
@@ -61,36 +61,36 @@
 
   %# Es gibt noch mehr spezielle Schlüssel in Poliqarp, aber KorAP bietet sie nicht an.
 
-  %= doc_query poliqarp => '[orth=Baum]'
+  %= doc_query poliqarp => loc('Q_poliqarp_complexorth', '** [orth=Tree]')
 
   <p>Die Abfrage entspricht also:</p>
 
-  %= doc_query poliqarp => 'Baum'
+  %= doc_query poliqarp => loc('Q_poliqarp_simple', '** Tree')
 
   <p>Komplexe Segmente erwarten einfache Ausdrücke als Werte, was bedeutet, dass auch der folgende Ausdruck gültig ist:</p>
 
-  %= doc_query poliqarp => '[orth="l(au|ie)fen"/xi]', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_complexre', '** [orth="r(u|a)n"/xi]'), cutoff => 1
 
   <p>Ein weiterer spezieller Schlüssel ist <code>base</code>, bezogen auf die Lemma-Annotation der <%= doc_link_to 'Standard-Foundry', 'data', 'annotation'%>.
     Die folgende Abfrage findet alle Vorkommen von Segmenten, die mit dem eingegebenen Lemma in der Standard-Foundry annotiert wurden.</p>
 
-  %= doc_query poliqarp => '[base=Baum]'
+  %= doc_query poliqarp => loc('Q_poliqarp_complexlemma', '** [base=Tree]'), cutoff => 1
 
   <p>Der dritte Sonderschlüssel ist <code>pos</code> und bezieht sich auf die Wortarten-Annotation der <%= doc_link_to 'Standard-Foundry', 'data', 'annotation'%>.
     Die folgende Abfrage findet alle attributiven Adjektive:</p>
 
-  %= doc_query poliqarp => '[pos=ADJA]'
+  %= doc_query poliqarp => loc('Q_poliqarp_complexpos', '** [pos=ADJA]'), cutoff => 1
 
   <p>Komplexe Segmente, die weitere Token-Annotationen erfordern, können die <code>foundry/layer</code> Notation dem Suchschlüssel voranstellen.
     Zum Beispiel, um alle Vorkommen von Plural-Wörtern in einer diese Information enthaltenden Foundry zu finden, können Sie mit der folgenden Abfrage suchen:</p>
 
-  %= doc_query poliqarp => '[mate/m=number:pl]'
+  %= doc_query poliqarp => loc('Q_poliqarp_complexplural', '** [mate/m=number:pl]'), cutoff => 1
 
   <h4>Negation</h4>
   <p>Die Negation von Termen in komplexen Ausdrücken kann durch Voranstellen eines Ausrufezeichens vor dem Gleichheitszeichen oder dem gesamten Term ausgedrückt werden.</p>
 
-  %= doc_query poliqarp => '[pos!=ADJA]'
-  %= doc_query poliqarp => '[!pos=ADJA]'
+  %= doc_query poliqarp => loc('Q_poliqarp_neg1', '** [pos!=ADJA]'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_neg2', '** [!pos=ADJA]'), cutoff => 1
 
   <blockquote class="warning">
     <p>Vorsicht: Negierte komplexe Segmente können nicht alleinstehend gesucht werden.
@@ -101,7 +101,7 @@
 
   <p>Ein spezielles Segment ist das leere Segment, das jedem Wort im Index entspricht.</p>
 
-  %= doc_query poliqarp => '[]'
+  %= doc_query poliqarp => '[]', cutoff => 1
 
   <p>Leere Segmente sind nützlich, um Abstände von Wörtern auszudrücken, indem sie <%= doc_link_to 'Wiederholungen', 'ql', 'poliqarp-plus#syntagmatic-operators-repetitions' %> verwenden.</p>
 
@@ -117,7 +117,7 @@
   <p>Nicht alle Segmente sind an Worte gebunden - manche sind an Konzepte gebunden, die mehrere Wörter überspannen, z. B. Nominalphrasen, Sätze oder Absätze.
 Span-Segmente können durch spitze Klammern anstelle von eckigen Klammern gesucht werden.</p>
 
-  %= doc_query poliqarp => '<xip/c=INFC>'
+  %= doc_query poliqarp => loc('Q_poliqarp_span', '** <corenlp/c=NP>'), cutoff => 1
     
     <p>Ansonsten können sie genauso behandelt werden wie einfache oder komplexe Segmente.</p>
 </section>
@@ -127,24 +127,24 @@
 
   <p>Ein komplexes Segment kann mehrere Eigenschaften haben, die ein Token erfüllen muss. Zum Beispiel, um nach allen Wörtern einer bestimmten Oberflächenform eines bestimmten Lemmas (egal ob großgeschrieben oder nicht) zu suchen, können Sie folgende Abfrage nutzen:</p>
 
-  %= doc_query poliqarp => '[orth=laufe/i & base=Lauf]'
+  %= doc_query poliqarp => loc('Q_poliqarp_and', '** [orth=run/i & base=Run]'), cutoff => 1
 
   <p>Das Kaufmanns-Und kombiniert mehrere Eigenschaften mit einem logischen UND.
 Die Ausdrücke des komplexen Segments können negiert werden wie zuvor eingeführt.</p>
 
-  %= doc_query poliqarp => '[orth=laufe/i & base!=Lauf]'
+  %= doc_query poliqarp => loc('Q_poliqarp_andneg1', '** [orth=run/i & base!=Run]'), cutoff => 1
 
   <p>Die folgende Abfrage ist daher äquivalent:</p>
 
-  %= doc_query poliqarp => '[orth=laufe/i & !base=Lauf]'
+  %= doc_query poliqarp => loc('Q_poliqarp_andneg2', '** [orth=run/i & !base=Run]'), cutoff => 1
 
   <p>Alternativen können mit dem Balkensymbol ausgedrückt werden:</p>
 
-  %= doc_query poliqarp => '[base=laufen | base=gehen]'
+  %= doc_query poliqarp => loc('Q_poliqarp_or', '** [base=run | base=go]'), cutoff => 1
 
   <p>Alle diese Unterausdrücke können mit runden Klammern gruppiert werden, um komplexe boolesche Ausdrücke zu bilden:</p>
 
-  %= doc_query poliqarp => '[(base=laufen | base=gehen) & tt/pos=VVFIN]'
+  %= doc_query poliqarp => loc('Q_poliqarp_group', '** [(base=run | base=go) & tt/pos=VVFIN]'), cutoff => 1
 </section>
 
 <section id="syntagmatic-operators">
@@ -154,19 +154,19 @@
 
   <p>Sequenzen können verwendet werden, um Segmente in einer bestimmten Reihenfolge zu suchen. Hierfür werden die einfachen Ausdrücke mit Leerzeichen getrennt.</p>
 
-  %= doc_query poliqarp => 'der alte Mann'
+  %= doc_query poliqarp => loc('Q_poliqarp_seq', '** the old man'), cutoff => 1
 
   <p>Sie können natürlich auch mit komplexen Segmenten suchen:</p>
 
-  %= doc_query poliqarp => '[orth=der][orth=alte][orth=Mann]'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqcomplex', '** [orth=the][orth=old][orth=man]'), cutoff => 1
 
   <p>Jetzt können Sie auch den Nutzen des leeren Segments erkennen, um nach Wörtern zu suchen, die Sie nicht kennen:</p>
 
-  %= doc_query poliqarp => '[orth=der][][orth=Mann]'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqcomplexempty', '** [orth=the][][orth=man]'), cutoff => 1
 
   <p>Sie können Segmente und Span-Segmente auch in Sequenzen mischen, um beispielsweise nach einem Wort am Anfang eines Satzes zu suchen (das als erstes Wort nach dem Ende eines Satzes interpretiert werden kann).</p>
 
-  %= doc_query poliqarp => '<base/s=s>[orth=Der]'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqspan', '** <base/s=s>[orth=The]'), cutoff => 1
 
   <h4>Gruppen</h4>
 
@@ -176,15 +176,15 @@
 
   <p>Alternativen erlauben die Suche nach alternativen Segmenten oder Sequenzen von Segmenten, ähnlich dem paradigmatischen Operator. Sie haben bereits gesehen, dass Sie nach alternativen Adjektiv-Sequenzen suchen können, indem Sie eingeben:</p>
 
-  %= doc_query poliqarp => 'der [orth=alte | orth=junge] Mann'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqor', '** the [orth=old | orth=young] man'), cutoff => 1
 
   <p>Allerdings bereitet dieser Ausdruck Probleme, falls Sie nach Alternativen von Sequenzen anstatt von Begriffen suchen möchten. In diesem Fall können Sie syntagmatische Alternativen und Gruppen verwenden:</p>
 
-  %= doc_query poliqarp => '(dem jungen | der alte) Mann'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqorgroup1', '** the (young man | old woman)'), cutoff => 1
 
   <p>Das Balkensymbol funktioniert genauso wie bei der paradigmatischen Alternative, unterstützt aber Sequenzen unterschiedlicher Länge als Operanden. Die obige Abfrage nach einem alternativen Adjektiv kann daher umformuliert werden als:</p>
 
-  %= doc_query poliqarp => 'der (junge | alte) Mann'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqorgroup2', '** the (old | young) man'), cutoff => 1
 
   <h4 id="syntagmatic-operators-repetitions">Wiederholungen</h4>
 
@@ -192,37 +192,37 @@
 
     <p>Um eine Sequenz von drei Vorkommen eines Wortes zu suchen, können Sie Ihre Abfrage auf eine der folgenden Arten formulieren - sie werden die selben Ergebnisse erhalten:</p>
 
-  %= doc_query poliqarp => 'der der der'
-  %= doc_query poliqarp => 'der{3}'
-  %= doc_query poliqarp => '[orth=der]{3}'
+  %= doc_query poliqarp => loc('Q_poliqarp_repmanual', '** the the the'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_repsimple', '** the{3}'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_repcomplex', '** [orth=the]{3}'), cutoff => 1
 
   <p>Im Unterschied zu regulären Ausdrücken bezieht sich der Wiederholungsoperator nicht auf den Treffer, sondern auf das gegebene Muster. So gibt Ihnen die folgende Abfrage eine Sequenz von drei Wörtern mit einer definierten Zeichenfolge als Teilstring - aber die gefundenen Wörter müssen nicht identisch sein.</p>
 
-  %= doc_query poliqarp => '"la.*?"/i{3}'
+  %= doc_query poliqarp => loc('Q_poliqarp_repre', '** "ru.*?"/i{3}'), cutoff => 1
 
   <p>Das gleiche gilt für Annotationen. Die folgende Abfrage findet eine Folge von 3 bis 4 Adjektiven in einem definierten Kontext, wobei die Adjektive nicht identisch sein müssen.</p>
 
-  %= doc_query poliqarp => '[base=ein][tt/p=ADJA]{3,4}[xip/p=NOUN]'
+  %= doc_query poliqarp => loc('Q_poliqarp_repanno', '** [base=the][tt/p=ADJA]{3,4}[tt/p=NOUN]'), cutoff => 1
 
   <p>Zusätzlich zu nummerierten Quantitäten ist es auch möglich, Wiederholungsinformationen als Kleene-Operatoren <code>?</code>, <code>*</code> und <code>+</code> anzugeben.</p>
 
   <p>Um nach einer Sequenz mit einem optionalen Segment zu suchen, können Sie Folgendes angeben:</p>
 
-  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]?[base=Baum]'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqopt1', '** [base=the][tt/pos=ADJA]?[base=Tree]'), cutoff => 1
 
   <p>Diese Abfrage ist identisch mit der nummerierten Quantifizierung von:</p>
 
-  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]{,1}[base=Baum]'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqopt2', '** [base=the][tt/pos=ADJA]{,1}[base=Tree]'), cutoff => 1
 
   <p>Um nach den gleichen Sequenzen zu suchen, aber mit einer unbegrenzten Anzahl von Adjektiven, können Sie den Kleene-Stern benutzen:</p>
 
-  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]*[base=Baum]'
+  %= doc_query poliqarp => loc('Q_poliqarp_seqstar', '** [base=the][tt/pos=ADJA]*[base=Tree]'), cutoff => 1
 
   <p>Und um nach dieser Sequenz zu suchen, aber mit mindestens einem Adjektiv dazwischen, können Sie das Kleene Plus benutzen (alle Abfragen sind identisch):</p>
 
-  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]+[base=Baum]', cutoff => 1
-  %= doc_query poliqarp => '[base=die][tt/pos=ADJA]{1,}[base=Baum]', cutoff => 1
-  %= doc_query poliqarp => '[base=die][tt/pos=ADJA][tt/pos=ADJA]*[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqplus1', '** [base=the][tt/pos=ADJA]+[base=Tree]'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqplus2', '** [base=the][tt/pos=ADJA]{1,}[base=Tree]'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqplus3', '** [base=the][tt/pos=ADJA][tt/pos=ADJA]*[base=Tree]'), cutoff => 1
 
   <blockquote class="warning">
     <p>Wiederholungsoperatoren wie <code>{,n}</code>, <code>?</code> und <code>*</code> machen Segmente oder Gruppen von Segmenten optional. Falls diese Abfragen getrennt und nicht als Teil einer Sequenz verwendet werden (und es keine obligatorischen Segmente in der Abfrage gibt), werden Sie vom System gewarnt, dass Ihre Abfrage nicht als optional behandelt wird.</p>
@@ -231,16 +231,16 @@
 
   <p>Die Wiederholung kann auch verwendet werden, um Distanzen zwischen Segmenten auszudrücken, indem Sie <%= doc_link_to 'leere Segmente', 'ql', 'poliqarp-plus # leere Segmente'%> verwenden.</p>
 
-  %= doc_query poliqarp => '[base=die][][base=Baum]'
-  %= doc_query poliqarp => '[base=die][]{2}[base=Baum]', cutoff => 1
-  %= doc_query poliqarp => '[base=die][]{2,}[base=Baum]', cutoff => 1
-  %= doc_query poliqarp => '[base=die][]{,3}[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqdistance1', '** [base=the][][base=Tree]'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqdistance2', '** [base=the][]{2}[base=Tree]'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqdistance3', '** [base=the][]{2,}[base=Tree]'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqdistance4', '** [base=the][]{,3}[base=Tree]'), cutoff => 1
 
   <p>Selbstverständlich können auch Kleene-Operatoren mit leeren Segmenten eingesetzt werden.</p>
 
-  %= doc_query poliqarp => '[base=die][]?[base=Baum]'
-  %= doc_query poliqarp => '[base=die][]*[base=Baum]', cutoff => 1
-  %= doc_query poliqarp => '[base=die][]+[base=Baum]', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqdistanceopt', '** [base=the][]?[base=Tree]'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqdistancestar', '** [base=the][]*[base=Tree]'), cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_seqdistanceplus', '** [base=the][]+[base=Tree]'), cutoff => 1
     
   <h4>Positionen</h4>
 
@@ -250,23 +250,23 @@
 
   <p>Der Befehl <code>contains()</code> ergibt einen Treffer, wenn eine zweite Unterabfrage innerhalb der Spanne einer ersten Unterabfrage liegt.</p>
 
-  %= doc_query poliqarp => 'contains(<base/s=s>, [tt/p=KOUS])', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_poscontains', '** contains(<base/s=s>, [tt/p=KOUS])'), cutoff => 1
 
   <p>Die <code>startsWith()</code> Operation ergibt einen Treffer, wenn eine zweite Unterabfrage am Anfang der Spanne einer ersten Unterabfrage vorkommt.</p>
 
-  %= doc_query poliqarp => 'startsWith(<base/s=s>, [tt/p=KOUS])', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_posstartswith', '** startsWith(<base/s=s>, [tt/p=KOUS])'), cutoff => 1
 
   <p>Die Operation <code>endsWith()</code> ergibt einen Treffer, wenn eine zweite Unterabfrage am Ende der Spanne einer ersten Unterabfrage vorkommt.</p>
 
-  %= doc_query poliqarp => 'endsWith(<base/s=s>, [opennlp/p=NN])', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_posendswith', '** endsWith(<base/s=s>, [opennlp/p=NN])'), cutoff => 1
 
   <p>Die Operation <code>matches()</code> ergibt einen Treffer, wenn eine zweite Unterabfrage die gleiche Spanne einer ersten Unterabfrage hat.</p>
 
-  %= doc_query poliqarp => 'matches(<base/s=s>,[tt/p=CARD][tt/p="N.*"])', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_posmatches', '** matches(<base/s=s>,[tt/p=CARD][tt/p="N.*"])'), cutoff => 1
 
   <p>Die Operation <code>overlaps()</code> ergibt einen Treffer, wenn eine zweite Unterabfrage mit der Spanne einer ersten Unterabfrage überlappt.</p>
 
-  %= doc_query poliqarp => 'overlaps([][tt/p=ADJA],{1:[tt/p=ADJA]}[])', cutoff => 1
+  %= doc_query poliqarp => loc('Q_poliqarp_posoverlaps', '** overlaps([][tt/p=ADJA],{1:[tt/p=ADJA]}[])'), cutoff => 1
 
   <blockquote class="warning">
     <p>Positionsoperatoren sind noch experimentell und können sich in bestimmten Aspekten in Zukunft ändern (obwohl das definierte Verhalten stabil ist). Es gibt auch falsches Verhalten, das in zukünftigen Versionen korrigiert wird.</p>
@@ -287,9 +287,7 @@
 
   <p>Klassen werden verwendet, um Teiltreffer durch umgebende geschweifte Klammern und eine Klassennummer <code>{1: ...}</code> zu gruppieren. Klassen können verwendet werden, um auf Teiltreffer in einer Abfrage zu verweisen, ähnlich wie bei Captures in regulären Ausdrücken. In Poliqarp+ haben Klassen mehrere Zwecke, wobei die Hervorhebung der Intuitivste ist:</p>
 
-  %= doc_query poliqarp => 'der {1:{2:[]} Mann}'
-
-  %#= doc_query poliqarp => 'der {1:{2:[]{1,4}} {3:Baum}} {4:[]}'
+  %= doc_query poliqarp => loc('Q_poliqarp_classes', '** the {1:{2:[]} man}'), cutoff => 1
 
   <p>In KorAP können Klassen von 1 bis 128 definiert werden. Wenn eine Klassennummer fehlt, ist die Klasse standardmäßig auf die Klassennummer 1 gesetzt: <code>{...}</code> ist gleich <code>{1: ...}</code>.</p>
 
@@ -297,23 +295,22 @@
 
   <p>Basierend auf Klassen können Treffer geändert werden. Der Operator <code>focus()</code> beschränkt die Spanne eines Treffers auf die Grenzen einer bestimmten Klasse.</p>
 
-  %= doc_query poliqarp => 'focus(der {Baum})'
+  %= doc_query poliqarp => loc('Q_poliqarp_focus', '** focus(the {Tree})'), cutoff => 1
 
   <p>Die obige Abfrage sucht nach einer Sequenz, wobei der Treffer auf das zweite Segment beschränkt wird. Sie können das erste Segment in dieser Abfrage als <i>positive look-behind zero-length assertion</i> in regulären Ausdrücken verstehen.</p>
 
   <p>Aber Fokussieren ist weitaus nützlicher, wenn Sie nach Treffern suchen, ohne die Oberflächenform zu kennen. Um beispielsweise alle Wörter zwischen zwei definierten Wörtern zu finden, können Sie suchen:</p>
 
-  %= doc_query poliqarp => 'focus(der {[]} Mann)'
+  %= doc_query poliqarp => loc('Q_poliqarp_focusempty', '** focus(the {[]} Tree)'), cutoff => 1
 
   <p>Dies beschränkt die Treffer auf alle interessanten Begriffe zwischen der definierten Sequenz. Oder Sie können nach allen Wörtern, die einer Sequenz unmittelbar folgen suchen:</p>
 
-  %= doc_query poliqarp => 'focus(der alte und {[]})'
+  %= doc_query poliqarp => loc('Q_poliqarp_focusextension', '** focus(the old and {[]})'), cutoff => 1
 
-  <!--
-      <p><code>focus()</code> ist besonders nützlich, wenn Sie in bestimmten Bereichen nach Treffern suchen, zum Beispiel in Anführungszeichen mit Positionsoperatoren. Während Sie sich nicht für das ganze Zitat interessieren, können Sie sich darauf konzentrieren, was für Sie wirklich wichtig ist.</p>
+  <p><code>focus()</code> ist besonders nützlich, wenn Sie in bestimmten Bereichen nach Treffern suchen, zum Beispiel in Zitaten mit Positionsoperatoren.
+    Während Sie sich nicht für das ganze Zitat interessieren, können Sie das Ergebnis darauf fokussieren, was für Sie relevant ist.</p>
 
-      %= doc_query poliqarp => 'focus(1:contains(er []{,10} sagte, {1:Baum}))'
-      -->
+  %= doc_query poliqarp => loc('Q_poliqarp_focusrelevance', '** focus(contains(she []{,10} said, {Tree}))'), cutoff => 1
 
   <p>Falls eine Klassennummer fehlt, setzt der Fokusoperator standardmäßig auf die Klassennummer 1: <code>focus(...)</code> entspricht <code>focus(1: ...)</code>.</p>