ugrás a tartalomhoz

A mellékjelek mellőzéséről

Joó Ádám · 2010. Feb. 24. (Sze), 13.09
A List Apart tegnapi cikkében Carlos Bueno az accent folding technikáról, az ékezetekkel és egyéb mellékjelekkel való okos bánásmódról beszél.

Valljuk be őszintén: hányan használunk nagybetűket google-ös kereséseink alkalmával? Enélkül is működik, így miért fárasztanánk magunkat a shift lenyomásával. Ennél azonban sokkal rosszabb a helyzet, amikor a bevinni kívánt jel nem is érhető el a billentyűzetről, az alkalmazás azonban elvárja tőlünk a pontosságot.

A latinbetűs nemzeti írások majd mindegyike mellékjelek használatával oldotta meg a finom ejtésbeli különbségek jelölésének problémáját, ezek közül azonban nem mindegyik érhető el minden nemzeti billentyűzetkiosztásról, mitöbb, a felhasználóktól sem várható el, hogy pontosan megjegyezzék egy-egy név vagy szó idegen írásmódját.

Képzeljük el, hogy címjegyzékünk keresőmezejébe begépeljük a „lo” betűket. Ekkor Lorena Smith neve minden alkalmazásban meg fog jelenni az élő keresés eredményei közt, sokkal kevesebb fogja azonban felajánlani Fulanito Lópezt, Erik Lørgensent és James Löt.

Míg a kis- és nagybetűk közti különbség figyelmen kívül hagyására kényelmes megoldást biztosít a legtöbb platform, addig az a mellékjelek esetén erre nézve szinte semmilyen direkt támogatást nem kapunk. Mindezek ellenére s fentiek miatt jogos elvárás felhasználóink részéről.

Mióta globalizált életünk része a számítógép, azóta okoz mindennapos problémát az információcserében a világ írásrendszereinek és nyelveinek sokezres tömege. A Unicode terjedésével a problémák egy része megszűnni látszik: végre számíthatunk rá, hogy amit az egyik oldalon leírunk, az a másik oldalon is ugyanazt jelenti, ennél többre azonban alapvetésénél fogva nem képes, hisz elsődleges célja mindig is az interoperabilitás volt, így törvényszerűen örökölte a már akkoriban is több évtizedes és nyilvánvalóan elavult szabványok paradigmáit.

Ennek egyik, a nyugati írásrendszereket érintő szomorú következménye, hogy a hagyományos latin betűk és mellékjelekkel ellátott formáik között közvetlenül semmiféle formális kapcsolatot nem definiál, így kénytelenek vagyunk magunk előrukkolni a megoldással, vagy külső eszközt igénybe venni.

Előbbi minden valószínűség szerint a normalizálás lenne, mely során az előre összeállított mellékjeles karakterből, az alapbetűből és a mellékjelekből álló karaktersor keletkezik, amiből aztán kereséskor elhagyjuk az utóbbiakat. Mivel erre a legtöbb környezetben ugyanúgy nincs lehetőségünk, így egy fapados, de működősképes megoldás lehet kézzel hozzárendelni a szóbajöhető mellékjeles karaktereket ASCII párjukhoz. Ekkor érdemes lehet időről-időre átnézni, hogy milyen új, általunk eddig figyelmen kívül hagyott kombinációkkal próbálkoztak felhasználóink.

A külső eszközök esetén egyik lehetőségünk az International Components for Unicode (ICU), ez a C++/Java projekt, mely széleskörben nyújt megoldást az efféle problémákra, azonban meglehetősen nagy és komplex. A kevésbé elegáns, de gyors és egyszerű megoldás lehet a Perl és Python alatt elérhető Unidecode könyvtár, ami a megadott karakterláncot kísérli meg ASCII sztringgé konvertálni.

Tessék válogatni.
 
1

PHP

Poetro · 2010. Feb. 24. (Sze), 16.03
PHP alá létezik

A Drupal modul ugyanazt a kódot használja, mint a Perl-es Unidecode, természetesen átkonvertálva PHP-ra.
2

http://hu.php.net/manual/en/i

Tyrael · 2010. Feb. 24. (Sze), 17.07
http://hu.php.net/manual/en/intl.requirements.php
To build the extension you need to install the » ICU library of version 3.6+.
szoval az intl is az ICU-t hasznalja.
http://blog.igstan.ro/2009/02/mysql-transliteration-function.html
ez meg mokas lenne mysql-hez, de mikor jatszott vele 1 kollega, akkor nem tudta mukodesre birni.

Tyrael