C-SaCzech Návod k použití

C-SaCzech je jeden program, který pozná, do kterého kódu má překládat podle jména pod kterým byl spuštěn. S výhodou lze použít symbolických odkazů na jeden soubor, který bude obsahovat kód programu. Tento zdrojový soubor je implicitně toASCII, ostatní, tj. toCP1250, toKAM ..., jsou po standartní instalaci symbolické linky na tento soubor. Tento program předpokládá, že bude spuštěn jako CGI skript a využívá příslušné proměnné prostředí. Nelze jej tedy spouštět samostatně (alespoň ne jednoduše). Obsah

Základy - URL stránky

Stránku napište v osmibitovém kódu, který odpovídá zvolenému implicitnímu kódu serveru. (Ve skutečnosti zdrojový kód není omezen.) Vystavte ji, jak je obvyklé. Jediné, co se změní, bude URL, kterým je třeba se odkázat na stránku. Jestliže URL stránky bez překódování by bylo
http://www.kdesi.cz/cesta/stranka.html
bude URL téže stránky při požadavku jejího překódování do sedmibitového ASCII
http://www.kdesi.cz/cgi-bin/toASCII/cesta/stranka.html
Předpokládám, že cesta ke kódujícím skriptům je /cgi-bin. Můžete použít libovolný ze skriptů toXXXX (kde XXXX jsou jména kódů v distribuci).

Tento odkaz však předpokládá, že předem víte, jaký kód bude uživatel vyžadovat. To často nemusí být pravda. V takovém případě doporučuji použít skript whichcode a URL

http://www.kdesi.cz/cgi-bin/whichcode/cesta/stranka.html
Skript whichcode uživateli oznámí, že cílový dokument obsahuje diakritická znaménka a umožní mu zvolit kód, který považuje za optimální.

Zachování kódu při odkazech

Je přirozeným požadavkem, aby uživatel vybíral kód jen jednou a při odkazech na další dokumenty z téhož zdroje se uchovávala informace o zvoleném kódování. Nejjednodušší cestou je relativní odkaz. Když do dokumentu vložíte odkaz pomocí značky
<A HREF="kapitola1.html">První kapitola</A>
klient přepracuje relativní URL kapitola1.html na absolutní. Vyjde přitom z URL dokumentu, obsahujícího značku. Pokud bylo původní URL dokumentu například http://www.kdesi.cz/cgi-bin/toCP1250/cesta/obsah.html, povede zmíněný odkaz k dokumentu http://www.kdesi.cz/cgi-bin/toCP1250/cesta/kapitola1.html. Informace o kódu byla zachována.

Pozor! Chcete-li využívat pro uchování kódu relativní odkazy, nesmíte v dokumentu použít značku <BASE>, která určuje základní URL dokumentu. Kdybyste ji použili, budou všechna relativní URL vztažena k lokátoru, definovanému touto značkou, nikoli k URL, pod kterým klient získal stránku.

Absolutní odkazy je třeba řešit jinak. Tady používá C-SaCzech metodu podobnou programu WWWdia. Do textu můžete na kterékoli místo (včetně cest) vložit řetězec

__CHARSET__
Kódující skript nahradí každý výskyt tohoto řetězce identifikací kódu, do kterého právě převádí stránku. Proto můžete v textu použít značku
<A HREF="http://www.jinde.cz/cgi-bin/to__CHARSET__/jinacesta/str.html">odkaz</A>
Pokud stránka projde skriptem toKEYBCS2, který ji převede do kódu KEYBCS2, bude v odeslaném dokumentu v této značce uvedeno URL
<A HREF="http://www.saczechserver.cz/cgi-bin/toKEYBCS2/jinacesta/str.html">odkaz</A>
Předpokládám, že server, určený tímto absolutním URL, má instalován C-SaCzech nebo SaCzech. Může, ale nemusí se jednat o tentýž server, který poskytl původní dokument.

Jelikož jsou názvy kódů shodné s programem WWWdia, mohou se na sebe navzájem korektně odkazovat stránky, jejichž servery používají různé implementace češtiny. Absolutní URL, uvedené výše, lze použít i na stránce, která je překódovávána programem WWWdia. Potřebujete-li naopak skočit ze stránky kódované pomocí C-SaCzechu nebo SaCzechu na stránku v pomocí WWWdia, použijte pro tento odkaz URL

<A HREF="http://www.diaserver.cz/cgi-bin/charset/jestecesta/str.html?charset=__CHARSET__">odkaz</A>

Nekódovat obrázky!

C-SaCzech je selektivní. Kóduje jen soubory s určitými příponami (implicitně .html, .htm, .txt a .cz ; jak je změnit se dočtete v kapitole Pod kapotou). Dostane-li k překódování soubor s jinou příponou, odmítne se akce účastnit a přesměruje klienta přímo na dotyčný soubor. Důsledkem je, že klient získá soubor v původním tvaru beze změny kódování.

