[ alfa-pro @ 22.02.2012. 14:00 ] @
Drustvo treba mi vas predlog u vezi sajta na dva jezika.
Radio sam pre jedno godinu dana jednom kinoloskom drustvu sajt koji je na Srpskom jeziku. Pre neki dan su me kontaktirali i zele da bude na vise jezika ako je moguce. Kada korisnik udje na sajt www.example.com da mu izbaci da izabere koji jezik hoce.
Nije to problem da ja napravim nego nije mi jasno koji postupak je najbolji za ovo.

Sajt je postavljen na mom CMS-u koji je zasnovan u Codeigniter Frameworku.

On zeli da su mu stranice na eng i na sr.

U mojoj bazi je struktura sledeca:
Imam tabelu *page koja nosi samo id, page_name, parent_page i jos neke sitne parametre,
i imam odvojenu tabelu u kojoj je content (id, page_id, body).

Za prikaz rezultata koristim JOIN za spajanje vise tabela.

Ok to je vama jasno.

Kako ja sada da odradim da tu bude i eng? Da dodajem jos jednu tabelu i pri ulazu na sajt kada on izabere jezik ja prikazujem izabrani.

ja ne znam ja sam ovde sada ispisao svasta da ni ja ne znam dal razumem. Ako je neko razumeo neka mi da predlog za najednostavnije resenje ovoga. Da nemoram da pravim multy app

[ Predrag Supurovic @ 22.02.2012. 15:03 ] @
tabela page:

id,
parent_page,
...



tabela page_contents:

id,
lang_id,
title,
body,
...


Iliti: gde god imas neki tekst koji se prikazuje korisniku, taj tekst mora da se indeksira preko lang_id



[ alfa-pro @ 22.02.2012. 16:16 ] @
Ok to kapiram nego reci mi kako da znam kada neko dodje na sajt i izabere eng kako da znam koji je jezik izabrao pera a koji mica itd..

Da li ja to preko sessije nekako mogu ili da koristim cookies ili da grabim IP

Code:

$lang = 'eng';

if($_SESSION['lang'] == 'eng'){
      //ako je sesija eng ucitavam eng sadrzaj iz baze

      $this->load->{model}->{eng_language};
      //... DB Query SELECT * language

}else{
      //ako nije onda po defaultu je Srpski
      $this->load->{model}->{sr_language};
}




A u template gde renderujem $body samo proverim

Code:

$template['body'] : 'eng' ? 'srb';


Jel ovakav postupak ili nesto drugacije?

[ Predrag Supurovic @ 22.02.2012. 16:27 ] @
Link ka svakojs trani treba da sadrzi i oznakujezka da bi korsinik mogao da sacuva link sa oznakom jeika. Ako oznake jezika nema u linku onda treba korsititi podrazumevani jezik.

Kolacic mozes upotrebiti samo za toliko da kada korsinik sledeci put dodje na sajt, da mu se prikaz jezik koji je poslednji put koristio, alito niej neophodno. Licno, vise volim da me sajt ne maltertira nego da me pusti da sam biram jezik.

[ alfa-pro @ 22.02.2012. 16:47 ] @
znaci ja moram da imam u url-u oznaku za jezik/

www.example.com/index.php/en/page
www.example.com/index.php/sr/page

//route example: http://www.example.com/en/controller => method => $param

Koliko razumem onda moram da imam i 2 kontrolera (cntrollers)

1. English Controller
2. Serbian Controller

Kada neko izabere Engleski Jezik pozivam English COntroller > postavljam cookies da bi zapamtio stalno koji je jezik u pitanju > kada je kontroler izabran ispisujem iz baze samo engleski sadrzaj.

Ajde probacu nesto mada mi sve nesto konfuzno u glavi ovo ali napravicu nesto..

[ kelja @ 23.02.2012. 09:21 ] @
Pa i ne moras... jezik moze da bude parametar (jedan od parametara) funkcija/metoda u kontroleru na osnovu kog prikazujes sadrzaj.
[ vodich @ 27.02.2012. 10:33 ] @
Ja obicno stavim u controller
Code:

if($this->session->userdata('lang')=='en'){
        $this->load->view('engleski_view'); 
        }else{
        $this->load->view('srpski');
        }


A link za promenu jezika pozove funkciju kojoj prosledim preko url-a jezik
Code:

function lang(){
        $lang=array("lang"=>$this->uri->segment(3));
        $this->session->set_userdata($lang);
        redirect(base_url());
        }

Jedino sto kad korisnik klikne na back ostace mu isti jezik ucitan