Content-language: cs
Content-type: text/html; charset=UTF-8
Body:----------cs--
<!--#set var="CONTENT_LANGUAGE" value="cs"
--><!--#set var="TITLE" value="Nepodporovaný typ prostředku!"
--><!--#include virtual="include/top.html" -->

    Server nepodporuje typ prostředku (media) přeneseného v&nbsp;požadavku.

<!--#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="Nicht unterst&uuml;tztes Format!"
--><!--#include virtual="include/top.html" -->

    Das bei der Anfrage &uuml;bermittelte Format (Media Type)
    wird vom Server nicht unterst&uuml;tzt.

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

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

    The server does not support the media type transmitted in the request.

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

Content-language: es
Content-type: text/html
Body:----------es--
<!--#set var="TITLE" value="&iexcl;El tipo de medio no est&aacute; soportado!" -->
<!--#include virtual="include/top.html" -->

   El servidor no soporta el tipo
   de medio transmitido en la solicitud.

<!--#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="Type de m&eacute;dia invalide!"
--><!--#include virtual="include/top.html" -->

    Le serveur ne supporte pas le type de m&eacute;dia utilis&eacute;
    dans votre requ&ecirc;te. 

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

Content-language: ga
Content-type: text/html; charset=UTF-8
Body:----------ga--
<!--#set var="TITLE" value="Cine&aacute;il me&aacute;n gan tacha&iacute;ocht!"
--><!--#include virtual="include/top.html" -->

    N&iacute; tacha&iacute;onn an fhreastala&iacute; an cine&aacute;il
    me&aacute;n a sheoladh san iarratais.

<!--#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="Tipo di dato non supportato!"
--><!--#include virtual="include/top.html" -->

    Il server non &egrave; in grado di gestire il 
    tipo del formato dei dati trasmesso nella richiesta.
   
<!--#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="Unsupported media type!"
--><!--#include virtual="include/top.html" -->

    リクエストで指定されたメディアタイプはサポートされていません。

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

    요청으로 보내온 미디어 형식을 이 서버가 지원하지 않습니다. 

<!--#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="Niet ondersteund formaat!"
--><!--#include virtual="include/top.html" -->

   De server ondersteunt het gevraagde formaat ( media type ) niet.

<!--#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="Mediatypen støttes ikke!"
--><!--#include virtual="include/top.html" -->

    Serveren støtter ikke den mediatypen som ble forespurt.

<!--#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="Nieobs&#322;ugiwany typ danych!"
--><!--#include virtual="include/top.html" -->

    Serwer nie zna typu danych przes&#322;anych w &#380;&#261;daniu.

<!--#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="Tipo de media n&atilde;o suportado!"
--><!--#include virtual="include/top.html" -->

   O servidor n&atilde;o suporta o tipo de m&iacute;dia
   transmitida nesta requisi&ccedil;&atilde;o.

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

Content-language: pt
Content-type: text/html; charset=ISO-8859-1
Body:----------pt--
<!--#set var="TITLE" value="Media n&atilde;o suportado!"
--><!--#include virtual="include/top.html" -->

	O servidor n&atilde;o suporta o <i>media type</i> transmitido no 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="Tip de date nesuportate!"
--><!--#include virtual="include/top.html" -->

    Serverul nu suporta tipul de date trimise in cerere.

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

    Сервер не поддерживает работу с указанным типом данных.

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

    Сервер не подржава врсту медија пренесену у захтеву.

<!--#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="Mediatypen st&ouml;ds ej!"
--><!--#include virtual="include/top.html" -->

    Servern st&ouml;djer inte den mediatyp som skickats i f&ouml;rfr&aring;gan.

<!--#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="Desteklenmeyen ortam türü!"
--><!--#include virtual="include/top.html" -->

    Sunucu, istekte belirtilen ortam türünü desteklemiyor.

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

    服务器不支持请求中传输的媒体类型。

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

    伺服器不支持請求中傳輸的媒體型式。

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