Sjednání obsahu (content negotiation) je standardní metoda komunikace mezi serverem a WWW prohlížečem. Dá se využít k různým účelům, jedním z nich je volba jazyka. Přesto řada návrhářů webových stránek ignoruje standardy a nutí uživatele, aby se naučili nestandardní metody, které fungují pouze na jednom konrétním serveru.
Technologie sjednání obsahu byla jedním z tématů mé přednášky o serveru Apache v OS/2 na konferenci Warpstock CZ 2003. Informace o těchto konferencích včetně materiálů najdete na www.os2.cz.
Podrobný popis technologie sjednání obsahu lze najít na jiných místech, viz odkazy na konci této stránky. Pro nás je postačující, když si uvědomíme, že server zná jazykové varianty všech stránek. Server též definuje své vlastní preference. Prohlížeč, který nemá implementován algoritmus content negotiation, tedy dostane dokument vybraný serverem. Obvykle však má prohlížeč nastaveny vlastní jazykové preference. Nastavení odešle serveru a ten mu vrátí stránku, která těmto preferencím nejlépe vyhovuje. Vždy však existuje defaultní stránka, kterou server pošle v případě, kdy žádná varianta preferencím nevyhovuje.
Možná se ptáte, proč nevytvoříme dvě sady stránek ve dvou jazycích. Důvodem je, že bychom také museli udržovat dvě sady odkazů. Uživatel by se obvykle při prvním přístupu dostal na stránku v nesprávné jazykové verzi. Některé stránky nemusí v požadovaném jazyce existovat. Například stránka Network Computing via World Wide Web je dostupná pouze v angličtině. Pokud byste se na ni dostali z české stránky a sledovali další odkazy, zůstali byste na anglických stránkách. Přeskok do českého stromu byste museli znovu provést ručně. Sjednání obsahu však zajistí, že se automaticky dostanete na českou stránku, pokud je k dispozici.
Můžete namítnout, že lze téhož dosáhnout pomocí cookies. Někteří uživatelé však považují cookies za zásah do soukromí a nemají je povoleny. Dříve nebo později platnost cookies vyprší nebo uživatel všechny uložené cookies vymaže. Výběr jazyka pak přestane fungovat a uživatel musí svou volbu opakovat. Navíc, na rozdíl od dokumentů nalezených pomocí Content negotiation, dynamicky vytvořené stránky nelze kešovat, což způsobuje zbytečnou zátěž sítě.
Největší výhodou sjednání obsahu je, že preferované jazyky si nastavíme jednou provždy a stejné nastavení funguje se všemi správně navrženými servery. WWW prohlížeč nabídne návod na výběr jazyka v uživatelově mateřštině. Server však může zobrazit návod jen v defaultním jazyce, kterému nemusí uživatel rozumět. Dostáváme se tak do problému slepice a vejce.
Mnoho prohlížečů je, bohužel, nastaveno špatně. Pohledem do logu jsem zjistil, že nějaký švýcarský uživatel požaduje stránky pouze ve švýcarské němčině a v žádném jiném jazyce. Takoví uživatelé pak nedostanou požadovanou stránku ze správně nastaveného serveru.
Nezapomeňte, že většinu anglických stránek píší lidé, pro něž je angličtina cizím jazykem. Ti necítí rozdíly mezi americkou, australskou a britskou angličtinou. Nastavení, která jsou zcela nedostatečná pro profesory Pickeringa a Higginse z Pygmalionu G. B. Shawa, jsou pro účely webu přespříliš popisná. Můžete si do svých preferencí přidat tolik jazyků, kolik chcete. Můžete si pak zvolit, jestli dáte přednost americké nebo australské angličtině, pokud server nabízí obě verze. Měli byste si však vždy přidat obecnou angličtinu. Totéž platí pro další jazyky, jako jsou němčina, francouzština atd.
Uživatel by si měl nastavit všechny jazyky, kterým rozumí, v pořadí podle svých preferencí. Zde je návod pro vybrané prohlížeče (bohužel nemám české verze prohlížečů Mozilla a Netscape):
Úpravy/Nastavení/Navigátor/Jazyky
(Edit/Preferences/Navigator/Languages
) -- tlačítkem Přidat
vyberte jazyky
a určete jejich pořadí případným posunováním nahoru nebo dolů.
Úpravy/Nastavení/Navigátor/Jazyky
(Edit/Preferences/Navigator/Languages
) -- tlačítkem Přidat
vyberte jazyky
a určete jejich pořadí případným posunováním šipkami nahoru nebo dolů.
Nástroje/Možnosti sítě Internet/Obecné
-- stiskněte tlačítko
Jazyky
, tlačítkem Přidat
vyberte jazyky a určete jejich pořadí případným
posunováním nahoru nebo dolů.