Content-language: cs
Content-type: text/html; charset=UTF-8
Body:----------cs--
<!--#set var="CONTENT_LANGUAGE" value="cs"
--><!--#set var="TITLE" value="Přístup odmítnut!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    Nemáte právo pro přístup do požadovaného adresáře. Buď neexistuje žádný
    dokument s&nbsp;obsahem (tzv. index), nebo je adresář chráněn proti čtení.

  <!--#else -->

    Nemáte právo pro přístup k&nbsp;požadovanému objektu.
    Buď je chráněn proti čtení, nebo není serverem čitelný.

  <!--#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="Zugriff verweigert!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    Der Zugriff auf das angeforderte Verzeichnis ist nicht m&ouml;glich.
    Entweder ist kein Index-Dokument vorhanden oder das Verzeichnis
    ist zugriffsgesch&uuml;tzt.

  <!--#else -->

    Der Zugriff auf das angeforderte Objekt ist nicht m&ouml;glich.
    Entweder kann es vom Server nicht gelesen werden oder es
    ist zugriffsgesch&uuml;tzt.

  <!--#endif -->

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

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

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    You don't have permission to access the requested directory.
    There is either no index document or the directory is read-protected.

  <!--#else -->

    You don't have permission to access the requested object.
    It is either read-protected or not readable by the server.

  <!--#endif -->

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

Content-language: es
Content-type: text/html
Body:----------es--
<!--#set var="TITLE" value="Acceso prohibido!" -->
<!--#include virtual="include/top.html" -->

   <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

      Usted no tiene permiso para accesar al directorio solicitado.
      No existe un documento &iacute;ndice, o el directorio est&aacute;
      protegido contra lectura.

  <!--#else -->

      Usted no tiene permiso de accesar al objeto solicitado.
      El objeto est&aacute; protegido contra lectura, o no
      puede ser leido por el servidor.

  <!--#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="Acc&egrave;s interdit!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    Vous n'avez pas le droit d'acc&eacute;der au r&eacute;pertoire
    demand&eacute;. Soit il n'y a pas de document index soit le r&eacute;pertoire
    est prot&eacute;g&eacute;.

  <!--#else -->

    Vous n'avez pas le droit d'acc&eacute;der &agrave; l'objet
    demand&eacute;. Soit celui-ci est prot&eacute;g&eacute;, soit il ne peut
    &ecirc;tre lu par le serveur.

  <!--#endif -->

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

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

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    N&iacute;l cead agat rochtain a dh&eacute;anamh ar an comhadlann faoi
    iarratais.  Is f&eacute;idir nach bhfuil aon doicim&eacute;ad
    inn&eacute;acs, n&oacute; go bhfuil cosaint ar l&eacute;mh an comhadlann.

  <!--#else -->

    N&iacute;l cead agat rochtain a dh&eacute;anamh ar an aidhm faoi iarratais.
    Is f&eacute;idir go bhfuil cosaint ar l&eacute; air, n&oacute; go bhfuil
    s&eacute dol&eacute;ite don freastala&iacute;.
    
  <!--#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="Accesso negato!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

   Non disponi dei permessi necessari per accedere alla
   directory richiesta oppure non esiste il documento indice.

  <!--#else -->

   Non disponi dei permessi necessari per accedere all'oggetto
   richiesto, oppure l'oggetto non pu&ograve; essere letto dal server.

  <!--#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="Access forbidden!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    要求されたディレクトリへのアクセス権限がありません。
    インデックスドキュメントが存在しないか、
    ディレクトリの読み込みが許可されていません。

  <!--#else -->

    要求されたオブジェクトへのアクセス権がありません。
    読み込みが許可されていないか、
    サーバが読み込みに失敗したかでしょう。

  <!--#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="v('REDIRECT_URL') =~ m:/$:" -->

   요청한 디렉토리에 접근할 수 있는 권한이 없습니다.
   디렉토리에 첫 페이지가 없거나 아니면 읽기 보호가 되어 있습니다.

  <!--#else -->

   요청한 객체에 접근할 수 있는 권한이 없습니다.
   읽기 보호가 되어 있거나 웹서버가 읽을 수 없도록 되어 있습니다.

  <!--#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="Toegang verboden!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

   U hebt niet de toestemming om toegang te krijgen tot de gevraagde map.
   Er is of wel geen index document of de map is beveiligd tegen lezen.

  <!--#else -->

   U hebt niet de toestemming om toegang te krijgen tot de gevraagde map.
   Die is ofwel beveiligd tegen lezen of onleesbaar door de server.

  <!--#endif -->

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

