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:/$:" -->

      No tiene permiso para acceder al directorio solicitado.
      No hay ning&uacute;n documento &iacute;ndice (index) o el directorio est&aacute;
      protegido contra lectura.

  <!--#else -->

      No tiene permiso para acceder al objeto solicitado.
      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--
