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="&iexcl;Acceso prohibido!" -->
<!--#include virtual="include/top.html" -->

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

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

  <!--#else -->

      Usted no tiene permiso para acceder al objeto solicitado.
      El objeto est&aacute; protegido contra lectura o
      el servidor no puede leerlo.

  <!--#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: nb
Content-type: text/html; charset=UTF-8
Body:----------nb--
<!--#set var="CONTENT_LANGUAGE" value="nb"
--><!--#set var="TITLE" value="Adgang forbudt!"
--><!--#include virtual="include/top.html" -->

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

    Du har ikke tilstrekkelige rettigheter for å få tilgang til den
    ønskede katalogen. Det eksisterer ikke et indeksdokument, eller
    katalogen er lesebeskyttet.

  <!--#else -->

    Du har ikke tilstrekkelige rettigheter for å få adgang til det
    ønskede dokumentet. Objektet er lesebeskyttet, eller ikke lesbart
    for serveren.

  <!--#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="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: ru
Content-type: text/html; charset=UTF-8
Body:----------ru--
<!--#set var="TITLE" value="Доступ запрещён!"
--><!--#include virtual="include/top.html" -->

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

    У Вас нет прав доступа к этой директории.
    Отсутствует индексный файл, или директория недоступна для чтения.

  <!--#else -->

    У Вас нет прав доступа к этому объекту.
    Файл недоступен для чтения, или сервер не может его прочитать.

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

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

    您无权访问所请求的目录。
    这是由于没有主页或该目录不允许被读取导致的。

  <!--#else -->

    您无权访问所请求的对象。
    它可能不允许被读取或无法被服务器读取。

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

    您無權訪問所請求的目錄。
    這是由於沒有主頁或該目錄不允許被讀取導致的。

  <!--#else -->

    您無權訪問所請求的物件。
    它可能不允許被讀取或無法被伺服器讀取。

  <!--#endif -->

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