Pozor museum: Toto je archivní verze blogu. Pro vkládání komentářů přejděte na tento článek v nové verzi blogu.

Diakritika v .cz doménách, IDN, pomlčka a spekulanti

Diskuse o IDN (např. 1, 2) už pomalu utichla, a tak si s odstupem dovolím malé shrnutí.

IDN

Bouřlivé diskuse vyvolalo uveřejnění výsledků již několikátého průzkumu pořádaného sdružením CZ.NIC.

Co je IDN

Ve zkratce: IDN (Internationalized Domain Names) je způsob jak do internetových domén (např. seznam.cz) dostat háčky a čárky (a další znaky třeba z čínštiny nebo azbuky).

V současné době v .cz doménách nelze používat diakritiku a další zvláštní znaky, např. doména opičárna.cz existovat nemůže, ale opicarna.cz ano.

Podle zmiňovaného průzkumu je 87% dotázaných organizací a 62% jednotlivců proti zavedení IDN pro českou doménu. Možná si říkáte, co blázní, proč bychom nemohli mít internetové domény hezky česky…

Proč nezavádět IDN vůbec

Je hned několik důvodů, proč IDN nezavádět (zachovat současný stav).

Špatný návrh

DNS si velmi zjednodušeně představte jako systém, který umožňuje převádět doménová jména (např. frantovo.cz) na IP adresy (např. 83.167.252.161), umí toho samozřejmě mnohem víc, ale to teď nechme stranou.

Jde tedy o jakýsi převod mezi textem (adresa, které rozumí člověk) a IP adresou (té zase rozumí počítač).

Původně se zde s diakritikou nepočítalo, a proto tu nejsou žádné háčky, čárky, ani azbuka ani čínské znaky – pracuje se s omezenou abecedou (a-z, čísla…). IDN je pokus, jak do systému DNS podporu pro tyto zvláštní znaky dodatečně dobastlit. Nejedná se o nějakou zásadní změnu DNS, ale jen o takové šidítko pro uživatele – systém bude dále pracovat s omezenou abecedou a domény budou vypadat např. takto: xn--hkyrky-ptac70bc.cz a až v té nejvyšší vrstvě systému, která komunikuje s uživatelem (např. webový prohlížeč), se doména převede na ten oháčkovaný tvar, tedy: háčkyčárky.cz.

Z toho plyne, že podporu pro IDN je potřeba dopsat do všech aplikací, které s ním mají pracovat – jinak uživatel místo čitelného doménového jména uvidí nějaký patvar (xn--hkyrky-ptac70bc.cz), ze kterého nevyčte vůbec nic. Představte si, že vám např. z takové domény přijde e-mail.

Pro zápis IDN doménových jmen bylo potřeba vynalézt nové kódování – tzv. Punycode (RFC 3492, Wikipedia).

Možná vás napadne, že by bylo lepší, kdyby vstupem a výstupem překladu DNS byla místo textu obecná posloupnost bajtů, díky čemuž by šlo použít některé ze stávajících kódování (např. UTF-8) a nemuselo by se zavádět nové (Punycode). Jenže to by vyžadovalo ještě mnohem více práce a změnu mnohem více softwaru – a případné problémy by byly větší než „jen“ zobrazení uživatelsky nepřívětivého tvaru (xn--hkyrky-ptac70bc.cz).

IDN je tedy v principu špatně navržené, ale na jeho obranu je potřeba říct, že je to nejlepší z těch špatných řešení (nebo jediné realizovatelné). Nicméně než to dělat špatně, to raději vůbec, IMHO.

Chybějící podpora v aplikacích

Jak jsem psal výše, podporu pro IDN je potřeba do aplikací dopsat, tzn. práce navíc. Celkem dobrá podpora je ve webových prohlížečích (např. Firefox). Nicméně to nejsou zdaleka jediné aplikace, které s DNS/IDN pracují. U e-mailových klientů je to horší – někdy se vám do IDN domény nepodaří poslat e-mail, jindy ano, ale když vám přijde odpověď, klient nezobrazí přeloženou doménu, ale jen ten nečitelný paskvil. Takže, když vám přijde např. e-mail z obchodu, který má doménu malá-roztomilá-koťátka.cz v poli „Odesílatel“ uvidíte xn--mal-roztomil-kotka-0rbjd710a.cz.

