4 zrady při tvorbě mezinárodních webů

Posted 06. 07. 2015 / By Petr Soukup / Eshop

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 :)
Místo explicitního definování stran tak definujeme zarovnání obecně a prohlížeč už si to přeloží na left/right podle aktuálního směru toku textu.

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.

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.

mezinárodní jména

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?



O blogu
Blog o provozování eshopů a technologickém zázemí.
Aktuálně řeším hlavně cloud, bezpečnost a optimalizaci rychlosti.

Rozjíždím službu pro propojení eshopů s dodavateli.