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

    Požadované URL nebylo na tomto serveru nalezeno.

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

    Zdá se, že odkaz na
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">odkazující
    stránce</a> je chybný nebo zastaralý. Informujte, prosím, autora
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">této stránky</a>
    o&nbsp;chybě.

  <!--#else -->

    Pokud jste zadal(a) URL ručně, zkontrolujte, prosím,
    zda jste zadal(a) URL správně, a zkuste to znovu.

  <!--#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="Objekt nicht gefunden!"
--><!--#include virtual="include/top.html" -->

    Der angeforderte URL konnte auf dem Server nicht gefunden werden.

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

    Der Link auf der
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">verweisenden
    Seite</a> scheint falsch oder nicht mehr aktuell zu sein.
    Bitte informieren Sie den Autor
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">dieser Seite</a>
    &uuml;ber den Fehler.

  <!--#else -->

    Sofern Sie den URL manuell eingegeben haben,
    &uuml;berpr&uuml;fen Sie bitte die Schreibweise und versuchen Sie es erneut.

  <!--#endif -->

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

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

    The requested URL was not found on this server.

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

    The link on the
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">referring
    page</a> seems to be wrong or outdated. Please inform the author of
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">that page</a>
    about the error.

  <!--#else -->

    If you entered the URL manually please check your
    spelling and try again.

  <!--#endif -->

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

Content-language: es
Content-type: text/html
Body:----------es--
<!--#set var="TITLE" value="&iexcl;Objeto no localizado!" -->
<!--#include virtual="include/top.html" -->

    No se ha localizado la URL solicitada en este servidor.

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

    La URL de la <a href="<!--#echo encoding="url" 
    var="HTTP_REFERER"-->">p&aacute;gina que le ha remitido</a> 
    parece ser err&oacute;nea o estar obsoleta. Por favor, informe del error 
    al autor de <a href="<!--#echo encoding="url" var="HTTP_REFERER"-->">esa
    p&aacute;gina</a>.

  <!--#else -->

    Si usted ha introducido la URL manualmente, por favor revise su
    ortograf&iacute;a e int&eacute;ntelo de nuevo.

  <!--#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="Objet non trouv&eacute;!"
--><!--#include virtual="include/top.html" -->

    L'URL demand&eacute;e n'a pas pu &ecirc;tre trouv&eacute;e sur ce serveur.

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

    La r&eacute;f&eacute;rence sur
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">la page
    cit&eacute;e</a>
    semble &ecirc;tre erron&eacute;e ou perim&eacute;e. Nous vous prions
    d'informer l'auteur de
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">cette page</a>
    de cette erreur.

  <!--#else -->

    Si vous avez tap&eacute; l'URL &agrave; la main, veuillez v&eacute;rifier
    l'orthographe et r&eacute;essayer.

  <!--#endif -->

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

Content-language: ga 
Content-type: text/html; charset=UTF-8
Body:----------ga--
<!--#set var="TITLE" value="Aidhm ar iarraidh!"
--><!--#include virtual="include/top.html" -->

    N&iacute;or aimsigh an URL iarraithe ar an fhreastala&iacute; seo.

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

    Is cos&uacute;il go bhfuil an nasc ar an
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">leathanach
    thagarthach</a> m&iacute;cheart n&oacute; as d&aacute;ta. 
    Cur in i&uacute;l d'&uacute;adar 
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->"
    >an leathanach sin</a> go bhfuil earr&aacute;id ann, le do thoil.

  <!--#else -->

    M&aacute; chuir t&uacute; isteach an URL t&uacute; f&eacute;in, deimhnigh
    go bhfuil s&eacute; litrithe i gceart agat, agus d&eacute;an iarracht eile
    le do thoil.

  <!--#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="Oggetto non trovato!"
--><!--#include virtual="include/top.html" -->

    L'URL richiesto non esiste su questo server.

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

    Il link della
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">pagina da cui
    sei arrivato</a> potrebbe essere errato o non essere pi&ugrave; valido.
    Per favore, informa dell'errore l'autore della
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">pagina</a>.

  <!--#else -->

    Se hai scritto l'URL a mano, per favore controlla che
    non ci siano errori.

  <!--#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="Object not found!"
--><!--#include virtual="include/top.html" -->

    要求された URL は本サーバでは見つかりませんでした。

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

    <a href="<!--#echo encoding="url" var="HTTP_REFERER"-->">
    参照元ページ</a>のリンクが間違っているか、古くなってしまっているようです。
    <a href="<!--#echo encoding="url" var="HTTP_REFERER"-->"
    >ページ</a>の著者にこのエラーをお知らせ下さい。

  <!--#else -->

    もし手入力で URL を入力した場合は、綴りを確認して再度お試し下さい。

  <!--#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" -->

    요청한 URL을 이 서버에서 찾을 수 없습니다.

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

    <a href="<!--#echo encoding="url" var="HTTP_REFERER"-->">이전
    페이지</a>에 있는 링크가 잘못되었거나 오래되어 없어진 것 같습니다.
    <a href="<!--#echo encoding="url" var="HTTP_REFERER"-->">그 페이지</a>를
    만든이에게 이 사실을 알려주시기 바랍니다.

  <!--#else -->

    URL을 직접 입력하셨다면 바르게 입력하셨는지 확인하시고 다시 시도하시기
    바랍니다.

  <!--#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="Object niet gevonden!"
