Autor Zpráva
2ge
Profil
Ahojte,

bolo to tu preberane niekolko krat, ale nejako to neviem spojazdnit, netusim kde robim chybu.

<?php
header('Content-Type: text/html; charset=utf-8');
echo "<pre>"; 
setlocale(LC_ALL, 'cs_CZ.UTF-8', 'Czech');
echo "Nastaveny locale: ". setlocale(LC_ALL, 0) . "\n";
$countries = array(
    'Bulharsko',
    'Česko',
    'Polsko',
    'Čína'
);

sort($countries, SORT_LOCALE_STRING);
print_r($countries);
?>

vypise:
Nastaveny locale: cs_CZ.UTF-8
Array
(
    [0] => Bulharsko
    [1] => Polsko
    [2] => Česko
    [3] => Čína
)

potrebujem pouzivat systemove locale, a nie vlastne php porovnavania, pretoze radenie sa netyka len Cestiny, Slovenciny, ale napriklad aj Arabctiny a inych 50 jazykov, kde nemam potuchy ako to spravne dat dokopy.

Pouzivam:
PHP 5.4.23 (cli) (built: Dec 16 2013 00:36:15) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans

(OSX 10.9.1): Darwin MBP.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64

medzi $ locale -a sa nachadza aj:
cs_CZ
cs_CZ.ISO8859-2
cs_CZ.UTF-8
subor je kodovany utf-8 a aj to spravne vypise...ale nespravne zoradi. Skusal som aj strcoll (pouzitim usort), ale nic nepomaha...dik za kazdu radu.
2ge
Profil
mohol by to niekto vyskusat povedzme na Linuxe, ci to funguje ? Skusal som to na Mac OSX a Free BSD a neide to, ale malo by to fungovat, tak rozmyslam, ci to nie je OS zavisle...
Tori
Profil
Výchozí jazyk OS mám anglinu, SUSE 11.4, PHP 5.3.5, funguje podle očekávání. Zkoušel jste jiné jazyky, jestli to v nich taky řadí špatně? Anebo když zkusíte i to "cs_CZ" (bez kódování)?
2ge
Profil
Tori, dakujem za odpoved. Ostatne jazyky som neskusal, ale nevidim dovod preco by to malo fungovat pre ine a nie pre Cestinu (SK som skusal tiez). Aj bez kodovania som skusal - nepomaha vobec nic.

mozete mi poslat vypis adresara:
$ pwd
/usr/share/locale/cs_CZ.UTF-8

$ ls -la
total 24
drwxr-xr-x    8 root  wheel   272 Oct 23 18:07 ./
drwxr-xr-x  226 root  wheel  7684 Oct 23 18:07 ../
lrwxr-xr-x    1 root  wheel    28 Oct 23 18:06 LC_COLLATE@ -> ../la_LN.US-ASCII/LC_COLLATE
lrwxr-xr-x    1 root  wheel    17 Oct 23 18:06 LC_CTYPE@ -> ../UTF-8/LC_CTYPE
drwxr-xr-x    3 root  wheel   102 Oct 23 18:07 LC_MESSAGES/
-r--r--r--    1 root  wheel    36 Oct 23 18:06 LC_MONETARY
lrwxr-xr-x    1 root  wheel    29 Oct 23 18:06 LC_NUMERIC@ -> ../cs_CZ.ISO8859-2/LC_NUMERIC
-r--r--r--    1 root  wheel   397 Oct 23 18:06 LC_TIME

Ostatni - ak niekto pouziva OSX (alebo FreeBSD), mozete to vyskusat prosim ?
Tori
Profil
U mně to je jiný adresář:
$ locale -a | grep 'cs_'
cs_CZ
cs_CZ.utf8

$ pwd
/usr/lib/locale/cs_CZ.utf8

$ ls -la
total 424
drwxr-xr-x   3 root root   4096 Jul 17  2012 .
drwxr-xr-x 454 root root  16384 Jul  9  2012 ..
-rw-r--r--   1 root root    164 Jul  9  2012 LC_ADDRESS
-rw-r--r--   2 root root 111970 Jul  9  2012 LC_COLLATE
-rw-r--r-- 176 root root 256324 Jul  9  2012 LC_CTYPE
-rw-r--r--   1 root root    391 Jul  9  2012 LC_IDENTIFICATION
-rw-r--r-- 263 root root     23 Jul  9  2012 LC_MEASUREMENT
drwxr-xr-x   2 root root   4096 Jul 17  2012 LC_MESSAGES
-rw-r--r--   1 root root    294 Jul  9  2012 LC_MONETARY
-rw-r--r--   1 root root     82 Jul  9  2012 LC_NAME
-rw-r--r--  12 root root     54 Jul  9  2012 LC_NUMERIC
-rw-r--r-- 251 root root     34 Jul  9  2012 LC_PAPER
-rw-r--r--   1 root root     60 Jul  9  2012 LC_TELEPHONE
-rw-r--r--   1 root root   2446 Jul  9  2012 LC_TIME
Ten váš link na ASCII vypadá trochu zvláštně. Třeba názvy souborů s diakritikou vám to řadí správně?
2ge
Profil
vdaka. asi sa skusim opytat priamo na PHP forume, alebo podat Bug report. Nic ine som neskusal, co sa tyka radenia ani v OS - ale teraz som si v OSX spravil zopar adresarov a tie radi spravne - pozeranie cez prikazovy riadok a finder.

mna hlavne zaujalo, ze OSX/FreebSD pouziva sym linky na definicie, kdezto u vas to su pekne subory, a napr LC_COLLATE@ -> ../la_LN.US-ASCII/LC_COLLATE - moze sposobovat problem. Pozeral som dalsie jazyky a vsetky odkazuju na tento subor, naozaj zaujmave.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: