České názvy měsíců a dnů v týdnu
Funkce date vrací vždy anglické názvy měsíců a dnů v týdnu. Funkce strftime je naproti tomu locale–aware, takže respektuje jazyk nastavený funkcí setlocale. Problém s funkcí setlocale je v tom, že podporované jazyky a kódování závisí na konfiguraci operačního systému, takže se na ni nedá spolehnout (na Windows např. není k dispozici čeština v kódování UTF-8). Preferuji tedy ruční překlad. Na vícejazyčném webu se dá použít běžná překladová funkce jako lang(date("F"))
, na jednojazyčném bych si vytvořil funkce jednoúčelové:
<?php /** Vrácení českého názvu měsíce * @param int 1-12 * @return string * @copyright Jakub Vrána, https://php.vrana.cz/ */ function cesky_mesic($mesic) { static $nazvy = array(1 => 'leden', 'únor', 'březen', 'duben', 'květen', 'červen', 'červenec', 'srpen', 'září', 'říjen', 'listopad', 'prosinec'); return $nazvy[$mesic]; } echo cesky_mesic(date("n")) . "\n"; /** Vrácení českého názvu dne v týdnu * @param int 0-6, 0 neděle * @return string * @copyright Jakub Vrána, https://php.vrana.cz/ */ function cesky_den($den) { static $nazvy = array('neděle', 'pondělí', 'úterý', 'středa', 'čtvrtek', 'pátek', 'sobota'); return $nazvy[$den]; } echo cesky_den(date("w")) . "\n"; ?>
Diskuse
Jakub Vrána
:
Případně http://www.latrine.cz/ verze:
ladem, úmor, řezen, dupem, kreten, červem, červec, srpem, žháří, říhnem, tysdopad, prsinec


já:
případně původnější http://www.den94ek.cz verze:bleden, úmor, bředen, duden, kreten, čerten, čertenec, svrben, žháří, říhen, psychopat, kosinec
Tomas Petricek:
S tim puvodnim zdrojem to mozna bude jeste slozitejsi :-)...
Sněden úhoř.
Vezem buben.
Svět-ten čert-vem!
Na-věnec lupen.
Lháři, lži-jen!
Tys-dopad!
Blázinec.
(Christian Morgenstern, ze sbírky Beránek měsíc. Přel. Josef Hiršal)
crs:
Taky přispěju ;-) (vlastní výroba)
http://crs.bloguje.cz/721324-to-vrati-se-mi.php
fos4:
Proc jsou $nazvy static ? Ma to nejake opodstatneni nebo to je jen zvyk ?R!:
Je to rychlejsi,Tim ze je to static tak se pole vytvori jenom jednou a pri druhem volani funkce uz se pouzije to drive vytvorene. Proste neco jako jednoducha cache.
fos4:
Ale celou dobu běhu aplikace se udrzuje v pameti - takze je to zase pametove narocnejsi. A pokud se to vola jednou tak uplne zbytečné.fos4:
zajimalo jestli v tom neni neco vice :-)
Jakub Vrána
:
Je to skutečně jenom forma cache. Obvykle upřednostňuji rychlost nad paměťovou náročností. Je pravda, že pokud se funkce zavolá jenom jednou, tak se to nijak pozitivně neprojeví, ale často se bude volat opakovaně (třeba pro každý termín vypsaných školení).


Marek Hrabě:
Také rád používám static. Znát je to hned, jakmile se pokusíte udělat například nějaký rekurzivní kód, kde se funkce zavolá třeba pětsetkrát...HanziQ:
Dodal bych jen nepovinnost $mesic/$den a priradil bych jim defaultni hodnoty date("n")/("w") abych prostě jen mohl napsat cesky_mesic() a byl tam aktuální
Techi:
IMHO diakritika do zdrojových kódů nepatří. Dejte si jí do db, xml, gettext, csv, template mě to je fuk, ale vždycky, když je v kodu diakritika tak se dřív nebo později po****
Např. V Zend Frameworku jsou tyto překlady uloženy v XML pro každý jazyk zvlášť

Richard:
Jen taková technická... Při pohledu na ten zdroják mi bije do očí to že názvy dnů a měsíců nezačínají velkým písmenem.
David Grudl:
Názvy dnů se přece v českém jazyce nepíšou velkým písmenkem…

Richard:
True, sem to zamotal s angličtinou :) Ale ty měsíce pořád platí :)
David Grudl:
Nikoliv, názvy měsíců se v českém jazyce taky píšou s malým písmenkem ;)

Kart:
A aj kdyby, tak tech 12 znaku si snad prepises, ne? :Ptomdawayhet:
ZdravimMozno to niekomu ulahci pracu. Inspirovane Jakubom a troska rozsirene:
http://www.swapp.sk/library/public/LangDate.php.txt
Jindra:
No možná by to někomu i pomohlo, ale odkaz by musel být funkční ;-)Martin:
Přesně tohle jsem hledal. Děkuji!Petr:
Pomohlo. Díky moc!Diskuse je zrušena z důvodu spamu.

