Oldal nyelvétől függő helyes rendezés

nevergone képe

Sziasztok!

Szövegeket kellene rendeznem ABC helyesen. A hagyományos rendezések a magyar nyelv ékezetes karaktereket a sor végére helyezik, nyilván más nyelvek nemzeti karaktereivel is hasonló a probléma.

Van egy varázslat, ami segít ebben:

setlocale(LC_COLLATE, 'hu_HU.utf8', 'hu_HU', 'hun_HUN', 'hun');
sort($list, SORT_LOCALE_STRING);

Ezzel van két probléma:
Egyrészt csak akkor működik, ha a választott locale telepítve van az oldalt futtató szerverre.
Másrészt egy többnyelvű oldalnál a rendezéshez használt locale-t is ki kell találni, majd alkalmazni kell.

Van valami ötletetek ennek az általános megoldására? Lehetséges, hogy ez pofonegyszerű, de eddig nem találtam mindent lefedő általános megoldást.

Drupal verzió: 
nevergone képe

nevergone képe

SELECT x FROM (SELECT 'foo' x UNION SELECT 'bar' x UNION SELECT 'aaz' x) y ORDER BY x;

Szükség szerint a végére: COLLATE utf8_general_ci; (bár ez MySQL specifikussá teszi)

(Ez egy gyorsjegyzet magamnak.) :)

0
0
nevergone képe

Illyés Edit képe

Ha utf8_hungarian_ci-vel hozod létre az adatbázist és a táblákat, akkor jól fog listázni. Persze ez több nyelv esetén nem megoldás, én is setlocale-olozok ilyenkor. :|

0
0
nevergone képe

Nekem úgy tűnik, hogy más collate-vel is jól rendez, latin1_swedish_ci-vel próbáltam. A collate állítgatás azért is nehéz téma, mert a MySQL-hez köt.

Volt már olyan problémád, hogy a setlocale()-lal állítottál volna, de nem volt telepítve a megfelelő locale?

Az eredményt egy készülő contrib modulban szeretném felhasználni, ezért is fontos lenne, hogy minden támogatott adatbázis-kezelő és nyelv alatt működjön. :)

0
0
Illyés Edit képe

Nem volt ilyen gond, és szerintem ez nem egy egzotikus elvárás a tárhelycégek felé, hogy fent legyen minden nyelvi szoftver, amire az ügyfélnek szüksége van.

Modul klassz lenne. :)

(A felhasználónak jó valami visszajelzést adni a status report oldalon, meg új nyelv hozzáadásakor, ha nincs telepítve a szerveren, ami kell a működéshez.)

0
0