Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: cybgate 30 Června 2008, 17:47:51
-
Třeba bude někdo vědět.
Prosím které balíčky musím nainstalovat na Ubuntu server, aby korektně chodila funkce setlocale(LC_ALL,"cs_CZ") v PHP.
Nějaká locales mám nainstalovaná, dokonce snad i česká, ale v PHP se to nijak neprojeví a místo pondělí mi to vypisuje Monday, datum a čas je neustále v EN formátu.
Kdyby jste někdo náhodou věděl korektní parametry pro setlocale nebo co kde doinstalovat, aby to fungovalo. Kódování mám UTF-8.
Moc díky, zatím to řeším tak podivně přes pole, nahrazování apod. :/
-
Je potřeba locales zavést i do systému, co vypíše
sudo locale-gen
-
Vypsalo to:
Generating locales...
cs_CZ.UTF-8... up-to-date
en_US.UTF-8... up-to-date
Generation complete.
Takže jestli to chápu dobře, tak použít to "cs_CZ.UTF-8"?
A lze přidat i jiná kódování?
Třeba Win1250? Asi ne co? :)
-
Jde. Přesněji je potřeba locales přidat do souboru /etc/locale.gen. Po úpravě si je musíš znovu vygenerovat pomocí locale-gen. ;)
-
Ten soubor tam neexistuje, i po vytvoření to stále hlásí původní dvě Locales.
Konfigurace bude jinde. :/
Vytvořil jsem locale-gen:
cs_CZ.UTF-8 UTF-8
cs_CZ ISO-8859-2
en_US.UTF-8 UTF-8
en_US ISO-8859-1
Ale i tak alespoň UTF-8 funguje, takže se s tím už dá něco dělat.
-
Soubor má být /etc/locale.gen, nikoliv /etc/locale-gen!
-
Samozřejmě to byl jen překlep. Opravdu tam nic takového není. Je to divný.
-
A co přesně vyhodil locale-gen? Nezdá se mi, že by zrovna toto bylo v Ubuntu jinak než v Debianu.
-
Vyhodí to samý co jsem posílal nahoře, jakoby ten /etc/locale.gen soubor vůbec neviděl a divný na tom je, že tam původně vůbec nebyl.
Práva jsou tam root/root - 100644.
root@s-vya-ubuntu:/etc# locale-gen
Generating locales...
cs_CZ.UTF-8... up-to-date
en_US.UTF-8... up-to-date
Generation complete.
root@s-vya-ubuntu:/etc#
-
No tak ještě mrkni jestli náhodou není někde jinde, o čemž pochybuju:
find /etc -name "locale.gen" -print
-
root@s-vya-ubuntu:/etc# find /etc -name "locale.gen" -print
/etc/locale.gen
root@s-vya-ubuntu:/etc#
Je to asi zakletý... :)
root@s-vya-ubuntu:/etc# find / -name "locale.gen" -print
/etc/locale.gen
root@s-vya-ubuntu:/etc#
-
Na ubuntu se to dělá malinko jinak :)
Vypište si seznam všech dostupných locales na vašem pc pomocí:
cat /usr/share/i18n/SUPPORTED
A vyberte si přesně ten, který chcete, do systému ho pak přidáte pomocí locale-gen tj. například pro přidání cs_CZ ISO-8859-2
uděláte:
sudo locale-gen "cs_CZ ISO-8859-2"
[edit]
Tak ne :) Na 8.04 už je to asi zase jinak :(
[/edit]
Upravte soubor /var/lib/locales/supported.d/local a pak spusťte sudo locale-gen
-
Upravte soubor /var/lib/locales/supported.d/local a pak spusťte sudo locale-gen
Díky tohle zabralo, akorát v supported není WIN1250, ale to jsem tak nějak očekával.
Moc díky, tímto je záhada s locale vyřešena a funguje mi i ISO-8859-2. :)
Edit:
Tak nakonec snad i to 1250 - CP1250.
Výsledek - local:
cs_CZ.UTF-8 UTF-8
cs_CZ.CP1250 CP1250
cs_CZ ISO-8859-2
en_US.UTF-8 UTF-8
a
root@s-vya-ubuntu:/var/lib/locales/supported.d# locale-gen
Generating locales...
cs_CZ.CP1250... done
cs_CZ.ISO-8859-2... up-to-date
cs_CZ.UTF-8... up-to-date
en_US.UTF-8... up-to-date
Generation complete.