Díky tomuto mechanismu můžete na své stránky vkládat relativní odkazy na obrázky, zvuky a další druhy dat, kterým by překódování rozhodně neprospělo.

Jestliže se na stránce vyskytne značka

<IMG SRC="obraz.gif">
a URL stránky je http://www.kdesi.cz/cgi-bin/toASCII/cesta/stranka.html, bude klient po serveru požadovat http://www.kdesi.cz/cgi-bin/toASCII/cesta/obraz.gif. Server spustí program toASCII. Ten však zjistí, že je po něm požadováno kódování souboru s příponou .gif. Místo aby se pustil do díla, odpoví klientovi "hele s tímhle já nechci nic mít, vezmi si rovnou ten soubor". Klient si ho vezme a vše funguje k plné spokojenosti všech zúčastněných.

Změna výchozího kódu

Implicitní výchozí kód, ve kterém budou psány dokumenty, určuje správce serveru při instalaci programů C-SaCzech. Mělo by se jednat o kód, ve kterém bude vytvářena většina stránek (nejlépe všechny). Pokud autor používá kód jiný, má dvě možnosti:
Převést stránku do implicitního kódu.
To je méně pohodlné a navíc to komplikuje pozdější úpravy na stránce (každá úprava bude vyžadovat nové překódování).
Ponechat stránku v kódu původním a vyznačit jej.
K vyznačení původního kódu dokumentu se používá HTML komentář v přesně definovaném tvaru
<!--MYCHARSET=kód-->
Například <!--MYCHARSET=CP1250-->. Počínaje řádkem, obsahujícím tento komentář (doporučuji jej uvést na samostatném řádku na začátku dokumentu), bude za výchozí kód dokumentu považován kód CP1250.
Dokonce můžete používat několik různých kódů v jednom dokumentu. Jestliže je první polovina textu psána v kódu Kamenických a druhá v MS-Windows, stačí před každou část vložit příslušný komentář a výsledek bude uživateli odeslán ve správné podobě - obě poloviny se korektně překódují například do ISO Latin 2. Takové dokumenty sice považuji za zvěrstvo, ale ta možnost tu je...

Pro milovníky patologických případů:

Lišta s nabídkou kódování

Pokud se tak správce rozhodne při instalaci, můžete na stránkách kódovaných C-SaCzech využívat automatického generování lišty s nabídkou kódování. Jak se to dělá a co vše lze nastavit se dočtete v části Instalace, popř. Pod kapotou. Ve stránkách pak stačí v místě, kde chcete mít nabídkovou lištu, napsat příkaz
<--BAR-->
který způsobí, že C-SaCzech v daném místě vytvoří a vypíše lištu s nabídkou. Pokud je tak C-SaCzech nakonfigurován, vypisuje lištu automaticky na konci dokumentu, pokud už lišta nebyla alespoň jednou vypsána předtím.

Pokud chcete docílit speciálního tvaru lišty, máte dvě možnosti. Jedna je zadat parametry přímo v příkazu BAR a druhá použít příkazu BARDEF, který je identický s BAR až na to, že nezpůsobí vypsání lišty. V obou příkazech jsou zadané parametry platné i pro všechny následující příkazy BAR. S výhodou lze takto např. předefinovat tvar lišty a nechat C-SaCzech vypsat lištu na konci dokumentu (příklad).

Které parametry C-SaCzech podporuje se můžete dočíst v seznamu příkazů.

Vícejazyčné dokumenty

Pokud pořizujete dokumenty, které mají víc variant, ať už jsou například ve dvou různých jazycích nebo jsou například odlišně zpracovány pro zobrazení různými WWW browsery, vynoří se problém s aktualizací. Jestliže je takových dokumentů více, je třeba pamatovat na to, aby se případné změny provedly v každém souboru, a může se stát (protože sme lidi omylní), že se neudělají všude. Bylo by vhodné mít v nějakém konzistentním formátu všechna spolusouvisející data v jediném souboru. Tento problém se dá samozřejmě vyřešit i napsáním vhodných skriptů na aktualizaci, ale řešení, které nabízí C-SaCzech se mi zdá elegantnější.

Jak se to používá ? Části označíme tak, že na začátek dáme speciální příkaz, podle kterého C-SaCzech pozná, že zde začíná nová část. Např.

<--PART ENG-->
vyznačí novou část se jménem ENG. Pokud je pak je daný dokument překládán skriptem se jménem toXXXXX.eng (popř. toXXXXX.ENG), vypíšou se části mezi <--PART ENG--> a jinými částmi (příklad).
Je rezervováno jedno jméno, a to ALL. Část pojmenovaná jako ALL bude vypsána vždy, stejně jako část dokumentu do prvního výskytu příkazu PART.

Problémem však zůstává, že takto napsané stránky ve většině případů nejsou dobře čitelné bez překódování C-SaCzech, což však nepovažuji za až tak velké mínus.

Další informace viz seznam příkazů.


ZPET Zpět

Tato stránka je součástí dokumentace programu C-SaCzech.