Content-language: de
Content-type: text/html; charset=ISO-8859-1
Body:----------de--
<!--#set var="CONTENT_LANGUAGE" value="de" -->
<!--#set var="TITLE" value="Serverfehler!" -->
<!--#include virtual="include/top.html" -->

  <!--#if expr="$REDIRECT_ERROR_NOTES" -->

    Die Anfrage kann nicht beantwortet werden, da im Server
    ein interner Fehler aufgetreten ist.

    <!--#include virtual="include/spacer.html" -->

    Fehlermeldung:
    <br /><!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->

  <!--#else -->

    Die Anfrage kann nicht beantwortet werden, da im Server
    ein interner Fehler aufgetreten ist.
    Der Server ist entweder &uuml;berlastet oder ein Fehler in
    einem CGI-Skript ist aufgetreten.

  <!--#endif -->

<!--#include virtual="include/bottom.html" -->
----------de--

Content-language: en
Content-type: text/html; charset=ISO-8859-1
Body:----------en--
<!--#set var="TITLE" value="Server error!" -->
<!--#include virtual="include/top.html" -->

  <!--#if expr="$REDIRECT_ERROR_NOTES" -->

    The server encountered an internal error and was 
    unable to complete your request.

    <!--#include virtual="include/spacer.html" -->

    Error message:
    <br /><!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->

  <!--#else -->

    The server encountered an internal error and was 
    unable to complete your request. Either the server is
    overloaded or there was an error in a CGI script.

  <!--#endif -->

<!--#include virtual="include/bottom.html" -->
----------en--

Content-language: es
Content-type: text/html; charset=ISO-8859-1
Body:----------es--
<!--#set var="CONTENT_LANGUAGE" value="es" -->
<!--#set var="TITLE" value="Server error!" -->
<!--#include virtual="include/top.html" -->

  <!--#if expr="$REDIRECT_ERROR_NOTES" -->

	El servidor encontro un error interno y fue
	imposible completar su solicitud. 

    <!--#include virtual="include/spacer.html" -->

    Mensaje de error:
    <br /><!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->

  <!--#else -->

	El servidor encontro un error interno y fue
	imposible completar su solicitud. 
	Existe tambien la posibilidad de que el servidor 
	este sobrecargado o de alg&uacute;n error en un 
	programa de CGI.

  <!--#endif -->

<!--#include virtual="include/bottom.html" -->
----------es--

Content-language: fr
Content-type: text/html; charset=ISO-8859-1
Body:----------fr--
<!--#set var="CONTENT_LANGUAGE" value="fr" -->
<!--#set var="TITLE" value="Erreur du serveur!" -->
<!--#include virtual="include/top.html" -->

  <!--#if expr="$REDIRECT_ERROR_NOTES" -->

    Le serveur a &egrave;t&eacute; victime d'une erreur interne et n'a pas
    &eacute;t&eacute; capable de faire aboutir votre requ&ecirc;te.

    <!--#include virtual="include/spacer.html" -->

    Message d'erreur:
    <br /><!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->

  <!--#else -->

    Le serveur a &egrave;t&eacute; victime d'une erreur interne et n'a pas
    &eacute;t&eacute; capable de faire aboutir votre requ&ecirc;te.
    Soit le server est surcharg&eacute; soit il s'agit d'une erreur dans
    le script CGI.

  <!--#endif -->

<!--#include virtual="include/bottom.html" -->   
----------fr--

Content-language: nl
Content-type: text/html; charset=ISO-8859-1
Body:----------nl--
<!--#set var="CONTENT_LANGUAGE" value="nl" -->
<!--#set var="TITLE" value="Server fout!" -->
<!--#include virtual="include/top.html" -->

  <!--#if expr="$REDIRECT_ERROR_NOTES" -->

    <!--#include virtual="include/spacer.html" -->

    Foutbericht:
    <br /><!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->

  <!--#else -->

    De server kreeg een interne fout en kon
    uw vraag niet beantwoorden. De server is overbelast
    of er was een fout in een CGI script.

  <!--#endif -->

<!--#include virtual="include/bottom.html" -->
----------nl--

Content-language: sv
Content-type: text/html; charset=ISO-8859-1
Body:----------sv--
<!--#set var="CONTENT_LANGUAGE" value="sv" -->
<!--#set var="TITLE" value="Serverfel!" -->
<!--#include virtual="include/top.html" -->

  <!--#if expr="$REDIRECT_ERROR_NOTES" -->

    Servern r&aring;kade ut f&ouml;r ett internt fel och det var inte m&ouml;jligt
    att slutf&ouml;ra din beg&auml;ran.

    <!--#include virtual="include/spacer.html" -->

    Felmeddelande:
    <br /><!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->

  <!--#else -->

    Servern r&aring;kade ut f&ouml;r ett internt fel och det var inte m&ouml;jligt
    att slutf&ouml;ra din beg&auml;ran. Servern &auml;r antingen &ouml;verbelastad
    eller s&aring; inneh&aring;ller CGI-skriptet fel.

  <!--#endif -->

<!--#include virtual="include/bottom.html" -->
----------sv--

Content-language: it
Content-type: text/html; charset=ISO-8859-1
Body:----------it--
<!--#set var="CONTENT_LANGUAGE" value="it" -->
<!--#set var="TITLE" value="Errore del server!" -->
<!--#include virtual="include/top.html" -->

  <!--#if expr="$REDIRECT_ERROR_NOTES" -->

    Il server ha generato un errore interno e non &egrave;
    in grado di soddisfare la richiesta.

    <!--#include virtual="include/spacer.html" -->

    Messaggio di errore:
    <br /><!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->

  <!--#else -->

    Il server ha generato un errore interno e non &egrave;
    in grado di soddisfare la richiesta. Il server potrebbe
    essere sovraccarico oppure si &egrave; verificato un
    errore in uno script CGI.

  <!--#endif -->

<!--#include virtual="include/bottom.html" -->
----------it--

Content-language: pt-br
Content-type: text/html; charset=ISO-8859-1
Body:-------pt-br--
<!--#set var="TITLE" value="Erro interno do Servidor!" -->
<!--#include virtual="include/top.html" -->

  <!--#if expr="$REDIRECT_ERROR_NOTES" -->
    
    O servidor encontrou um erro interno e n&atilde;o pode
    completar sua requisi&ccedil;&atilde;o.   

    <!--#include virtual="include/spacer.html" -->

    Mensagem de Erro:
    <br /><!--#echo var="REDIRECT_ERROR_NOTES" -->

  <!--#else -->

    O servidor encontrou um erro interno e n&atilde;o
    foi poss&iacute;vel completar sua requisi&ccedil;&atilde;o.
    O servidor est&aacute; sobrecarregado ou existe um 
    erro em um script CGI.

  <!--#endif -->

<!--#include virtual="include/bottom.html" -->
-------pt-br--