Tohle se časem spraví, vývojáři softwaru do něj podporu IDN dopíší (kdo to zaplatí?) a bude dobře – do té doby to budou uživatelé muset nějak přežít. Nezapomínejme ale na to, že dotčeným softwarem není jen těch pár webových prohlížečů nebo e-mailových klientů – je potřeba pamatovat na všechny možné webmaily, registrační formuláře na webu (kde se typicky kontroluje e-mailová adresa nějakým regulárním výrazem – nezapomeňte si ho přepsat, nebo před něj přidat konvertor IDN), logovací systémy (nečitelné domény v logu nejsou zrovna přívětivé – tak ty logy budete muset převést třeba do UTF-8 a vypisovat do nich přeložené domény nebo si je pak překládat ručně).

Ještě k těm webmailům: pokusil jsem se poslat e-mail na testovací adresu – zde jsou výsledky:

  • Seznam: Nebyl zadán příjemce nebo je zadán chybně!
  • Volný: Došlo k chybě při odesílání zprávy: Problém systému (EX_USAGE). Zpráva nebyla odeslána.
  • GMail: Adresa „test@háčkyčárky.cz“ v poli „Komu“ nebyla rozpoznána. Zkontrolujte prosím, zda jsou všechny adresy ve správném tvaru.

Vypadá to, že podpora IDN ještě tak úplně nenazrála (jemně řečeno).

Špatná čitelnost, nejednoznačnost

Doménová jména se nacházejí na rozhraní „světa lidí“ a „světa počítačů“. Počítačům by stačily IP adresy, ale my lidé si je nechceme pamatovat, tak používáme doménová jména. Tyto dva světy se dost liší – počítače pracují s exaktními údaji, nic si nedomýšlejí, písmeno s háčkem a bez háčku jsou pro něj dva různé znaky… Zatímco člověk si dokáže spoustu věcí domyslet, vidět podobnost… ale taky dělat chyby.

Doménové jméno je identifikátor, počítači ho musíte sdělit přesně, jinak požadovanou adresu nenajde. Počítači nedělá problém pracovat s čínskými znaky, s háčky, čárkami atd. on si je „přechroustá“, přeloží pomocí patřičného kódování, ale je potřeba mu je zadat přesně – a v tom právě může udělat člověk chybu.

Podobným identifikátorem je např. SPZ (státní poznávací značka), také zde se používá omezená abeceda a určitá pravidla – abyste nemuseli řešit, jestli např. ta šmouha nad písmenem je jen nějaká špína na značce nebo čárka či háček (což by ve výsledku znamenalo zcela jinou SPZ).

Když vám někdo do telefonu řekne, ať se podíváte na stránky Ján-Prochazka.cz, musíte adresu zadat přesně. Kdybyste se třeba přeslechli a zadali Jan-Procházka.cz, dostanete se na neexistující stránky (v horším případě na stránky konkurence nebo nějakého podvodníka). V současné době (IDN se nepoužívá) s tím nemáte problém, i kdybyste ty háčky/čárky přeslechli, do prohlížeče zadáte jednoznačný tvar a je po problému… i když ne tak docela.

Musíte si pamatovat, jestli ta dvě slova (jednoslovné domény jsou ve výhodě) byla oddělená pomlčkou nebo ne. Většinou se to řeší tak, že si majitel domény pořídí oba tvary – jak s pomlčkou, tak bez. V praxi tak provozovatel platí za dvě domény, ale reálně používá jen jednu, docela opruz, co? Platit za něco, co nechci.

Ale když platit nechci, riskuji, že si druhý tvar mé domény zaregistruje někdo jiný – např. spekulant, který si ji koupí za pár stovek a pak ji bude chtít prodat za desetitisíce (např. až se mi rozjede můj podnik a zjistím, že by se mi hodila i ta druhá doména), nebo konkurent, který využije toho, že se někteří mí zákazníci spletou v (ne)zadávání pomlčky a on mi je „přebere“, případně nějaký podvodník, který na takovou doménu umístí zavirované nebo jinak závadné stránky.

