|
php kalendar:
hoho
(01.04.2008 13:16):
buzny, da se nekde na netu stahnout kalendar v php? hoho (01.04.2008 19:40): tak sem si ho nakonec napsal. takze je po panice. P (01.04.2008 19:49): Hodne toho je dyztak na http://www.hotscripts.com/PHP/Scripts_and_Programs/index.html Napis vodkaz, kde ten tvuj bezi, at se muzem mrknout DAH (01.04.2008 21:18): Takhle z hlavy taky nevim, ale sou nejaky free/open source groupware aplikace v PHP, kde to jako modul urcite je. hoho (02.04.2008 08:17): Jojo, ted jeste nikde nebezi, panc je osklivej, ale funguje. Pan chce jeste prepinac do 4 jazyku, tak me myslim ceka spouska nudnyho klikani. Je to celkem malej web s administraci, ale prepinac jsem jeste nedelal, ale snad to pude po bulharsku - ze to budu ukladat do promennejch v soborech. hoho (02.04.2008 09:05): tdy je ten kalendar http://www.hoho.cz/osobni/kalendar/kalendar.php P (02.04.2008 12:09): No jo, dobry. A celej web ma bejt ve 4 jazycich? hoho (02.04.2008 13:33): jo. nejakej clovek z php builder mi radil pouzit neco co se menuje "gettext". ale kdyz jsem koukal na manual, tak sem to musel zavrhnout. to je sileny :). to je nejakej prekladac? raci to pekne trpelive nacpu do promennejch. P (02.04.2008 15:18): No ja to kdyz to mam dvojjazycne, tak to delam prasacky, mam funkci LS(): function LS($en, $cs) { return (GetUILang() == 'en') ? $en : $cs; } No a pak normalne mam treba: <input type="submit" value="<?php echo LS('Send', 'Odeslat'); ?>" name="send"> Neni to idealni, ale pro muj ucel je to nejjednodussi. hoho (02.04.2008 17:19): cece to je pro dva jazyky sikovny, ale pro 4 mi prijde mozna prehlednejsi, kdyz nactu soubor s promenejma podle jazyka, ale jak rikam, nevim, musim s tim prvne vubec zacit :) hoho (02.04.2008 17:22): myslim jako, ze nejdriv rozpoznam jazyk, a to jen podle zmacknuty vlajecky (automaticky to delat asi nema cenu), no a pak nactu patricnej soubor, kterej bude mit ve jmene neco z toho indikatoru jazyka. tak to je moje povrchni, mlhava predstava o dalsim vyvoji. kurva ja mam takovy prace, mam 14 dni na dvoje stranky a 4 krabicky. P (02.04.2008 17:56): No jo, nekdo to tak dela - 4 soubory a pak das dycky na zacatku require toho spravnyho. Nebo se to dela do pole. U promennejch je blby, ze kdyz potrebujes ten string v nejaky funkci, tak musis pouzivat 'global'. U poli si obvykle na to udelas nakou funkci, takze to je fuk. Mne se na tom nelibi ta indirekce, ze ty texty mas jinde, nez je uzivas, tak pak je v tom zmatek, terba ti tam smrdej naky, ktery uz ani neuzivas, musis vymejlset nazev promenny nebo indexu a vzdycky se museji natahnou pro kazdou stranku vsechny. Ale v porovnani s tim mym je to spis cistci reseni. Vyhoda je, ze kdyz je mas na jednom miste, tak to muzes dat prelozit i nekomu cizimu. Nebo kdyz pridavas dalsi jazyk. DAH (02.04.2008 19:52): ...a navic, kdyz mas na peti mistech Odeslat, tak to tam mas jen jednou... P (03.04.2008 07:33): No, to je takova vachrlata vyhoda. Protoze ja kdyz mam naky stringy stejny, tak ti mam obvykle jednou v nejaky funkci. Kdezto kdyz je mas v nejakym externim souboru a uziti stringu sdilis na vic mistech, tak se ti muze snadno stat, ze neco zmenis a pak se ti to projevi nekde jinde, kde si to nechtel. Jinak sem chtel dodad k tomu, co sem psal, ze kdyz to mas v promennejch, tak na to si samozrejme taky muzes udelat funkci. hoho (03.04.2008 08:21): jojo, co se tyka tlacitek a kratkejch napisu by mozna stalo zato includnout soubor funkci jako si psal tady nahore function Kontakty ($jazyk) { switch ($jazyk) case ("en"): return ("Contacts"); case ("cz"): return ("Kontakty"); .. } echo Kontakty($aktualni_jazyk) panc by to mohlo bejt prehlednejsi az se bude pridavat nejakej dalsi jazyk. P (03.04.2008 09:18): Jestli to chces ve promennejch, tak bych to udelal asi takhle: Jeden soubor se vsema stringama ve vsech jazycich u sebe. Kdyz to budes mit ve vic souborech, tak se ti to bude blbe udrzovat - pridavani/mazani/upravovani bude vzdycky prace se vsema souborama, ctyrikrat delat otevrit soubor-vyhledat-upravit, to je pakarna. Takze v tom jednom souboru by bylo tohle: $lsContactsCS = 'Kontakty'; $lsContactsEN = 'Contacts'; $lsContactsDE = 'Kontaktsweineren'; $lsContactsFR = 'Contactiones'; $lsSendCS = 'Odeslat'; $lsSendEN = 'Send'; ... A k tomu funkce function LocaleLang() { ... // vrati CS, EN, FR, DE podle aktualniho jazyka } function LS($what) { // Localized String return $GLOBALS['ls'.$what.LocaleLang()]; } A uziti pak je: echo LS('Contacts'); I kdybys to nechtel delat pres jeden soubor, ale pres vic, tak bych si urcite na to udelal funkci podobnou ty LS(), abys vodstinil konkretni implementaci a nemusel vsude pouzivat 'global' (nebo $GLOBALS['...']). hoho (03.04.2008 09:35): aha jasne. hele a ty globalni promenny potrebuju kvuli pouziti ve funkcich? hoho (03.04.2008 09:37): ja bych myslim v pripade tlacitek atd. neoteviral soubor, normalne bych to napsal pres ty switche do nejakyho souboru a pak to vclenil do tela hlavniho souboru pres "include". jenom kvuli prehlednosti. P (03.04.2008 09:37): Ten presne nerozumim otazce. Tys puvodne psal, ze to budes cpat do promennejch. Nebo si to chtel delat nak jinak? P (03.04.2008 09:37): kdyztak napis priklad P (03.04.2008 09:47): Tohle se taky vklada pomoci include. Kdyztak napis kus PHP kodu, jak sis to predstavoval hoho (03.04.2008 10:07): no takle: function Kontakty ($jazyk) { switch ($jazyk) { case ("en"): return ("Contacts"); case ("cz"): return ("Kontakty"); default: return .. } } function Uvod ($jazyk) { switch ($jazyk) { case ("en"): return ("Main"); case ("cz"): return ("Uvod"); default: return .. } } function VolbaJazyka($jazyk) { switch ($jazyk) { case ("en"): return ("language selection"); case ("cz"): return ("volba jazyka"); default: return .. } } echo Kontakty($aktualni_jazyk) echo Uvod($aktualni_jazyk) echo VolbaJazyka($aktualni_jazyk) to bych dal do souboru a ten bych vlozil pres include do tela treba index.php ja ted resim jenom, cudliky a kratky texty, to co bude podlehat administraci zatim ne. hoho (03.04.2008 10:09): hele dik, ja akorat nerozumim proc potrebuju globalni promenny, ja jsem s nima jeste nedelal :). P (03.04.2008 10:20): Urcite pracoval, ne? Kazda promenna, ktera neni pouzita ve funkci, je globalni promenna. Kdyz udelas $i = 1; tak si pouzil globalni promennou. A k ni pak mas pristup bud: echo $i; nebo echo $GLOBALS['i']; Pokud se chces dostat ke globalni promenny ve funkci, tak musis pouzit klicovy slovo global: function Eee() { global $i; echo $i; } Kdybys nepouzil global, tak by to $i bla promenna lokalni v ty funkci (cili by nebosahovala tu jednicku); To tvoje reseni je hodne podobny tomu mymu, akorat ty navrhujes udelat tisice funkci (Kontakty(), Uvod(), ...), ktery obsahujou case. Moje reseni je skoro stejny, akorat funkci udelas jen jednu LS(). Takze misto tisice funkci Neco($jazyk) mas jedinou funkci, ktera se vola LS('Neco'). A i to moje se vlozi do normalniho PHP souboru (kde bude spoustu tech prirazeni do promennejch) a to pak uplne stejne pomoci include vlozis do index.php. hoho (03.04.2008 10:43): jasny, mas recht udelam jen jednu funkci, ja jsem nevedel co to je to GLOBALS :)). P (03.04.2008 10:50): Jo. A nebo to nemusis cpat do promennejch, ale do nakyho pole a prislusne upravit tu funkci LS(). Takze misto: $lsContactsCS = 'Kontakty'; $lsContactsEN = 'Contacts'; ... treba: $lsCS['contacts'] = 'Kontakty'; $lsEN['contacts'] = 'Contacts'; ... Je to podobny, je spis vec vkusu. Nový příspěvek
|