| | |
| Stránka: 1 z 1
| [ Príspevkov: 18 ] | |
Autor | Správa |
---|
Registrovaný: 28.02.09 Prihlásený: 19.02.18 Príspevky: 241 Témy: 56 |
cawte chcem sa spytat ludi ktory sa mozno vyznaju lepsie v php ako ja a maju nejaku skusenost s codeigniter...serie ma ze robim na jednom velkom webe a pouzivanie jazyka cez uz vytvorenu funkciu je podla mna totalne neprehladne....ak mam prelozit stovky slov a mam 5 priecinkov v language s 5 jazykmi....tak sa v tom totalne stracam co uz prelozene mam a co nie...preto som si spravil nieco taketo:
do application/config/konstants.php som doplnil toto:
Kód: $lang = array(); include_once('lang.php'); $GLOBALS['lang'] = $lang;
dalej v application/config/lang.php mam subor s prekladmi (nemiesto 5 mam vsetko v jednom) Kód: $lang["preklad_1"] = array("sk"=>"preklad 1 sk", "en"=>"preklad 1 en", "pl"=>"preklad 1 pl");
$lang["preklad_2"] = array("sk"=>"preklad 2 sk", "en"=>"preklad 2 en", "pl"=>"preklad 2 pl");
dalej mam v system/plugins/functions.php funkciu Kód: function language($index){ $CI =& get_instance(); $return = NULL;
if(array_key_exists($index, $GLOBALS['lang'])){ $return = $GLOBALS['lang'][$index][$CI->lang->lang()]; } return $return; }
$CI->lang->lang() = vrati aktualny jazyk ("sk", "en", "pl")
takze namiesto lang() ktora uz bola napisana pouzivam fciu language() ...
a otazka: Myslite ze to system spomaly? alebo to je nejak zle napisane zla funcnost alebo nejake vyhrady k tomu?
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 14.06.2011 12:21 | |
|
no je zbytocne nacitavat vsetky jazyky, ak itak pouzijes iba jeden. pokial to nie je velky objem dat, tak to nejaku velku vychylku nespravi.
ja to mam spravene podobne, s tym, ze jazyky mam rozdelene do priecinkov napriklad
Kód: languages/sk/basic.php languages/sk/blog.php
languages/en/basic.php languages/en/blog.php pricom kazdy obsahuje pole napr (pre blog.php) Kód: #sk/blog.php array( 'pocet_clankov' => 'tato kategoria obsahuje %d clankov' )
#en/blog.php array( 'pocet_clankov' => 'there are %d articles in this category' ) (pre basic.php) Kód: array( 'uvitanie' => 'Vitajte na mojej stranke' ) a na zaciatku si loadujem subory, ktore budem pouzivat automaticky loadujem basic.php, kde su retazce pouzivane na celej stranke bez ohladu na controller a dalsie v __construct() daneho controlleru (napriklad controller pre blog) Kód: lang::load('blog'); toto mi nacita subor blog.php pre dany jazyk, takze funcia spravi nieco taketo Kód: $lang = require 'languages/sk/blog.php'; //alebo z priecinku EN, uz zalezi od zvoleneho jazyku, tak ako to mas spravene ty) vo viewoch potom volam napr Kód: lang::get('pocet_clankov', 5); //vrati "tato kategoria obsahuje 5 clankov" popripadne textovou verziou (toto pouzivam ak nevkladam do jazykoveho retazca dalsie parametre, ako v hornom prikalde som tam vlozil cislo 5) Kód: {lang:uvitanie}
vyhoda je, ze nemusim nacitavat zbytocne texty, ktore pouzivat nebudem a je to prehladnejsie, teda si mozes subory rozdelit podla vyuzitia (ako som uviedol priklad basic.php a blog.php). naco nacitavat jazyky pre blog, ked bol nie je zobrazeny pri "renderovani" stranky
a pritom metodu lang::load() mozes pouzit kolko chces, takze texty pre blog si mozes rozdelit aj do viacerych suborov
_________________ Sorry za prelkepy |
|
Registrovaný: 20.10.08 Prihlásený: 21.06.22 Príspevky: 2602 Témy: 31 Bydlisko: Bratislava |
Tiez to mam rozdelene do zvlast suborov a 1 hlavny volam vzdy a ten dalsi podla controlleru..
Mam potom vytvoreny MY_Controller (extends CI_Controller), v ktorom sa deju vsetky dolezite veci na stranke ako pridelenie hlavnych CSS a JS do viewu (cez moju vlastnu kniznicu external), nacitanie niektorych kniznic a modelov v zavislosti od URL (teda ci sa nachadzame v administracii, alebo vo frontende), nastavenie public vlastnosti, ktore sa potom mozu pouzivat kdekolvek v systeme a kopu dalsich veci a samozrejme aj jazyky:
Kód: if( !defined('NO_LANG') ) { $this->lang->load('default', $language); $this->lang->load('admin_' . $this->router->class, $language); // language fajly pre administracne rozhranie }
A potom v konkretnom controllery nededim objekty a vlastnosti CI_Controller, ale MY_Controller.
Btw DeeJay3 to tvoje riesenie je urcite pomalsie, kedze mas definicie vsetkych prekladov v jednom poli, dalej si vytvaras globalne pole lang a metodu lang() "zaobalujes" este aj do metody language(). Nic v zlom, ale je to prasacina
_________________ Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB |
|
Registrovaný: 28.02.09 Prihlásený: 19.02.18 Príspevky: 241 Témy: 56 | Napísal autor témy DeeJay3: 14.06.2011 13:32 | |
|
tak ako to spravit omg aby tie preklady boli pri sebe? nie v jednolivych suboroch...neskutocny bordel v tom je lebo je toho vela...a nieco sa prelozi hned nieco neskor a potom uz absolutne v tom prehlad nieje...a nemam preco to rozdelovat do priecinkov..admin mam od stranky osobitne...takze vsetko je dolezite...ako to inak spravit?..
Kód: $lang["slovo"] = array("sk"=>"Slovo", "en"=>"Word", "ua"=>"слово");
toto je best of ze vsetko spolu
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 14.06.2011 13:38 | |
|
best of? to je prehľadné, keď máš všetko pokope halabala a nevyzná sa v tom ani nik ?
ved si sprav
sk/subor.php
Kód: array( 'slovo' => 'Slovo', 'ine_slovo' => 'iné slovo', 'cervene_auto' => 'červené auto' ) potom súbor skopíruješ na subor.php, preložíš čo potrebuješ a ostatné ti zostane slovensky, môžeš sa k tomu vrátiť neskôr en/subor.php Kód: array( 'slovo' => 'word', 'ine_slovo' => 'iné slovo', # 'cervene_auto' => 'red car' )
popripadne si za nepreložené frázy daj mriežku a budeš aj bez študovania vedieť, čo nie je preložené (editor ti mriežku farebne odlíši od zvyšku)
_________________ Sorry za prelkepy |
|
Registrovaný: 28.02.09 Prihlásený: 19.02.18 Príspevky: 241 Témy: 56 | Napísal autor témy DeeJay3: 14.06.2011 15:00 | |
|
lenze to neprekladam ja....chces povedat ze neje prehladnejsie ked to mas pri sebe ?...a vidis presne v poli ktore slovo je ako prelozene...podla mna to prehladnejsie je..ja to mam podobne spravene ako vy..nemam to rozdelene..ale chcel som to mat pokope lebo hladat jedno slovo v jednom subore potom v druhom...potom v tretom..stvrtom...piatom a opravit ked je nieco zle...tak ma ide drbnut...a tak si najdes riadok a hned tam mas vsetko
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 14.06.2011 15:12 | |
|
nemas editor, kde mozes mat viac suborov otvorenych v taboch?
ved preto subor kopiruj ako som ti pisal, hladas jedno slovo, vidis ze v SK subore je na riadku 27, tak poreskocis na EN subor, hned vies ze mas pozret na riadok 27
urcite je to hentak prehladnejsie (ale zase sto ludi - sto chuti) a navyse nebudes zbytocne loadovat nepotrebne data. ak robis maly staticky webik, budes to cachovat a pod, tak ta to nemusi trapit. ale pri vacsom projekte to bude naskodu
_________________ Sorry za prelkepy |
|
Registrovaný: 28.02.09 Prihlásený: 19.02.18 Príspevky: 241 Témy: 56 | Napísal autor témy DeeJay3: 14.06.2011 16:41 | |
|
tak okey ...maly webik to neni ..jasne ze mam netbeans pouzivam...tak to necham takto..aj ked nerad...ale predsa len neskor tam ma byt velka navstevnost a nemozem si dovolit stracat cas na loadovani stranky na tomto...a dikes // pridané po 1 hodine 21 minútach od posledného príspevkueste by ma zaujimalo...ako si znacite niektore veci napriklad potrebujem mat v prekladoch
$lang['od']='Od';
$lang['od']='od';
aj jedno aj druhe...ako si to oznacujete vy?..vsimni velke pismeno
'od_1'
'od_2' ???
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 14.06.2011 16:47 | |
|
kapitalizaciu riesim "inline", funkciami.
ty volas napr
Kód: language('od'); #vrati "od" tak zavolas Kód: ucwords(language('od')); #vrati "Od"
podobny priklad si mohol vidiet, ked som napisal priklad suboru "blog", kde vkladam hodnotu do frazy. to preto, aby som nemusel rozdelovat jednu frazu na viac.
_________________ Sorry za prelkepy |
|
Registrovaný: 20.10.08 Prihlásený: 21.06.22 Príspevky: 2602 Témy: 31 Bydlisko: Bratislava |
dam malym.. a potom ak potrebujem velkym, ta niekde v kode
Kód: lcfirst($this->lang->line('od'));
alebo naopak dam prve velke a potom ked treba tak zmenim cez ucfirst() na male...
//emer skor
_________________ Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB |
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 14.06.2011 16:49 | |
|
tommyhot, pomylil si si lcfirst s ucfirst, je to presne naopak ako pises...
btw, lepsie pouzit ucfirst ako to co som pisal ja "ucwords", ak sa vo fraze nachadza viac slov
_________________ Sorry za prelkepy |
|
Registrovaný: 28.02.09 Prihlásený: 19.02.18 Príspevky: 241 Témy: 56 | Napísal autor témy DeeJay3: 14.06.2011 16:50 | |
|
to aby som nerozdeloval riesim rovnako...lenze funguju tie funkcie na pismena s diakritikou?...alebo na azbuku?...idem to skusit ale zda sa mi ze som s tym uz problem mal tak nvm teraz
|
|
Registrovaný: 20.10.08 Prihlásený: 21.06.22 Príspevky: 2602 Témy: 31 Bydlisko: Bratislava |
emer píše: tommyhot, pomylil si si lcfirst s ucfirst, je to presne naopak ako pises...
btw, lepsie pouzit ucfirst ako to co som pisal ja "ucwords", ak sa vo fraze nachadza viac slov
ano ano mas pravdu, napisal som to opacne...
_________________ Desktop: iMac 21" CPU: i5 2.7GHz RAM: 4 GB DDR3 1333MHz GPU: AMD Radeon HD 6770M 512MB RAM HDD: 1TB 7200 rpm OS: Mac OS X Lion Desktop: CPU: AMD Phenom II x4 BE 955 3.2@3.6GHz 1.35@1.30V CPU Cooler: Gelid Tranquillo rev.2 MB: Gigabyte 880GM-UD2H RAM: 2x2 GB Kingston 1333MHz GPU: MSI HD 6850 Cyclone 1GB PSU: Seasonic S12II-620 620W HDD: Seagate Barracuda 7200.12 1TB Case: CoolerMaster Elite 333 LCD: 22" LG flatron W2261VP Keyboard: Microsoft Comfort Curve 2000 Mouse: Microsoft Wireless Mobile Mouse 4000 OS: Windows 8 Notebook: Macbook Pro 13" CPU: i5 2.4GHz RAM: 4 GB DDR3 1333MHz GPU: Intel HD Graphics 3000 384MB RAM HDD: 500GB 5400 rpm OS: Mac OS X Lion Tablet: iPad 2 64GB 3G Phone: HTC Desire S Phone: iPhone 8GB |
|
Registrovaný: 28.02.09 Prihlásený: 19.02.18 Príspevky: 241 Témy: 56 | Napísal autor témy DeeJay3: 17.06.2011 15:40 | |
|
no teraz som prisiel na to ked som chcel pouzit lcfirst ze taku fciu nepozna...ucfirst je pre 4,5 php....lcfirst je pre 5.3 a viac...a na servery je 5.2.17..
|
|
Registrovaný: 26.12.06 Prihlásený: 16.11.19 Príspevky: 3971 Témy: 181 Bydlisko: Nitra / Bra... | Napísal emer: 17.06.2011 22:15 | |
|
je problem si taku funkciu vytvorit?
// pridané po 6 hodinách 12 minútach od posledného príspevku
vratil som sa dnes/vcera k CI, trosku pobadat. hend som riesil aj jazyky. vyriesil som si to tak, ze pouzivam klasicku strukturu a vstavanu Language kniznicu, s touto funkciou (namiesto original helperu)
Kód: function lang($key){
$args = is_array($key) ? $key : func_get_args();
$CI = &get_instance(); $S = $CI->lang->line($args[0]);
if(empty($S)) $S = '{lang_'.$args[0].'}'; //pri neexistujucej polozke vypise {lang_key}, ak chces prazdny string, zakomentuj riadok (alebo zmaz)
if(count($args) == 0) return NULL;
if(count($args) == 1) return $S;
unset($args[0]); return vsprintf($S, $args);
} pouzitie: http://codeigniter.com/user_guide/libra ... guage.html+ Kód: views/welcome.php:
<h2><?=lang('welcome', 'Mirec', 5)?></h2>
languages/slovak/general.php:
$lang['welcome'] = '%s, vitaj na stranke po %d dnoch';
vrati Kód: <h2>Mirec, vitaj na stranke po 5 dnoch</h2>
_________________ Sorry za prelkepy |
|
Registrovaný: 28.02.09 Prihlásený: 19.02.18 Príspevky: 241 Témy: 56 | Napísal autor témy DeeJay3: 11.10.2011 14:50 | |
|
caf este potrebujem poradit..ako ukladat do langov udaje napriklad:
Bratislavský kraj
Trnavský kraj
...
pouzivam tu tvoju funciu ktoru si postol vyssie..rozmyslal som ci tam nedam pole napriklad:
Kód: $lang['kraje'][1] = "Bratislavský kraj"; $lang['kraje'][2] = "Trnavský kraj"; ...
myslis ze to tak moze byt ?..lebo ja tie kraje potrebujem aj vypisat do selectu vo formulari.. Kód: foreach(lang('kraje') as $key=>$value){ echo '<option ... }
lenze potrebujem aj vypisat prvok z toho pola napriklad: Kód: lang('kraje')[1]
lenze takto sa to vypsiat neda tak ako upravit tu fciu aby skontroloval ci ten prvy parameter je pole a podla druheho parametru vypisal dany index pola: Kód: lang('kraje', 1) = vypíse Bratislavský kraj
// pridané po 12 minútach od posledného príspevkuhm nejak takto: Kód: function lang($key){
$args = is_array($key) ? $key : func_get_args(); $CI = &get_instance();
$string = $CI->lang->line($args[0]);
if(empty($string)) $string = '{lang_'.$args[0].'}'; if(count($args) == 0) return NULL; if(count($args) == 1) return $string;
unset($args[0]); if(is_array($string)){ if(array_key_exists($args[1], $string)) return $string[$args[1]]; else return NULL; }else{ return vsprintf($string, $args); }
}
myslis ze je zle taketo riesenie ?..(nemyslim upravu funkcie ale dalsie pole v lang subore)
|
|
Registrovaný: 09.09.07 Prihlásený: 07.11.16 Príspevky: 3114 Témy: 233 Bydlisko: Nové Zámky |
Potrebujes tie kraje mat rozne pre rozne jazyky, alebo nie?
osobny by som ale taketo udaje drzal v DB a nie napevno v textaku..
_________________ "It took a lot of work, but this latest Linux patch enables support for machines with 4096 CPUs, up from the old limit of 1024." "Do you have support for smooth full-screen flash video yet?" "No, but who uses that?"
- ak dlho neodpisujem do témy, zabudol som na ňu, takže ma upozornite SS, ak chcete moju odpoveď |
|
Registrovaný: 28.02.09 Prihlásený: 19.02.18 Príspevky: 241 Témy: 56 | Napísal autor témy DeeJay3: 12.10.2011 11:27 | |
|
no nebudem to vyuzivat iba pre kraje..napriklad ako veci ktore su pevne definovane ktore sa nebudu menit .. napriklad typ niecoho
$lang['typ'][1] = "jednoduchy";
$lang['typ'][2] = "zlozity";
a to sa uz prekladat bude...napriklad potrebujem do toho dat mesta slovenska
$lang['mesta'][1] = "Bratislava";
$lang['mesta'][2] = "Kosice";
niektore veci sa budu urcite prekladat
|
|
| Stránka: 1 z 1
| [ Príspevkov: 18 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|