--><!--#include virtual="include/top.html" -->

    De gevraagde URL was niet gevonden op deze server.

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

    De link op
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">deze pagina
    pagina</a> is verkeerd of achterhaald. Gelieve de auteur van
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">die pagina</a>
    in te lichten over deze fout.

  <!--#else -->

    Indien u de URL manueel hebt ingevuld, gelieve uw
    spelling te controleren en probeer opnieuw.

  <!--#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="Objektet ble ikke funnet!"
--><!--#include virtual="include/top.html" -->

    Den etterspurte adressen finnes ikke på denne serveren.

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

    Lenken på den
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">forrige siden</a> 
ser ut til å være feil eller utdatert. Venligst informer forfatteren av
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">siden</a>
    om feilen.

  <!--#else -->

    Om du skrev inn adressen manuelt, vennligst kontroller stavingen og
    forsøk igjen.

  <!--#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="Nie znaleziono obiektu!"
--><!--#include virtual="include/top.html" -->

    Nie znaleziono &#380;&#261;danego URL-a na tym serwerze.

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

    Odno&#347;nik na
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">referuj&#261;cej stronie
    </a> wydaje si&#281; by&#263; nieprawid&#322;owy lub nieaktualny. Poinformuj autora
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">tej strony</a>
    o problemie.

  <!--#else -->
    Je&#347;li wpisa&#322;e&#347; URL-a r&#281;cznie, sprawd&#378;, czy si&#281; nie pomyli&#322;e&#347;.

  <!--#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="Objeto n&atilde;o encontrado!"
--><!--#include virtual="include/top.html" -->

    A URL requisitada n&atilde;o foi encontrada neste servidor.

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

    O link na
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">p&aacute;gina
    referida</a> parece estar com algum erro ou desatualizado. Por favor informe o
    autor <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">desta 
    p&aacute;gina</a> sobre o erro.

   <!--#else -->

    Se voc&ecirc; digitou o endere&ccedil;o (URL) manualmente,
    por favor verifique novamente a sintaxe do endere&ccedil;o.

  <!--#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="M&eacute;todo n&atilde;o permitido!"
--><!--#include virtual="include/top.html" -->

	O m&eacute;todo <!--#echo var="REDIRECT_REQUEST_METHOD" --> n&atilde;o
	&eacute; permitido para o URL pedido.

<!--#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="Obiectul nu a fost gasit!"
--><!--#include virtual="include/top.html" -->

    URL-ul cerut nu a fost gasit pe acest server.

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

    Link-ul de pe
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">pagina
    de unde ati venit</a> pare a fi gresit sau invechit. Va rugam informati autorul
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">acestei pagini</a>
    despre eroare.

  <!--#else -->

    Daca ati introdus URL-ul manual, va rugam verificati
    corectitudinea si incercati din nou.

  <!--#endif -->

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

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('HTTP_REFERER')" -->

    Изгледа да је веза на
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">исходишној
    страници</a> погрешна или застарела. Молимо обавестите аутора
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">те странице</a>
    о грешци.

  <!--#else -->

    Уколико сте УРЛ унели ручно, молимо проверите могуће
    грешке и пробајте поново.

  <!--#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="Objektet hittas ej!"
--><!--#include virtual="include/top.html" -->

    Den efterfr&aring;gade adressen hittades inte p&aring; denna server.

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

    L&auml;nken p&aring; den
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">tidigare sidan</a> 
    verkar vara felaktig eller inaktuell. V&auml;nligen informera f&ouml;rfattaren av
    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">sidan</a>
    om felet.

  <!--#else -->

    Om du skrev in adressen manuellt s&aring; kontrollera din stavning och
    f&ouml;rs&ouml;k igen.

  <!--#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="Nesne mevcut değil!"
--><!--#include virtual="include/top.html" -->

    Talep ettiğiniz URL, sunucu üzerinde bulunmuyor.

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

    <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">İstek yapılan sayfa</a>
    üzerindeki bağlantı güncel değil. Lütfen <a href="<!--#echo encoding="url" 
    var="HTTP_REFERER" -->">sayfa</a> yazarını hata hakkında bilgilendirin.

  <!--#else -->

    URL'yi elle girdiyseniz, yazdıklarınızı gözden geçirip yeniden deneyin.

  <!--#endif -->

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