Dneska je více méně nutnost si u víceslovných doménových jmen registrovat oba tvary, jinak si říkáte o problémy.

Totéž platí pro IDN a diakritiku jen s tím rozdílem, že těch možností je ještě trochu víc – to aby si pak člověk zaregistroval čtyři (a víc) domén, jen aby zabránil tomu, že na jeho jméně bude někdo parazitovat.

Docela smutné, ne? To má být pokrok? Dejme tomu, že mám roční „rozpočet na domény“ 1000 Kč. Raději si pořídím čtyři zcela různé domény než jednu a několik jejích dalších tvarů (které si pořizuji jen kvůli podvodníkům a spekulantům). Jedna doména bude základní a ty další můžu využít třeba pro různé kampaně nebo sezónní akce, případně pro mikroweb nějakého konkrétního výrobku. Budu mít tedy např. domény firma.cz (základní) a pak vyrobek1.cz, vyrobek2.cz, kampan1.cz. Než abych měl firma.cz, firma-bez-diakritiky.cz, firma-s-pomlckou.cz a firma-bez-diakritiky-s-pomlckou.cz, ze kterých žádný reálný přínos nemám a jen se přesměrovávají na základní tvar.

IDN tedy znamená nižší přínosy při zachování rozpočtu – nebo vyšší náklady při zachování přínosů. Což je zřejmě také důvod, proč se většina firem a jednotlivců vyslovila proti zavedení IDN pro českou doménu (viz odkazovaný průzkum).

Chybějící přínosy

IDN sebou nese nezanedbatelná náklady – vývoj softwaru, testování, konfigurace, zase testování, školení… a to všechno kvůli… kvůli čemu vlastně? Co to přinese?

Kromě úsměvných příkladů (jako že kromě domény Vlada.cz bude moci existovat i doména Vláďa.cz a Vladimír si přijde na své) ty přínosy jaksi chybí (zejména tady v ČR – země jako 中國 nebo Россия teď nechme stranou – bavíme se o zavedení IDN pro .cz doménu).

Je jasné, že text psaný česky (správně) je lépe čitelný než text psaný cesky (chybně, bez hacku a carek), stejně tak pro marketingové účely je lepší si na auto nalepit nápis např. Živě.cz místo Zive.cz. Jenže to všechno můžeme dělat už teď – na vizitky, tiskoviny, loga atd. klidně píšeme háčky a čárky, aby se to lidem lépe četlo, ale je tu jasná konvence – při psaní adresy do prohlížeče háčky a čárky nepíšeme – a vše funguje.

Když už IDN zavádět, tak jak?

Jestli se má IDN pro českou doménu přeci jen zavést, měli bychom se poučit z chyb a minulosti. Když vidíme, jaké problémy a zvýšené náklady způsobuje obyčejná pomlčka, proč dělat tu stejnou chybu s IDN?

Na druhou stranu argument – když někdo IDN doménu chce (i přes riziko, že mu třeba nebude chodit pošta), měli bychom mu to dopřát – je celkem oprávněný.

Takže jak na to? Jak dopřát domény s diakritikou těm, kdo o ně stojí, a při tom nenadělat víc škody než užitku? Řešení je poměrně jednoduché: stačí nedovolit samostatnou registraci domén s diakritikou, ale nastavit pravidlo, že majitel domény (základního tvaru, bez diakritiky) má nárok na libovolný počet „oháčkovaných“ tvarů této jeho domény. To by bylo buď v ceně, nebo za nějaký drobný poplatek. Důležité ale je, že za obranu před podvodníky a spekulanty by člověk nemusel platit nic (ti by si diakritický tvar jeho domény zaregistrovat nemohli).

Totéž by mělo platit pro domény s pomlčkou – zpětně je samozřejmě nikomu odebrat nejde, ale šlo by zakázat jejich samostatnou registraci.

Aby doménu s pomlčkou (např. řeznictví-vidlákov.cz) vlastnil někdo jiný, než doménu bez pomlčky (např. řeznictvívidlákov.cz) většinou nedává smysl (totéž platí pro variantu s diakritikou a bez). V těch (celkem výjimečných) případech, kdy to smysl má, by šel zařídit převod práv (aby každý tvar domény měl jiného vlastníka). Slušní lidé se vždycky dohodnou a příživníci budou mít smůlu.

