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).
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?
OdpovědětVymazatTeď 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.
OdpovědětVymazat