Content-language: cs
Content-type: text/html; charset=UTF-8
Body:----------cs--
<!--#set var="CONTENT_LANGUAGE" value="cs"
--><!--#set var="TITLE" value="Chybná brána!"
--><!--#include virtual="include/top.html" -->

    Proxy server obdržel od nadřazeného
    serveru chybnou odpověď.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->
    
<!--#include virtual="include/bottom.html" -->
----------cs--

Content-language: de
Content-type: text/html; charset=UTF-8
Body:----------de--
<!--#set var="CONTENT_LANGUAGE" value="de"
--><!--#set var="TITLE" value="Fehlerhaftes Gateway!"
--><!--#include virtual="include/top.html"-->

    Der Proxy-Server erhielt eine fehlerhafte Antwort
    eines &uuml;bergeordneten Servers oder Proxies. 

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->
     
<!--#include virtual="include/bottom.html" -->
----------de--

Content-language: en
Content-type: text/html; charset=UTF-8
Body:----------en--
<!--#set var="TITLE" value="Bad Gateway!"
--><!--#include virtual="include/top.html" -->

    The proxy server received an invalid
    response from an upstream server.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->
    
<!--#include virtual="include/bottom.html" -->
----------en--

Content-language: es
Content-type: text/html
Body:----------es--
<!--#set var="TITLE" value="&iexcl;Puerta de enlace err&oacute;nea!" -->
<!--#include virtual="include/top.html" -->

    El servidor 'proxy' ha recibido; informaci&oacute;n
    no v&aacute;lida del servidor de origen.

   <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->

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

   <!--#endif -->

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

Content-language: fr
Content-type: text/html; charset=UTF-8
Body:----------fr--
<!--#set var="CONTENT_LANGUAGE" value="fr"
--><!--#set var="TITLE" value="Gateway incorrecte!"
--><!--#include virtual="include/top.html" -->

    Le serveur proxy a re&ccedil;u une r&eacute;ponse
    incorrecte de la part d'un serveur sup&eacute;rieur. 

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: ga
Content-type: text/html; charset=UTF-8
Body:----------ga--
<!--#set var="CONTENT_LANGUAGE" value="ga"
--><!--#set var="TITLE" value="Geata m&iacute;ceart!"
--><!--#include virtual="include/top.html" -->

    Fuair an seachfhreastala&iacute; freagairt neamhbhail&iacute;
    &oacute; freastala&iacute; thuasthrutha.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: it
Content-type: text/html; charset=UTF-8
Body:----------it--
<!--#set var="CONTENT_LANGUAGE" value="it"
--><!--#set var="TITLE" value="Gateway errato!"
--><!--#include virtual="include/top.html" -->

    Il server proxy ha ricevuto una risposta
    non valida dal server precedente.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: ja
Content-type: text/html; charset=UTF-8
Body:----------ja--
<!--#set var="CONTENT_LANGUAGE" value="ja"
--><!--#set var="TITLE" value="Bad Gateway!"
--><!--#include virtual="include/top.html" -->

    プロクシサーバは上流サーバから不正な応答を受信しました。

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->
    
<!--#include virtual="include/bottom.html" -->
----------ja--

Content-language: ko
Content-type: text/html; charset=UTF-8
Body:----------ko--
<!--#set var="CONTENT_LANGUAGE" value="ko"
--><!--#set var="TITLE" value="잘못된 게이트웨이!"
--><!--#include virtual="include/top.html" -->

    프록시 서버가 더 윗쪽의 서버로부터 잘못된 응답을 받았습니다.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo  encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: nl
Content-type: text/html; charset=UTF-8
Body:----------nl--
<!--#set var="CONTENT_LANGUAGE" value="nl"
--><!--#set var="TITLE" value="Verkeerde Gateway!"
--><!--#include virtual="include/top.html" -->

    De proxy server heeft een ongeldig
    antwoord ontvangen van een gecontacteerde server.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: nb