Content-language: pl
Content-type: text/html; charset=UTF-8
Body:----------pl--
<!--#set var="CONTENT_LANGUAGE" value="pl"
--><!--#set var="TITLE" value="Zabroniony dost&#281;p!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    Nie masz prawa dost&#281;pu do &#380;&#261;danego katalogu. W katalogu nie
    ma indeksu lub katalog jest zabezpieczony przed odczytem.

  <!--#else -->

    Nie masz dost&#281;pu do &#380;&#261;danego obiektu. Jest on zabezpieczony
    przed odczytem lub nie mo&#380;e by&#263; odczytany przez serwer.

  <!--#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="Acesso Proibido!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

   Voc&ecirc; n&atilde;o tem permiss&atilde;o para acessar o 
   diret&oacute;rio requisitado.
   Pode n&atilde;o existir o arquivo de &iacute;ndice ou 
   o diret&oacute;rio pode estar protegido contra leitura.

  <!--#else -->

   Voc&ecirc; n&atilde;o tem permiss&atilde;o para acessar o 
   objeto requisitado. Ele pode estar protegido contra leitura ou 
   n&atilde;o ser leg&iacute;vel pelo servidor.

  <!--#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="Acesso proibido!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

	N&atilde;o tem permiss&atilde;o para aceder ao direct&oacute;rio
	que deseja. Ou n&atilde;o existe o documento de &iacute;ndice
	ou o direct&oacute;rio est&aacute; protegido contra leitura.

  <!--#else -->

	N&atilde;o tem permiss&atilde;o para aceder ao objecto
	que deseja. Este est&aacute; protegido contra leitura ou
	o servidor n&atilde;o o consegue ler.

  <!--#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="Accesul interzis!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    Nu aveti permisiunea sa accesati directorul cerut.
    Nu este nici un document index sau directorul este protejat la citire.

  <!--#else -->

    Nu aveti permisiunea sa accesati obiectul cerut.
    Este protejat la citire sau nu poate fi citit de server.

  <!--#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="v('REDIRECT_URL') =~ m:/$:" -->

    Немате дозволу да приступите захтеваном директоријуму.
    Могуће је да нема индексног документа, или да је директоријум заштићен од читања.

  <!--#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="&Aring;tkomst f&ouml;rbjuden!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    Du har inte tillr&auml;ckliga r&auml;ttigheter f&ouml;r att f&aring;
    tillg&aring;ng till den &ouml;nskade katalogen. Det existerar inget
    indexdokument eller s&aring; &auml;r katalogen l&auml;sskyddad.

  <!--#else -->

    Du har inte tillr&auml;ckliga r&auml;ttigheter f&ouml;r att f&aring;
    tillg&aring;ng till det &ouml;nskade objektet. Objektet &auml;r
    l&auml;sskyddat eller inte l&auml;sbart f&ouml;r servern.

  <!--#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="Erişim engellendi!"
--><!--#include virtual="include/top.html" -->

  <!--#if expr="v('REDIRECT_URL') =~ m:/$:" -->

    Talep ettiğiniz dizine erişim izniniz yok.
    Ya dizin içerik dosyası yok, ya da dizin okumaya karşı korumalı.

  <!--#else -->

    Talep ettiğiniz dizine erişim izniniz yok.
    Dizin, ya okumaya karşı korumalı 
    ya da sunucu tarafından okunamıyor.

  <!--#endif -->

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