Poslepu.cz na novém URL

Od ledna 2014 najdete blog na adrese poslepu.cz.

čtvrtek 25. září 2008

Vyznačování změny jazyka obsahu webové stránky

Vyznačování změny jazyka na HTML stránkách bylo u nás dlouhou dobu prakticky zbytečné. Nutnou podmínkou k tomu, aby toto mohlo začít být smysluplně využíváno, byla existence vícejazyčného hlasového syntezátoru, který by obsahoval i český hlas, nebo více různých syntezátorů, běžících na stejném rozhraní - automaticky přepínat mezi syntezátory (resp. jejich hlasy), běžícími na různých rozhraních, screenreadery zatím neumějí.

Do doby, než se na českém trhu objevil vícejazyčný syntezátor Real Speak SOLO, který obsahuje i český hlas Zuzana, však žádný takový neexistoval a český hlas byl vždy samostatným syntezátorem. Real Speak SOLO má ještě jednu výhodu - běží na rozhraní SAPI5, takže pokud má uživatel hlasový syntezátor WinTalker Voice, který je také SAPI5 syntézou, je možné i automatické přepínání mezi hlasy syntezátorů WinTalker Voice a Real Speak SOLO - například screenreader JAWS nahlíží na všechny hlasy SAPI5 syntezátorů jako na sobě rovné.

Co je třeba k tomu, aby to fungovalo?

Testování jsem prováděl s aktuálně dodávanou verzí JAWS 8, syntezátory WinTalker Voice 1.6 a RealSpeak SOLO 4.0, jazyková verze Eastern European / Far East.

Na straně uživatele není třeba nic víc, než si tuto funkci automatického rozpoznávání jazyka ve svém screenreaderu zapnout (ve výchozím nastavení je vypnutá) a mít k dispozici vícejazyčný syntezátor, resp. více různých syntezátorů (například RealSpeak SOLO a WinTalker Voice), běžících na stejném rozhraní (v tomto případě SAPI5). Přepínání pochopitelně funguje jen v případě, kdy uživatel má požadovanou syntézu či hlas k dispozici - pokud tedy bude stránka ve španělštině, ale uživatel španělský hlas mít nebude, tak mu bude text přečten jeho výchozí syntézou. Na to, v jakém cizím jazyce text je, ale bude alespoň upozorněn hláškou před jeho začátkem (např. španělština [Kastilie]).

Tvůrce stránky pak musí bloky textu (či celé stránky) vyznačit pomocí atributu lang="kód jazyka", tedy např. lang="en" pro angličtinu. Při čtení textu screenreaderem je potom takový text automaticky přečten cizojazyčným syntezátorem.

Pro lepší představu o tom, jak to celé funguje, jsem připravil krátkou ukázku, demonstrující přepnutí hlasů syntezátoru RealSpeak SOLO - první odstavec čte český hlas Zuzana, druhý anglický hlas Daniel a třetí německý hlas Steffi. Texty jsem si vypůjčil z webu www.czech.cz, kde už je toto u cizojazyčných verzí implementováno a je vyznačen hlavní jazyk obsahu stránky. Při jejich procházení automaticky (až na španělskou verzi, jelikož v RealSpeaku nemám španělský hlas) dochází k přepnutí na rodilé mluvčí a ti mi pak čtou jejich obsah.

Závěrem

Pokud vytváříte více jazykových verzí webu či často citujete ze zahraničních zdrojů, atribut lang="en" či lang="de" nemusí být vzhledem k výše uvedenému na škodu ;-)

Na základě zkušeností však doporučuji vyznačovat změnu jazyka pouze u delších textů - řekněme od odstavce výše ;-) Pokud byste vyznačovali i jednotlivá slova v cizím jazyce, tak je to jednak spousta skoro zbytečné práce, protože výslovnost řady dnes běžně používaných cizích slov je ošetřena slovníkem syntezátoru, a pak i neustále přepínání syntezátoru je poměrně rušivé (situace, kdy uživatel slyší každé třetí slovo jiným hlasem, je opravdu nic moc).

Související odkazy

2 komentáře:

Jan Tichý řekl(a)...

Nemám možnost ověřit si fungování zmiňovaného syntetizátoru prakticky, tak se zeptám. Zmiňujete HTML atribut lang. Jak je to s XHTML atributem xml:lang - umí ho také zpracovat a respetovat?

Radek Pavlíček řekl(a)...

Teď jsem to zkoušel a zdá se, že xml:lang je ignorován. Screenreader bere v potaz pouze atribut lang a podle něj nastaví odpovídající syntetizér.