IT NEWS PC REVUE PC FORUM FreeBSDInternet time: @145
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Hľadáte CRM softvér?

SunSoft.CRM • množstvo funkcií • možnosť individuálnych úprav • výhodná cena crm.sunsoft.sk

Sprostredkovávajte hypotéky

Začnite sprostredkovávať hypotéky s úspešným hypotekárnym centrom! www.SprostredkovanieUverov.sk

Čerstvý a voňavý domov?

Testovali sme Ambi Pur. Pozrite sa na prekvapivé výsledky experimentu! youtube.com/AmbiPur_SK

Bonus 50 € za prenos

čísla do O2 na ktorýkoľvek program s platbou na faktúru. V e-shope. www.o2.sk

Lacné ubytovanie pri Balatone

Ubytuj sa teraz až s 50% zľavou Akciové zľavy na viac ako 1000 ubytovaní szallasguru.sk

language v codeigniteri

Zaslať odpoveď
AutorSpráva
DeeJay3
Užívateľ
Užívateľ

Založený: 28.02.2009
Príspevky: 196

PríspevokZaslal: Ut 14.06.11 10:19Odpovedať s citátomNávrat hore

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?
Zobraziť informácie o autoroviOdoslať súkromnú správu
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: Ut 14.06.11 12:21Odpovedať s citátomNávrat hore

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

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
TommyHot
Užívateľ
Užívateľ

Založený: 20.10.2008
Príspevky: 2528
Bydlisko: Bratislava
Vek: 23

PríspevokZaslal: Ut 14.06.11 12:45Odpovedať s citátomNávrat hore

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: 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 7 x64 Ultimate
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 Notebook: Toshiba Satellite A210-19J CPU: AMD Turion 64 x2 2.0GHz RAM: 2 GB DDR2 667MHz GPU: ATI mobility radeon HD 2600 256MB RAM HDD: 200GB 5400 rpm Mouse: Microsoft Comfort Optical Mouse 3000 OS: Windows 7 x64 Ultimate
Phone: HTC Desire S Phone: iPhone 8GB
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
DeeJay3
Užívateľ
Užívateľ

Založený: 28.02.2009
Príspevky: 196

PríspevokZaslal: Ut 14.06.11 13:32Odpovedať s citátomNávrat hore

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
Zobraziť informácie o autoroviOdoslať súkromnú správu
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: Ut 14.06.11 13:38Odpovedať s citátomNávrat hore

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)

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
DeeJay3
Užívateľ
Užívateľ

Založený: 28.02.2009
Príspevky: 196

PríspevokZaslal: Ut 14.06.11 15:00Odpovedať s citátomNávrat hore

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
Zobraziť informácie o autoroviOdoslať súkromnú správu
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: Ut 14.06.11 15:12Odpovedať s citátomNávrat hore

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

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
DeeJay3
Užívateľ
Užívateľ

Založený: 28.02.2009
Príspevky: 196

PríspevokZaslal: Ut 14.06.11 16:41Odpovedať s citátomNávrat hore

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íspevku

este 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' ???
Zobraziť informácie o autoroviOdoslať súkromnú správu
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: Ut 14.06.11 16:47Odpovedať s citátomNávrat hore

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.

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
TommyHot
Užívateľ
Užívateľ

Založený: 20.10.2008
Príspevky: 2528
Bydlisko: Bratislava
Vek: 23

PríspevokZaslal: Ut 14.06.11 16:47Odpovedať s citátomNávrat hore

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: 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 7 x64 Ultimate
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 Notebook: Toshiba Satellite A210-19J CPU: AMD Turion 64 x2 2.0GHz RAM: 2 GB DDR2 667MHz GPU: ATI mobility radeon HD 2600 256MB RAM HDD: 200GB 5400 rpm Mouse: Microsoft Comfort Optical Mouse 3000 OS: Windows 7 x64 Ultimate
Phone: HTC Desire S Phone: iPhone 8GB
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: Ut 14.06.11 16:49Odpovedať s citátomNávrat hore

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

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
DeeJay3
Užívateľ
Užívateľ

Založený: 28.02.2009
Príspevky: 196

PríspevokZaslal: Ut 14.06.11 16:50Odpovedať s citátomNávrat hore

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
Zobraziť informácie o autoroviOdoslať súkromnú správu
TommyHot
Užívateľ
Užívateľ

Založený: 20.10.2008
Príspevky: 2528
Bydlisko: Bratislava
Vek: 23

PríspevokZaslal: Ut 14.06.11 16:59Odpovedať s citátomNávrat hore

emer napísal:
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: 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 7 x64 Ultimate
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 Notebook: Toshiba Satellite A210-19J CPU: AMD Turion 64 x2 2.0GHz RAM: 2 GB DDR2 667MHz GPU: ATI mobility radeon HD 2600 256MB RAM HDD: 200GB 5400 rpm Mouse: Microsoft Comfort Optical Mouse 3000 OS: Windows 7 x64 Ultimate
Phone: HTC Desire S Phone: iPhone 8GB
Zobraziť informácie o autoroviOdoslať súkromnú správuZobraziť autorove WWW stránky
DeeJay3
Užívateľ
Užívateľ

Založený: 28.02.2009
Príspevky: 196

PríspevokZaslal: Pi 17.06.11 15:40Odpovedať s citátomNávrat hore

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..
Zobraziť informácie o autoroviOdoslať súkromnú správu
emer
Užívateľ
Užívateľ

Založený: 26.12.2006
Príspevky: 3683
Bydlisko: Nitra
Vek: 18

PríspevokZaslal: Pi 17.06.11 22:15Odpovedať s citátomNávrat hore

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/libraries/language.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>

_________________
Pocity popi*i, keď víš že všetko hrá jak má, vychádza to všetko pekne, tak jak má, hovorim si ná ne, musíš vedeť plánovať
Zobraziť informácie o autoroviOdoslať súkromnú správuICQZobraziť autorove WWW stránky
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
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.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF

SEO - optimalizácia pre vyhľadávače

Freebsd