Content-type: text/html; charset=UTF-8
Body:----------nb--
<!--#set var="CONTENT_LANGUAGE" value="nb"
--><!--#set var="TITLE" value="Ugyldig Gateway!"
--><!--#include virtual="include/top.html" -->

    Proxyserveren mottok et ugyldig svar fra
    en oppstrøms server.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: pl
Content-type: text/html; charset=UTF-8
Body:----------pl--
<!--#set var="CONTENT_LANGUAGE" value="pl"
--><!--#set var="TITLE" value="Nieprawid&#322;owa brama!"
--><!--#include virtual="include/top.html" -->

    Serwer otrzyma&#322; nieprawid&#322;ow&#261; odpowied&#378;
    od kolejnego serwera.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: pt-br
Content-type: text/html; charset=UTF-8
Body:-------pt-br--
<!--#set var="CONTENT_LANGUAGE" value="pt-br"
--><!--#set var="TITLE" value="Gateway inv&aacute;lido!"
--><!--#include virtual="include/top.html" -->

    O servidor proxy recebeu uma resposta
    inv&aacute;lida do servidor destino.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo  encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: pt
Content-type: text/html; charset=ISO-8859-1
Body:----------pt--
<!--#set var="TITLE" value="Gateway inv&aacute;lida!"
--><!--#include virtual="include/top.html" -->

	O servidor de <i>proxy</i> recebeu uma resposta
	inválida de um outro servidor externo a ele.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: ro
Content-type: text/html; charset=UTF-8
Body:----------ro--
<!--#set var="CONTENT_LANGUAGE" value="ro"
--><!--#set var="TITLE" value="Gateway invalid!"
--><!--#include virtual="include/top.html" -->

    Serverul proxy a primit un raspuns invalid
    de la serverul precedent.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: ru
Content-type: text/html; charset=UTF-8
Body:----------ru--
<!--#set var="TITLE" value="Неверный шлюз!"
--><!--#include virtual="include/top.html" -->

    Прокси-сервер получил недопустимый ответ от
    вышестоящего сервера.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: sr
Content-type: text/html; charset=UTF-8
Body:----------sr--
<!--#set var="CONTENT_LANGUAGE" value="sr"
--><!--#set var="TITLE" value="Лош пролаз!"
--><!--#include virtual="include/top.html" -->

    Посреднички сервер је примио неисправан
    одговор од следећег сервера у низу.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: sv
Content-type: text/html; charset=UTF-8
Body:----------sv--
<!--#set var="CONTENT_LANGUAGE" value="sv"
--><!--#set var="TITLE" value="Felaktig Gateway!"
--><!--#include virtual="include/top.html" -->

    Proxyservern mottog ett felaktigt svar fr&aring;n
    en tidigare server.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->

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

Content-language: tr
Content-type: text/html; charset=UTF-8
Body:----------tr--
<!--#set var="CONTENT_LANGUAGE" value="tr"
--><!--#set var="TITLE" value="Hatalı Ağ Geçidi!"
--><!--#include virtual="include/top.html" -->

    Vekil sunucu üstbirim sunucudan
    anlamsız bir yanıt aldı.

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->
    
<!--#include virtual="include/bottom.html" -->
----------tr--

Content-language: zh-cn
Content-type: text/html; charset=UTF-8
Body:----------zh-cn--
<!--#set var="CONTENT_LANGUAGE" value="zh-cn"
--><!--#set var="TITLE" value="错误的网关！"
--><!--#include virtual="include/top.html" -->

    代理服务器从上游服务器收到了无效的响应。

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->
    
<!--#include virtual="include/bottom.html" -->
----------zh-cn--

Content-language: zh-tw
Content-type: text/html; charset=UTF-8
Body:----------zh-tw--
<!--#set var="CONTENT_LANGUAGE" value="zh-tw"
--><!--#set var="TITLE" value="閘道器錯誤！"
--><!--#include virtual="include/top.html" -->

    代理伺服器從上遊伺服器收到了無效的響應。

  <!--#if expr="-n v('REDIRECT_ERROR_NOTES')" -->
    <!--#include virtual="include/spacer.html" -->
    <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" -->
  <!--#endif -->
    
<!--#include virtual="include/bottom.html" -->
----------zh-tw--
