Použití modulu mod_html

Pojmenování souborů

Jazykově závislé dokumenty musí být uloženy v souborech, jejich jména mají na konci příponu identifikující patřičný jazyk:

Příklad: Pokud má být dostupná česká a anglická varianta dokumentu, musí být česká varianta uložena v souboru s příponou ".cz" a anglická varianta v souboru s příponou ".en":

jmeno.html.cz		# dokument v jazyce cs
jmeno.html.en		# dokument v jazyce en
Přípona jména souboru ".cz", či ".en" indikuje jazyk dokumentu. Přípony musí definovat správce serveru v konfiguraci serveru:
# konfigurace serveru
AddLanguage cs .cz	# přípona jména souboru ".cz" indikuje jazyk "cs"
AddLanguage en .en	# přípona jména souboru ".en" indikuje jazyk "en"
Konvence pojmenování uložených dokumentů se nepromítá do hypertextových odkazů v dokumentech - v nich jsou odkazy na soubor bez přípony (<A HREF="jmeno.html">).

Pokud má být dokument pouze v jednom jazyce, může být uložen v souboru bez jazykové přípony. Je třeba ovšem správně nastavit, v jakém kódu je. Implicitně jsou soubory bez jazykové přípony považovány za dokumenty bez určení jazyka, v kódu ISO-8859-1.

Příklad:

jmeno.html		# dokument bez určení jazyka v kódu ISO-8859-1

Kód dokumentu

Pro každý jazyk je definován parametrem LanguageCharset zdrojový kód dokumentů. Dokumenty, pro které není definován zdrojový jazyk (jméno souboru nemá jazykovou příponu), jsou uloženy v kódu definovaném parametrem DefaultCharset.

Tyto parametry nastavuje správce v konfiguraci Web serveru. Obvyklé nastavení je:

LanguageCharset en iso-8859-1	# Dokumenty v jazyce en jsou v kódu ISO-8859-1
LanguageCharset cs iso-8859-2	# Dokumenty v jazyce cs jsou v kódu ISO-8859-2
DefaultCharset iso-8859-1	# Dokumenty bez jazyka jsou v kódu ISO-8859-1

Pokud chcete ukládat dokumenty v jiných kódech, než jsou implicitně nastaveny, můžete si zvolit kód pro daný jazyk s platností na adresář. Stačí, když si vytvoříte v daném adresáři soubor se jménem .htaccess (nezapomeňte, že musí být čitelný pro uživatele, pod kterým běží WWW server). Interpretaci parametrů v .htaccess musí správce Web serveru povolit parametrem AllowOverride FileInfo.

Příklad: Pro ukládání českých dokumentů v kódu MS Windows stačí vytvořit ve stejném adresáří jako jsou dokumenty soubor .htaccess s tímto obsahem:

LanguageCharset cs windows-1250
Všechny dokumenty s příponou ".cz" (tedy v jazyce "cs") v daném adresáři a všech jeho podadresářích budou v kódu windows-1250 (CP-1250).

Příklad: Podobně lze pro adresář zvolit implicitní kód, ve kterém jsou uloženy dokumenty bez jazykové přípony:

DefaultCharset iso-8859-2
Všechny soubory bez zaregistrované jazykové přípony adresáři jsou v kódu ISO-8859-2.

Dynamická volba jazyka a kódu

Volba požadované jazykové a kódové verze dokumentu je automatická. Pokud je v nějakém dokumentu odkaz:
<a href="jmeno.html">
a soubor "jmeno.html" neexistuje, ale existují soubory "jmeno.html.postfix", vybere se vhodná jazyková mutace podle preferencí prohlížeče zaslaných v hlavičce Accept-Language (Netscape: Options -> General Preferences -> Language, Internet Explorer: Options -> Languages). Pokud prohlížeč tuto hlavičku neposílá, pak je implicitní jazyk odvozen z doménové adresy. Pro doménu "cz" je zvolena čeština, pro doménu "sk" slovenština, apod.

Kód, ve kterém je dokument zaslán prohlížeči, je odvozen podle preferencí prohlížeče zaslaných v hlavičce Accept-Charset. Pokud prohlížeč hlavičku Accept-Charset nezasílá, pak je zvolen kód dokumentu podle pravidel nastavených v konfiguraci serveru. Obvyklé nastavení zvolí kód ISO-8859-2 pro všechny klienty z domény "cz", s výjimkou klientů, o kterých je známo, že tento kód nezvádají.

Pro explicitní volbu jazykové a kódové mutace se používá přípona jména dokumentu v URL. Na jakýkoli dokument se lze odkázat jménem s příponou jazyka (cs, en) a kódu:

US-ASCII, ISO-8859-1, ISO-8859-2, CP437, CP850, CP852, CP895
windows-1250..6, UNICODE-1-1-UTF-7 a UTF-8
Tyto přípony jsou zachovány (dynamicky doplněny) ve všech odkazech, které jsou v dokumentu.

Příklad:

http://www.fit.vutbr.cz/index.html.cs.windows-1250
Server jméno jazyka a kódu odřízne, vytvoří z nich hlavičky Accept-Language a Accept-Charset a pak zpracuje standardním způsobem požadavek na "index.html". Pokud je na Web serveru soubor "index.html.en" a "index.html.cz", zvolí soubor s příponou ".cz" (jazyk "cs") a při odeslání se překóduje z ISO-8859-2 do windows-1250. Zároveň server doplní do všech hypertextových odkazů v dokumentu explicitně zadanou příponu ".cs.windows-1250". Tím je zvolený jazyk a kód nesen při procházení Web serverem dále.

Uživatelská volba jazyka a kódu

Protože počáteční volba jazyka a kódu nemusí být vždy vhodná, měl by každý dokument obsahovat někde odkaz pro volbu jazyka/kódu. Doporučené použití je:
<A HREF="/cgi-bin/codepage">Změna kódu a jazyka/Change language and 
charset</a>
Odkaz na "/cgi-bin/codepage" je odkazem na CGI skript, který nabídne odkazy pro přepnutí jazyka a kódu. Skript si zjistí URL, ze kterého odkaz vedl (pokud ho ovšem umí klient předat v hlavičce HTTP_REFERER) a vygeneruje odkazy s různými příponami na tentýž dokument. Uživatel se tak po výběru jazyka a kódu vrátí do stejného dokumentu.

Poznámka: Při konfigurace serveru musí být zajištěno, aby pro každý jazyk, který je schopen server poskytovat, bylo v CGI skriptu codepage doplněno odstranění explicitní přípony jazyka a kódu. Příklad CGI skriptu v distribuci modulu toto dělá pouze pro jazyky CS a EN.

Překódování výstupu CGI skriptů

Překódování výstupu platí také pro CGI skripty. CGI skripty, které generují jazykově závislý text, musí navíc na začátku mimo standardní hlavičku Content-Type vygenerovat také hlavičku Content-Language. V hlavičce Content-Type musí být navíc uveden kód, ve kterém produkuje skript výstup!
#! /bin/sh
#  příklad CGI skriptu v shellu
#
echo "Content-Type: text/html; charset=windows-1250"
echo "Content-Language: cs"
echo				 <--- zde je vypsán prázdný řádek!
...	výstup skriptu v kódu Windows-1250
Podrobnější popis najdete v kapitole Jazykově závislé CGI skripty.
Poslední změna: 8. April 2003
Pokud máte námět na vylepšení této stránky nebo na ní naleznete chybu, zašlete dopis na adresu lampa@fit.vutbr.cz.

[ Zpět | Domácí stránka | Web server | Jazyk/Language ]