4 zrady při tvorbě mezinárodních webů
Aktuálně provozujeme e-shopy ve 23 jazycích. Narazili jsme při lokalizaci na některé zrádnosti, takže se s vámi o ně podělím, ať si ušetříte spoustu času.
Nebudu řešit lokální specifika jako platby nebo dopravy - to zase jindy a dnes jenom jazyky.
Zrada 1: Texty zprava doleva
Specifikem arabštiny (a dalších jazyků) je, že se píše zprava doleva. V HTML se to řeší naštěstí snadno a stačí jen přidat do hlavičky <html dir="rtl">. Prohlížeč si poradí a texty bude vypisovat zprava doleva, aniž bychom museli hnout prstem. Jenže...Kromě toho, že se slova zapisují pozpátku, tak se v arabštině i celá stránka vnímá zprava doleva. To znamená, že je potřeba například otočit zarovnání textu. Kde bylo text-align:left, musí být right. To může být problematické, hlavně pokud chcete mít jednu šablonu pro všechny jazyky. Naštěstí ale nejsme první kdo to řeší a prohlížeče pro to mají podporu.
- text-align: left => text-align: start
- text-align: right => text-align: end
- text-align: center => text-align: center :)
Jenže ani to nestačí. Text je sice zarovnaný správně, ale to neřeší zbytek stránky. Stejným způsobem je potřeba vyřešit celou šablonu, aby bylo logo a menu vpravo a tak dále. Tady už se pozná, jak moc chytře jste si na začátku šablonu vyrobili :) Pro představu se můžete podívat třeba na web Al Jazeera.
Zrada 2: Jméno a adresa
Ve střední Evropě máme jméno a příjmení. Tohle členění ale neplatí univerzálně. Například ve Španělsku mají příjmení hned dvě - po otci a po matce. Rusové zase mají dvě křestní jména. Arabové mají pro jistotu jmen hned několik.Se dvěma kolonkami tak v těchto zemích rychle narazíte. Stejný problém je samozřejmě i v ČR, když nakupuje třeba Vietnamec. Je tu ale jiná situace, protože nakupuje v českém obchodě a dvě kolonky ho nepřekvapí - už ví, jak si s nimi poradit. Pokud ale děláte lokální web, tak musí vypadat jako ostatní weby v dané zemi.
V případě mezinárodního webu je tak potřeba přinejmenším velmi opatrně validovat zadané údaje. Stejný problém pak je třeba i s ulicemi a čísly popisnými - v každé zemi to funguje trochu jinak.
Zrada 3: Vyhledávání - skloňování, překlepy
Různé jazyky, mají například různé rozložení klávesnice. A nejen specifické znaky, ale přeházené klávesy mezi sebou. V ČR například máme přehozené Y/Z, ve Francii mají písmen přeházených více. Důsledkem je, že vznikají jiné překlepy. Na to je potřeba myslet už při kupování domény, ale taky u fulltextového vyhledávání.Pokud v nějakém našem eshopu hledáte třeba "lodičku", najde to i zboží, které má v textu pouze "lodičky" a podobně si to poradí i s překlepy. Stejnou funkčnost ale samozřejmě budete chtít i v dalších jazycích, takže je nutné mít pro každý jazyk extra fulltextový index.
My používáme CloudSearch a narazili jsme na to, že pro několik jazyků nemá podporu. Než migrujeme na jiné řešení, tak jsme například pro estonštinu použili pravidla skloňování z finštiny (jsou velmi podobná) a doplnili seznam stop slov v estonštině.
Zrada 4: Abeceda
Taky nadáváte, když něco programoval Američan a zcela ignoroval, že jiné jazyky mají diakritiku? Nejspíš ale děláte to samé :)Různé jazyky můžou mít různou abecedu - například čeština má oproti angličtině "ch". Aby bylo možné (nejen) v PHP řadit podle lokálních specifik, stačí jen PHP říct, jakou lokalitu má zohlednit. Schválně jestli uhodnete, co taková turečtina udělá s dibi.
<?php
setlocale(LC_ALL,'cs_CZ');
var_dump(strtoupper('limit'));
// string(5) "LIMIT"
setlocale(LC_ALL,'tr_TR');
var_dump(strtoupper('limit'));
// string(5) "L�M�T"
V turečtině totiž mají dvě "i" a s kódem to může slušně zamávat - například v dibi nám to celý dotaz zpřeházelo. PHP s tím ale počítá a má funkce, které jsou proti tomu imunní. Problém je, že my s tím v Evropě nepočítáme a pokud v řetězci není diakritika, tak naivně předpokládáme, že se s ním nemůže nic stát - chyba!
Zrada 4b: Ikonky
Na abecedu taky narazíte u ikonek. Například klasická ikonka řazení "A-Z" funguje jen v případě, že A a Z jsou skutečně na koncích abecedy a že daná abeceda vůbec má písmenka A a Z.Nekonečný seznam
To byl jen rychlý seznam největších zrad přímo s jazykem. Kromě samotného jazyka je ale problém třeba i oslovení, různé vnímání barev nebo obecně jiná očekávání podaných informací.Řešili jste něco podobného? Na co jsem zapomněl?