MFB: Correctly match negative header values with numeric comparison in Sieve driver...
authorJan Schneider <jan@horde.org>
Tue, 18 Aug 2009 23:00:03 +0000 (01:00 +0200)
committerJan Schneider <jan@horde.org>
Tue, 18 Aug 2009 23:00:21 +0000 (01:00 +0200)
ingo/docs/CHANGES
ingo/lib/Script/Sieve.php
ingo/locale/ca_ES/help.xml
ingo/locale/de_DE/help.xml
ingo/locale/en_US/help.xml
ingo/locale/es_ES/help.xml
ingo/locale/fi_FI/help.xml
ingo/locale/fr_FR/help.xml
ingo/locale/lv_LV/help.xml

index 081a062..653d4d3 100644 (file)
@@ -10,6 +10,8 @@ v2.0-git
 v1.2.2-cvs
 ----------
 
+[jan] Correctly match negative header values with numeric comparison in Sieve
+      driver (bb@apc.ag, Bug #7308).
 [jan] Implement removeUserData API (adrieder@sbox.tugraz.at, Request #8452).
 [jan] Take default settings for forwards, vacation and spam rules from
       config/prefs.php in the SQL storage driver.
index 6dd2fd9..ea06a7a 100644 (file)
@@ -1669,13 +1669,36 @@ class Sieve_Test_Relational extends Sieve_Test {
                     Ingo_Script_Sieve::escapeString($val) . '"';
             }
 
-            $code .= $headerstr . "] ";
+            $code .= $headerstr . '] ';
+            $headerstr = '[' . $headerstr . ']';
         } elseif ($header_count == 1) {
             $code .= '"' . Ingo_Script_Sieve::escapeString($headers[0]) . '" ';
+            $headerstr = Ingo_Script_Sieve::escapeString($headers[0]);
+        }
+
+        $code .= '["' . $this->_vars['value'] . '"]';
+
+        // Add workarounds for negative numbers - works only if the comparison
+        // value is positive. Sieve doesn't support comparisons of negative
+        // numbers at all so this is the best we can do.
+        switch ($this->_vars['comparison']) {
+        case 'gt':
+        case 'ge':
+        case 'eq':
+            // Greater than, greater or equal, equal: number must be
+            // non-negative.
+            return 'allof ( not header :comparator "i;ascii-casemap" :contains "'
+                . $headerstr . '" "-", ' . $code . ' )';
+            break;
+        case 'lt':
+        case 'le':
+        case 'ne':
+            // Less than, less or equal, nonequal: also match negative numbers
+            return 'anyof ( header :comparator "i;ascii-casemap" :contains "'
+                . $headerstr . '" "-", ' . $code . ' )';
+            break;
         }
-
-        return $code . '["' . $this->_vars['value'] . '"]';
-     }
+    }
 
     /**
      * Checks if the rule parameters are valid.
index bfb7a2c..ed13b76 100755 (executable)
@@ -119,8 +119,14 @@ El missatge s'emmagatzemar
     <para>You may specify marking a message with one or more IMAP flags as one
     of the actions in a rule. The possible values are Seen, Flagged For Followup,
     Answered, and Deleted.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
   </entry>--></entry>
-  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="changed">
     <title>Regla de filtrat: Coincidència</title>
     <para>
    A cada condició d'una regla hi ha tres components. El primer en el camp que cal examinar. El segon és el tipus de comparació a realitzar. El tercer és el valor amb el qual cal comparar el camp. Existeixen diversos tipus diferents de comparances realizables. Les comparances disponibles per a cada camp depenen tant del tipus de camp com del que pugui manejar el programari utilitzat. Per això no totes les següents possibles opcions de coincidència apareixeran en un camp determinat.
@@ -197,7 +203,85 @@ Aquesta 
     <para>
    Aquesta és una prova relacional que compara numéricament el valor indicat i el valor de la capçalera del missatge.
     </para>
-  </entry>
+  <!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Limitation with Sieve filtering</heading>
+    <warn>The Sieve specification doesn't support comparions with negative
+    numbers. If you enter a negative value in one of the relational tests,
+    your rule won't work correctly.</warn>
+  </entry>--></entry>
   <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
     <title>Regla de filtrat: Nom</title>
     <para>
index 2d58108..4690bb0 100644 (file)
     einer oder mehreren IMAP-Markierungen versehen wird. Die möglichen
     Markierungen sind Gelesen, Markiert zur Wiedervorlage, Beantwortet und Gelöscht.</para>
   </entry>
-  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+  <entry id="rule-matches" md5="d30d522bc0e6b34ab656e658dc5ecc9e" state="uptodate">
     <title>Filterregel: Bedingungen</title>
     <para>Jede Bedingung einer Filterregel besteht aus drei Komponenten. Die
     erste bestimmt das Feld der Nachricht, das überprüft werden soll.
     <heading>Größer als</heading>
     <para>Dies ist ein Vergleichstest, der den angegebenen Wert und den Wert im
     Nachrichtenfeld numerisch vergleicht.</para>
+    <heading>Einschränkung von Sieve-Filtern</heading>
+    <warn>Die Sieve-Spezifikation unterstützt keine Vergleichsoperationen mit
+    negativen Zahlen. Wenn Sie eine negative Zahl als Vergleichswert eingeben,
+    wird Ihre Regel nicht funktionieren.</warn>
   </entry>
   <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
     <title>Filterregel: Regelname</title>
index 31ea11e..df88445 100644 (file)
     <heading>Greater than</heading>
     <para>This is a relational test which will compare the value you specify
     and the value in the message header numerically.</para>
+    <heading>Limitation with Sieve filtering</heading>
+    <warn>The Sieve specification doesn't support comparions with negative
+    numbers. If you enter a negative value in one of the relational tests,
+    your rule won't work correctly.</warn>
   </entry>
   <entry id="rule-name">
     <title>Filter Rule: Name</title>
index 358dcc2..266bd5f 100644 (file)
@@ -87,7 +87,7 @@
                        El mensaje original se eliminar&#xE1; y se enviar&#xE1; un mensaje nuevo al remitente con el texto que indique.
                </para>
        </entry>
-       <entry id="rule-combine" md5="29484c1ebdd7ce71edc34fc8100ef69c" state="uptodate">
+  <entry id="rule-combine" md5="29484c1ebdd7ce71edc34fc8100ef69c" state="uptodate">
                <title>Regla de filtrado: Combinar opciones</title>
                <para>
                        Puede definir varias condiciones en una misma regla. Puede agruparlas de forma l&#xF3;gica mediante "Y"/"O", No puede crear filtros complejos que contengan ambos tipos de condiciones.
                        Si seleccion O, las acciones indicadas se ejecutar&#xE1;n si se cumple al menso una de las condiciones.
                </para>
        </entry>
-       <entry id="rule-mark" md5="e8bdb30d1c1c1cdc5ec1e5e4804f9300" state="uptodate">
+  <entry id="rule-mark" md5="e8bdb30d1c1c1cdc5ec1e5e4804f9300" state="uptodate">
                <title>Regla de filtrado: Se&#xF1;alar mensaje</title>
                <para>
                        Como una de las acciones de una regla, puede indicar que se se&#xF1;ale un mensaje con uno o m&#xE1;s de los marcadores IMAP. Los valores posibles son Continuaci&#xF3;n, Respondido y Eliminado.
                </para>
        </entry>
-       <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="changed">
                <title>Regla de filtrado: Coincidencia</title>
                <para>
                        En cada condici&#xF3;n de una regla hay tres componentes. El primero en el campo que hay que examinar. El segundo es el tipo de comparaci&#xF3;n a realizar. El tercero es el valor con el que hay que comparar el campo.
                <para>
                        &#xC9;sta es una prueba relacional que compara num&#xE9;ricamente el valor indicado y el valor de la cabecera del mensaje.
                </para>
-       </entry>
-       <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
+       <!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Limitation with Sieve filtering</heading>
+    <warn>The Sieve specification doesn't support comparions with negative
+    numbers. If you enter a negative value in one of the relational tests,
+    your rule won't work correctly.</warn>
+  </entry>--></entry>
+  <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
                <title>Regla de filtrado: Nombre</title>
                <para>
                        Se trata de un nombre descriptivo de una regla. Puede usarlo para identificar una regla determinada en su listado de filtros.
                </para>
        </entry>
-       <entry id="rule-stop" md5="677c920effca959123b7d539b3b0d864" state="uptodate">
+  <entry id="rule-stop" md5="677c920effca959123b7d539b3b0d864" state="uptodate">
                <title>Regla de filtrado: Detener comprobaci&#xF3;n</title>
                <para>
                        Si se activa esta opci&#xF3;n y un mensaje cumple la regla, el resto de los mensajes no se procesar&#xE1;n.
                </para>
        </entry>
-       <entry id="vacation" md5="2c9e12973d36fe94aeb73b32db9a64e6" state="uptodate">
+  <entry id="vacation" md5="2c9e12973d36fe94aeb73b32db9a64e6" state="uptodate">
                <title>Ausencia</title>
                <para>
                        Los mensajes de ausencia son respuestas autom&#xE1;ticas enviadas a la gente que le env&#xED;e correo. Normalmente se utilizan cuando va a estar ausente por un largo periodo de tiempo.
                </para>
        </entry>
-       <entry id="vacation-period" state="uptodate" md5="531accb93b707d39b2986a779b260dbf">
+  <entry id="vacation-period" state="uptodate" md5="531accb93b707d39b2986a779b260dbf">
                <title>Vacation Period</title>
                <para>Vacation messages will only be sent during the period of time that you are on vacation.</para>
        </entry>
-       <entry id="vacation-bulk" md5="6f6e4178e80f46e7876c7ee5d0ac53b7" state="uptodate">
+  <entry id="vacation-bulk" md5="6f6e4178e80f46e7876c7ee5d0ac53b7" state="uptodate">
                <title>Ausencia: No responder a granel</title>
                <para>
                        Activando esta opci&#xF3;n las respuestas por ausencia no se enviar&#xE1;n con mensajes que parezcan proceder de listas de correo o que est&#xE9;n marcados como correo a granel.
                </para>
        </entry>
-       <entry id="vacation-days" md5="25ba74c0e79ce72237795eb809ee4585" state="uptodate">
+  <entry id="vacation-days" md5="25ba74c0e79ce72237795eb809ee4585" state="uptodate">
                <title>Ausencia: Intervalo de respuesta</title>
                <para>
                        Es el n&#xFA;mero de d&#xED;as a esperar antes de volver a enviar una respuesta autom&#xE1;tica a una direcci que ya haya recibido una.
                </para>
        </entry>
-       <entry id="vacation-myemail" md5="ef3fa70e940ed1472276c0fde5ae2aed" state="uptodate">
+  <entry id="vacation-myemail" md5="ef3fa70e940ed1472276c0fde5ae2aed" state="uptodate">
                <title>Ausencia: Mis direcciones de correo</title>
                <para>
                        Si tiene m&#xE1;s de una direcci&#xF3;n de correo asignadas a este buz&#xF3;n, ind&#xED;quelas aqu&#xED;.
                </para>
        </entry>
-       <entry id="vacation-noresponse" md5="2b72e12b6989c9ef1667a59040c70310" state="uptodate">
+  <entry id="vacation-noresponse" md5="2b72e12b6989c9ef1667a59040c70310" state="uptodate">
                <title>Ausencia: Sin respuestas</title>
                <para>
                        No enviar la notificaci&#xF3;n de ausencia a estos destinatarios. Cada direcci&#xF3;n debe estar en una l&#xED;nea distinta.
                </para>
        </entry>
-       <entry id="vacation-reason" md5="d4da2f3a0d357e00950ec57d984cbcee" state="uptodate">
+  <entry id="vacation-reason" md5="d4da2f3a0d357e00950ec57d984cbcee" state="uptodate">
                <title>Ausencia: Motivo de la ausencia</title>
                <para>
                        Es el texto que se enviar&#xE1; en sus notificaciones de ausencia.
                </para>
        </entry>
-       <entry id="vacation-subject" md5="ce16c7c6a08993821208cfbee0b188a0" state="uptodate">
+  <entry id="vacation-subject" md5="ce16c7c6a08993821208cfbee0b188a0" state="uptodate">
                <title>Ausencia: Asunto de la ausencia</title>
                <para>
                        Es el asunto que se utilizar&#xE1; en las notificaciones de ausencia.
                </para>
        </entry>
-       <entry id="whitelist" md5="ecbf7000f107832d68bd7ba8f5121909" state="uptodate">
+  <entry id="whitelist" md5="ecbf7000f107832d68bd7ba8f5121909" state="uptodate">
                <title>Lista blanca</title>
                <heading>Lista blanca</heading>
                <para>
                        La lista blanca es un listado de direcciones (leg&#xED;timas) de las que siempre desea poder ver los mensajes en el buz&#xF3;n de Entrada. Cada direcci&#xF3;n debe incluirse en una l&#xED;nea distinta.
                </para>
        </entry>
-       <entry id="whitelist-addresses" md5="8fe054c1b55e6adc81d1d8525c131637" state="uptodate">
+  <entry id="whitelist-addresses" md5="8fe054c1b55e6adc81d1d8525c131637" state="uptodate">
                <title>Lista blanca: Direcciones</title>
                <para>
                        PENDIENTE. Cada direcci&#xF3;n debe incluirse en una l&#xED;nea distinta.
                </para>
        </entry>
-       <entry id="spam-level" state="uptodate" md5="6f00c30a45b0acaef4ae9dba56d58013">
+  <entry id="spam-level" state="uptodate" md5="6f00c30a45b0acaef4ae9dba56d58013">
                <title>Filtrado de Spam: Nivel de Spam</title>
                <para>
                        El sistema considerar&#xE1; como spam los mensajes con una puntuaci&#xF3;n de spam mayor o igual al n&#xFA;mero introducido aqu&#xED;.
                        N&#xFA;meros m&#xE1;s reducidos interceptar&#xE1;n m&#xE1;s mensajes con el inconveniente de que hay mayores posibilidades de interceptar mensajes reales. "5" es un valor t&#xED;pico si su sistema utiliza SpamAssassin.
                </para>
        </entry>
-       <entry id="spam-folder" state="uptodate" md5="1639e6d1cfcd6706f93920f2c63f4a00">
+  <entry id="spam-folder" state="uptodate" md5="1639e6d1cfcd6706f93920f2c63f4a00">
                <title>Filtrado de Spam: Carpeta en la que almacenar el spam</title>
                <para>
                        El sistema archivar&#xE1; los mensajes determinados como spam en esta carpeta.
index 2a40061..cc43708 100644 (file)
     Yhten&#xE4; toimintona voit valita viestin merkinn&#xE4;n, jolloin voit merkit&#xE4; viestin yhdell&#xE4; tai useammalla IMAP tilatiedolla. K&#xE4;ytett&#xE4;viss&#xE4; on tilatiedot: Vanha, T&#xE4;rke&#xE4;, Vastattu ja Poistettu.
     </para>
 </entry>
-  <entry id="rule-matches" state="uptodate" md5="517e24971f2c5443b2ed04e9c504e7eb">
+  <entry id="rule-matches" state="changed" md5="517e24971f2c5443b2ed04e9c504e7eb">
     <title>Suodatins&#xE4;&#xE4;nt&#xF6;: T&#xE4;sm&#xE4;ys</title>
     <para>
     Jokainen suodatins&#xE4;&#xE4;nt&#xF6; koostuu kolmesta komponentista. Ensimm&#xE4;inen on tutkittava kentt&#xE4;. Toinen on vertailutapa. Kolmas on arvo johon kent&#xE4;&#xE4; verrataan.
     <para>
     T&#xE4;m&#xE4; vertaa antaamasi lukua ja viestin otsakkeissa olevaa lukuarvoa numeerisesti kesken&#xE4;&#xE4;n.
     </para>
-</entry>
+<!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Limitation with Sieve filtering</heading>
+    <warn>The Sieve specification doesn't support comparions with negative
+    numbers. If you enter a negative value in one of the relational tests,
+    your rule won't work correctly.</warn>
+  </entry>--></entry>
   <entry id="rule-name" state="uptodate" md5="8faaf71e4bf2f91d943d77f803f9a2d5">
     <title>Suodatins&#xE4;&#xE4;nt&#xF6;: Nimi</title>
     <para>
index 5f18269..cad19ab 100644 (file)
@@ -169,8 +169,14 @@ action d'une r
     <para>You may specify marking a message with one or more IMAP flags as one
     of the actions in a rule. The possible values are Seen, Flagged For Followup,
     Answered, and Deleted.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
   </entry>--></entry>
-  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="changed">
     <title>Règle de filtrage: Correspondances</title>
     <para>
     Il y a 3 composantes pour chaque condition dans une règle. La première est le champ à examiner. La seconde est le type de comparaison à exécuter. Le troisième est la valeur à laquelle le champ devrait être comparé. Il y a quelques types de comparaisons qui peuvent être effectuées. Les comparaisons disponibles pour n'importe quel champ dépendront du type du champ et de ce que le logiciel de filtrage peut manipuler.
@@ -266,7 +272,85 @@ Sera consid
     </para>
 
 
-</entry>
+<!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Limitation with Sieve filtering</heading>
+    <warn>The Sieve specification doesn't support comparions with negative
+    numbers. If you enter a negative value in one of the relational tests,
+    your rule won't work correctly.</warn>
+  </entry>--></entry>
   <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
     <title>Règle de filtrage: Nom</title>
     <para>
index f3dfa4a..6db87f0 100644 (file)
     <title>Blacklist</title>
     <para>The blacklist is a list of email addresses known to send email that
     you do not wish to see in your INBOX.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist">
+    <title>Blacklist</title>
+    <para>The blacklist is a list of email addresses known to send email that
+    you do not wish to see in your INBOX.</para>
   </entry>--></entry>
   <entry id="blacklist-action" md5="d11ed07f0671f3a374d3307ecd71b6f2" state="changed">
     <title> Melnais saraksts: Darbîba</title>
     "delete" is selected, the messages will be discarded before ever being
     stored in your Inbox. If "move to folder" is selected, they will be
     delivered to the selected folder.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist-action">
+    <title>Blacklist: Action</title>
+    <para>This action defines what to do when a message from a blocked sender
+    is sent to you. The possible values are "delete" or "move to folder". If
+    "delete" is selected, the messages will be discarded before ever being
+    stored in your Inbox. If "move to folder" is selected, they will be
+    delivered to the selected folder.</para>
   </entry>--></entry>
   <entry id="blacklist-addresses" md5="1cbd05d7cb651fdbccc9181be6a789d8" state="changed">
     <title>Melnais saraksts: Adreses</title>
     <title>Blacklist: Addresses</title>
     <para>The list of addresses to block. Each address should be entered on a
     separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist-addresses">
+    <title>Blacklist: Addresses</title>
+    <para>The list of addresses to block. Each address should be entered on a
+    separate line.</para>
   </entry>--></entry>
   <entry id="filters_rules" md5="6683bfda1a3eb627ac02b4ec1c486c87" state="changed">
     <title>Likumi: Filtru likumi</title>
       here. For example, if an email is deleted by the blacklist, the following
       rules will not have any influence on this email.</tip>
     </para>
+  </entry>--><!-- English entry:
+<entry id="filters_rules">
+    <title>Rules: Filter Rules</title>
+    <para>This is the main rules screen. From here you can create new rules by
+    clicking on the "New Rule" button; rearrange the rule order by clicking on
+    the up and down arrows or entering new rule positions in the "Move" column;
+    enable and disable specific rules by clicking on the icon in the "Enabled"
+    column; and edit individual rules by clicking on the icon in the "Edit"
+    column or on the rule name.</para>
+    <para>
+      <tip>Please note, that the rules are executed in the order displayed
+      here. For example, if an email is deleted by the blacklist, the following
+      rules will not have any influence on this email.</tip>
+    </para>
   </entry>--></entry>
   <entry id="forward" md5="876cd0cf20642eab9a06d58a2eaad95c" state="changed">
     <title>Pârsûtît</title>
     <title>Forward</title>
     <para>You may choose to automatically forward your incoming mail to a
     number of other mail addresses.</para>
+  </entry>--><!-- English entry:
+<entry id="forward">
+    <title>Forward</title>
+    <para>You may choose to automatically forward your incoming mail to a
+    number of other mail addresses.</para>
   </entry>--></entry>
   <entry id="forward-addresses" md5="ab4033b99005075d3d099ca8c879c7d1" state="changed">
     <title>Pârsûtît: Adreses</title>
     <para>You may choose to have your incoming mail redirected to another
     account. You may enter as many addresses as you like. Enter each address on
     a new line.</para>
+  </entry>--><!-- English entry:
+<entry id="forward-addresses">
+    <title>Forward: Addresses</title>
+    <para>You may choose to have your incoming mail redirected to another
+    account. You may enter as many addresses as you like. Enter each address on
+    a new line.</para>
   </entry>--></entry>
   <entry id="forward-keepcopy" md5="3b755b6dc934d2a5e75c74d577ae3a8f" state="changed">
     <title>Pârsûtît: Saglabât kopiju</title>
     <para>If you select this option, a copy of your incoming messages will be
     saved in this account as well as being sent to the addresses to which you
     have your mail forwarded.</para>
+  </entry>--><!-- English entry:
+<entry id="forward-keepcopy">
+    <title>Forward: Keep Copy</title>
+    <para>If you select this option, a copy of your incoming messages will be
+    saved in this account as well as being sent to the addresses to which you
+    have your mail forwarded.</para>
   </entry>--></entry>
   <entry id="pref-show_filter_msg" md5="8ae1c08eeabece935b2b4f212c42361a" state="changed">
     <title>Izvçle: Râdît detalizçtus filtru statusa paziòojumus?</title>
     will result in a separate notification message output to the screen
     immediately after the message is processed. If set to no, only a summary of
     filter actions will be output to the screen.</para>
+  </entry>--><!-- English entry:
+<entry id="pref-show_filter_msg">
+    <title>Preference: Show detailed filter status messages?</title>
+    <para>If using the IMAP filtering driver, this preference controls how
+    verbose the filtering process is. If set to yes, every message filtered
+    will result in a separate notification message output to the screen
+    immediately after the message is processed. If set to no, only a summary of
+    filter actions will be output to the screen.</para>
   </entry>--></entry>
   <entry id="pref-filter_seen" md5="d8ed2a21acac08d50d0c0e2e27ae5d54" state="changed">
     <title>Izvçle: Filtrçt tikai [ne]lasîtâs vçstules?</title>
     attempt to apply rules to the INBOX. You can either apply filters to all
     messages, apply filters ONLY to messages that are marked unseen, or apply
     filters ONLY to message that have been marked seen.</para>
+  </entry>--><!-- English entry:
+<entry id="pref-filter_seen">
+    <title>Preference: Filter only [un]seen messages?</title>
+    <para>This preference identifies when the IMAP filtering driver will
+    attempt to apply rules to the INBOX. You can either apply filters to all
+    messages, apply filters ONLY to messages that are marked unseen, or apply
+    filters ONLY to message that have been marked seen.</para>
   </entry>--></entry>
   <entry id="rule" md5="70b8b9599c0a68a262f01fbd71c4dd7a" state="changed">
     <title>Filtra likumi</title>
     be performed on that message. Filters can be very useful for automatically
     deleting unwanted mail, or making your mail account more managable by
     storing related messages into different folders.</para>
+  </entry>--><!-- English entry:
+<entry id="rule">
+    <title>Filter Rule</title>
+    <para>A rule is the basic building block of your mail filters, it consists
+    of one or more conditions and one or more actions. When a message is sent
+    to you, it is processed through the conditions of your filter rules, if the
+    conditions that you specify are met, then the actions that you specify will
+    be performed on that message. Filters can be very useful for automatically
+    deleting unwanted mail, or making your mail account more managable by
+    storing related messages into different folders.</para>
   </entry>--></entry>
   <entry id="rule-action" md5="774acc549f6ddfd52871f957de2deee5" state="changed">
     <title>Filtra likums: Darbîba</title>
     <heading>Reject this message with reason</heading>
     <para>The original message will be discarded, and a new message will be
     sent to the sender with the text that you specify.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-action">
+    <title>Filter Rule: Action</title>
+    <para>These are the possible actions to take if an incoming message matches
+    the specified conditions. Note that all of these options may not be
+    available to you - only the options that work with the underlying filtering
+    software will be shown.</para>
+    <heading>Deliver this message into my INBOX</heading>
+    <para>The message will be saved in your INBOX. This is the default
+    option.</para>
+    <heading>Deliver to this mailbox</heading>
+    <para>The message will be delivered to the specified folder.</para>
+    <heading>Discard this message</heading>
+    <para>The message will be silently deleted. Neither you nor the sender will
+    receive notification that this has happened.</para>
+    <heading>Redirect this message to</heading>
+    <para>The message will be sent to the email address that you specify. No
+    copy of the message will remain in this account.</para>
+    <heading>Deliver to my INBOX and redirect to</heading>
+    <para>The message will be sent to the email address that you specify, and a
+    copy of the message will remain in your INBOX.</para>
+    <heading>Reject this message with reason</heading>
+    <para>The original message will be discarded, and a new message will be
+    sent to the sender with the text that you specify.</para>
   </entry>--></entry>
   <entry id="rule-combine" md5="15a1cee3a778b72560a03aea738c4b28" state="changed">
     <title>Filtra likums: Kombinçt opcijas</title>
     <heading>Or</heading>
     <para>If you select OR, the specified actions will be executed if at least
     one of the conditions is met.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-combine">
+    <title>Filter Rule: Combine Options</title>
+    <para>You may define multiple conditions within a single rule. You may
+    group them together logically using "and"/"or". You may not create complex
+    filters containg both types of conditions.</para>
+    <heading>And</heading>
+    <para>If you select AND, an incoming message must match every condition
+    that you specify in order for the actions to be executed.</para>
+    <heading>Or</heading>
+    <para>If you select OR, the specified actions will be executed if at least
+    one of the conditions is met.</para>
   </entry>--></entry>
   <entry id="rule-mark" md5="ecabf7aaede106b7dd32a2aee05cee57" state="changed">
     <title>Filtra likums: Atzîmçt vçstuli</title>
     <para>You may specify marking a message with one or more IMAP flags as one
     of the actions in a rule. The possible values are Seen, Flagged For Followup,
     Answered, and Deleted.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
   </entry>--></entry>
   <entry id="rule-matches" md5="2fe0ccfd87fca17aea372e9829ca0e21" state="changed">
     <title>Filtra likums: Atbilstîbas</title>
     <heading>Greater than</heading>
     <para>This is a relational test which will compare the value you specify
     and the value in the message header numerically.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Limitation with Sieve filtering</heading>
+    <warn>The Sieve specification doesn't support comparions with negative
+    numbers. If you enter a negative value in one of the relational tests,
+    your rule won't work correctly.</warn>
   </entry>--></entry>
   <entry id="rule-name" md5="ed8e3b8044b7e1a681b259fa605dc9ee" state="changed">
     <title>Filtra likums: Nosaukums</title>
     <title>Filter Rule: Name</title>
     <para>This is a descriptive name for a rule. You may use it to identify a
     rule in your filter listing.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-name">
+    <title>Filter Rule: Name</title>
+    <para>This is a descriptive name for a rule. You may use it to identify a
+    rule in your filter listing.</para>
   </entry>--></entry>
   <entry id="rule-stop" md5="042f935941275ddff92d53259118a2d2" state="changed">
     <title>Filtra likums: Beigt pârbaudi</title>
     <title>Filter Rule: Stop Checking</title>
     <para>If this option is checked, and a message matches this rule, the
     remaining filters will not be processed.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-stop">
+    <title>Filter Rule: Stop Checking</title>
+    <para>If this option is checked, and a message matches this rule, the
+    remaining filters will not be processed.</para>
   </entry>--></entry>
   <entry id="vacation" md5="330bb029e3e07392bc1c127bb1d9b94c" state="changed">
     <title>Brîvdienas</title>
     <para>Vacation messages are automatic responses sent to people when they
     email you. They are normally used when you are away for a long period of
     time.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation">
+    <title>Vacation</title>
+    <para>Vacation messages are automatic responses sent to people when they
+    email you. They are normally used when you are away for a long period of
+    time.</para>
   </entry>--></entry>
   <entry id="vacation-period" state="new">
      <title>Vacation Period</title>
     <para>Checking this option will cause vacation responses to not be sent to
     messages that appear to come from mailing lists or that are marked as bulk
     mail.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-bulk">
+    <title>Vacation: No Respond to Bulk</title>
+    <para>Checking this option will cause vacation responses to not be sent to
+    messages that appear to come from mailing lists or that are marked as bulk
+    mail.</para>
   </entry>--></entry>
   <entry id="vacation-days" md5="2a24527a223d1e1338e4f739826d2e2b" state="changed">
     <title>Brîvdienas: Atbildes intervâls</title>
     <title>Vacation: Reply Interval</title>
     <para>This is the number of days to wait before sending an autoresponse to
     an address that has already received one.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-days">
+    <title>Vacation: Reply Interval</title>
+    <para>This is the number of days to wait before sending an autoresponse to
+    an address that has already received one.</para>
   </entry>--></entry>
   <entry id="vacation-myemail" md5="23c118b29b383ba5abf70269cc7d7227" state="changed">
     <title>Brîvdienas: Manas adreses</title>
     <title>Vacation: My Email Addresses</title>
     <para>If you have more than one email address coming to this mailbox then
     specify them here.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-myemail">
+    <title>Vacation: My Email Addresses</title>
+    <para>If you have more than one email address coming to this mailbox then
+    specify them here.</para>
   </entry>--></entry>
   <entry id="vacation-noresponse" md5="9e7ace4ab8394b8d6e70bb399bee4022" state="changed">
     <title>Brîvdienas: Nesûtît</title>
     <title>Vacation: No Responses</title>
     <para>Don't send the vacation message to these recipients. Each address
     should be on its own line.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-noresponse">
+    <title>Vacation: No Responses</title>
+    <para>Don't send the vacation message to these recipients. Each address
+    should be on its own line.</para>
   </entry>--></entry>
   <entry id="vacation-reason" md5="0c9d695636f409eb71c217e299bf2edc" state="changed">
     <title>Brîvdienas: Iemesls</title>
 <entry id="vacation-reason">
     <title>Vacation: Vacation Reason</title>
     <para>This is the text that will be sent in your vacation responses.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-reason">
+    <title>Vacation: Vacation Reason</title>
+    <para>This is the text that will be sent in your vacation responses.</para>
   </entry>--></entry>
   <entry id="vacation-subject" md5="7333282ece05b30157750357a399ec09" state="changed">
     <title>Brîvdienas: Temats</title>
 <entry id="vacation-subject">
     <title>Vacation: Vacation Subject</title>
     <para>This is the subject that will be used for vacation responses.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-subject">
+    <title>Vacation: Vacation Subject</title>
+    <para>This is the subject that will be used for vacation responses.</para>
   </entry>--></entry>
   <entry id="whitelist" md5="cbde7a6e185b29269376d1514163d21f" state="changed">
     <title>Baltais saraksts</title>
     <para>The whitelist is a list of (legitimate) email addresses that you
     always wish to see in your INBOX. Each address should be entered on a
     separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="whitelist">
+    <title>Whitelist</title>
+    <para>The whitelist is a list of (legitimate) email addresses that you
+    always wish to see in your INBOX. Each address should be entered on a
+    separate line.</para>
   </entry>--></entry>
   <entry id="whitelist-addresses" md5="22fc837888f4e6b1e97f860eaee256e9" state="changed">
     <title> Baltais saraksts: Adreses</title>
 <entry id="whitelist-addresses">
     <title>Whitelist: Addresses</title>
     <para>TODO. Each address should be entered on a separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="whitelist-addresses">
+    <title>Whitelist: Addresses</title>
+    <para>TODO. Each address should be entered on a separate line.</para>
   </entry>--></entry>
   <entry id="spam-level" state="new">
     <title>Spam Filtering: Spam Level</title>