Flattr this

Průměr: 4.3 (9 hlasů)

Dodatek I: Firefox

Jelikož v současnosti .cz doména IDN nepoužívá, bude se vám v adresním řádku Firefoxu zobrazovat při návštěvě testovacího webu HáčkyČárky.cz ošklivé http://xn--hkyrky-ptac70bc.cz/ místo http://háčkyčárky.cz/ Zatímco u jiných TLD se vám přeložený (punycode kódováním) tvar zobrazí.

Chování prohlížeče se dá nastavit na adrese about:config: Přidejte si tam novou logickou hodnotu network.IDN.whitelist.cz a nastavte ji na true.

Dodatek II: automatický překlad na úrovni DNS

Možná vás napadne, že by to šlo i jednodušeji – DNS servery by mohly na dotaz „oháčkované“ domény automaticky vracet stejné odpovědi jako na varianty bez háčků – aniž by bylo potřeba ručně vytvářet nové DNS záznamy (vygenerovaly by se všechny povolené varianty). Jenže těch je tolik, že by to do pamětí současných DNS serverů jednoduše „nevešlo“.

Tudy cesta nevede. Naopak řešení, kdy si vlastník „základního“ tvaru domény (bez češtiny a pomlček) může ručně založit záznamy s češtinou a pomlčkami, které reálně potřebuje, považuji za uskutečnitelné a dobré.

Dodatek III: Kódování

V textu jsem zmínil, že IDN používá kódování punycode. Kdo si chce hrát, může vyzkoušet tento online IDN konvertor – jednoduše zadáte text s diakritikou (nebo jinými unicode znaky) a převedete si ho na punycode – případně naopak.

Celkem vtipné je, kolik těch kódování už máme. Např. v běžné (X)HTML stránce:

<p>nějaký text <a href="http://xn--hkyrky-ptac70bc.cz/n%C4%9Bjak%C3%A1%20str%C3%A1nka%20s%20%C4%8De%C5%A1tinou%20a%20mezerami">nějaký odkaz</a> zase nějaký text</p>

budete mít zeleně označený text (typicky) v kódování UTF-8. modře označený text v tzv. URL kódování (Percent-encoding, URL encoding). A červeně označený text nově v kódování punycode.

Případně jde pomocí URL kódování zapsat i samotné doménové jméno – tzn. h%C3%A1%C4%8Dky%C4%8D%C3%A1rky.cz místo xn--hkyrky-ptac70bc.cz – a někdy to i funguje, ale nevím, jestli je to specifikované.

Nuda nebude ani při kódování hlaviček e-mailů (např. odesílatel, příjemce atd.).

Adresa Vladimír Vopička <vladimir.vopicka@vopičárna.cz> se zakóduje jako:

=?utf-8?q?Vladim=C3=ADr_Vopi=C4=8Dka?= <vladimir.vopicka@xn--vopirna-kwa90b.cz>

Text modře označený je tzv. „encoded-words“ podle RFC 2047, což je posloupnost tisknutelných ASCII znaků uvozená =? a vnitřním kódováním (v tomto případě UTF-8, podle RFC 2279). A červený text je v punycode. Zbytek je v prostém ASCII. V malém kousku textu (jméno + e-mailová adresa) tak máme tři resp. čtyři kódování resp. erefcéčka. Pořád si myslíte, že toho my ajťáci děláme pro uživatele málo? :-)

Dodatek IV: Doména .čr

Dalším možným řešením by bylo vytvoření domény nejvyššího řádu .ČR, ve které by se IDN nasadilo, zatímco .cz by zůstala, jak je. Ač to zní jakkoli bláznivě, např. Číňané TLD doménu .中国 (a dokonce i .中國 – ta je v tradiční čínštině) mají a docela se i používá (Google v této doméně indexuje cca 13 600 stránek). Adresa webové stránky pak může vypadat třeba takhle:

http://考友會.中國/

(tzn. bez jakéhokoli znaku psaného latinkou – nepočítáme-li označení HTTP protokolu, což se jen tak změnit nedá :-)