više jezika (array?)

Pozdrav
nedavno sam krenuo u izradu jedne stranice koja bi trebala biti višejezična,sve skupa 7 jezika.
Pošto sam početnik u php programiranju tražim pomoć.
Sam sam osmislio jedan način dohvaćanja riječi iz arraya te pomoću cookija koji pamti odabrani jezik neko određeno vrijeme.
Skripta funkcionira za sada ali me zanima dali je to uopće ispravan način za izmjenu jezika te kada se Array napuni sa recimo 500 ili 1000 riječi hoće li stranica štekat odnosno hoće li server imat previše posla ako recimo na stranici bude 100 tinjak i više ljudi.
Hvala na pomoći
Pozdrav svima na forumu

slijedi kod :

Moj savjet je da prvo dobiješ te silne ljude, a onda razmišljaš o ovome (ili daš nekome ko radi to). :wink:

cookie je na strani klijenta te nije opterečenje za server, 500-1000 riječi nije puno, sve je to dosta sitno, koncentriraj se da upiti prema bazi budu što optimiziraniji…

neznan bas, to sa kukijima mi se ne sviđa radi trazilica.

ja bi radije napravija ovako nesto…

jednu funkciju koja bi vracala trenutni jezik, i jedan niz u kojem su svi jezici…

Kad kažeš za cookie da ti se ne sviđa zbog tražilica jer misliš na to da će one vidjet samo defaltni jezik odnosno samo HR da neće moć prepoznat druge ?
Stranice neće bit statične bit će tu dosta podataka koji se izmjenjuju na neke od odabira ili postavljenih uvjeta korisnika, hoće li tvoj kod pamtiti odabrani jezik pri svakom osvježavanju?
Jer bi bilo dobro napravit mozda za tih 7 jezika odvojene php fileove pa svaki includat ovisno o odabranom jeziku?
Hvala

[quote=“munge83”]Kad kažeš za cookie da ti se ne sviđa zbog tražilica jer misliš na to da će one vidjet samo defaltni jezik odnosno samo HR da neće moć prepoznat druge ?
[/quote]

da

set_lang() radi tako da gleda jeli postavljen parametar lang, ako nije vraca default (hr)
ako je postavljen, provjerava da li je jezik u nizu(ovo bas nije tocno, al dobro) i na osnovu toga vraca jezik.

sta se tice linkova, u svaki bi tribalo staviti parametar lang

link

kako ti je lakse

Hvala ti na pomoći

Imam još jedno pitanje

Jer bi se mogao skombinirat tvoj kod sa cookijima , tako da i pamti jezik i zadovolji tražilice , nešto sam pokušao i čak i radi ali sa zaostatkom od jednog refreša ili klika, ne znam gdje griješim

moj ti je savjet da se ostaviš kukija

X
bolje da ide preko GET, ovak će se google totalno izblesirat, isti link za drugi cookie drugi sadržaj, neće se to baš jednostavno moć spremiti

GET i mod_rewrite je rješenje. Zaboravi cookiese za “razvlačenje” varijable kroz stranicu.

Ja bih napravio to ovako:
1.) prilikom ulaska na stranicu provjerio bih postoji li cookie kod posjetitelja
2.) ako postoji, uzeo bih vrijednost cookie-a i spremio ga u GET varijablu koju bih dalje koristio za detekciju jezika
2a) Eventualno (prije nego posjetitelj odabere jezik), možeš pokušati pomoću par metoda “otkriti” kojim se jezikom posjetioc služi iz headera njegovog upita (
http://www.webmasterworld.com/webmaster/3506580.htm
) ili preko IP geolociranja zadati “početni” jezik (


)
3.) Ako je korisnik odabrao sam neki jezik, spremio bih cookie (u slučaju da se vrati na stranice) ali bih i dalje koristio GET varijablu

Array od 1000 polja ti neće raditi probleme na serveru niti ako ćeš imati 1000 posjetitelja iste sekunde.

da, bas to.

Svaki jezik spremi u zasebnu datoteku.

npr.
en_EN.php - engleski
hr_HR.php- Hrvatski
de_DE.php - Njemački

u tim datotekama imaš ovakav array:
en_EN.php

de_DE.php

hr_HR.php

Za određivanje jezika koristi get varijablu koju pospremiš u session. Pa provjerom session varijable includaš potrebnu datoteku.

I kasnije sve to koristiš na jednostavan način:

[HTML]

<?php echo $lang['dobrodosli']; ?>

[/HTML]

Na ovaj način kasnije možeš dodavati jezika koiko ti srce hoće, A nećeš opterečivati server parsanjem jednog arraya u kojem je smješteno 4,5 drugih, a koji imaju opet ko zna koliko polja.

Ovo ti je posebno zanimljivo ako radiš prema MVC načelima gdje ti je index.php datoteka ulazna stranica i gdje se sve odvija preko nje. Ako ćeš to koristiti na “običnoj stranici” spremiš to kao funkciju u jednu datoteku i tu datoteku includaš na početku svake druge datoteke gdje ti je potrebna ta funkcija.

[color=“Red”]Napomena: Ovo je demonstrativni kod i valjalo bi primejniti još neke sigurnosne provjere prilikom uzimanja get varijable i includanja datoteke.[/color]

Nedavno sam pisao jedan tutorial o tome i radi na sličan način kao CreatifCode samo što ja koristim bazu i objekte.

Ako te zanima pročitaj si
http://php4every1.com/tutorials/multi-language-site/
(na engleskom je ali objasnim šta te zanima).

[quote=“zlikavac32”]Nedavno sam pisao jedan tutorial o tome i radi na sličan način kao CreatifCode samo što ja koristim bazu i objekte.

Ako te zanima pročitaj si
http://php4every1.com/tutorials/multi-language-site/
(na engleskom je ali objasnim šta te zanima).[/quote]

Ok pogubio sam se negdje na pola “How it will work?”.
Nije loša ideja ali mislim da si je dosta zakomplicirao.
Osim toga tu ima i dosta konektanja i upita na bazu koji direktno utječu na brzinu izvršavanja, a i na potrošnju bandwidtha. Osim toga razbio si sve na tri klase, a sve je moglo biti složeno u jednoj klasi.

Ne da mi se sad sve pisat ali mislim da bi to bilo dovoljno strpat u jednu klasu s 5-6 funkcija.

I ja sam složio višejezičnost preko baze, a ne preko datoteka. Prednosti su jer je lakše dodavati nove jezike, lakše mi je administrirati, izmjenivati kasnije postojeće riječi, itd. Nema “kopanja” po file-u u potrazi za željenom riječi.
Što se perfomansi tiče, radi savršeno i brzo, ništa vidljivo sporije nego da je isto u zasebnoj datoteci (kao što je to nekakvo pravilo u postojećim gotovim skriptama).
Ima više posla prilikom kodiranja (izrada sučelja za dodavanje/izmjenu/brisanje pojmova) ali se na duge staze isplati.
I naravno, sve u “kompletu” sa sessionom, url_rewriteom i cookiesima.

[quote=“CreatifCode”]Ok pogubio sam se negdje na pola “How it will work?”.
Nije loša ideja ali mislim da si je dosta zakomplicirao.
Osim toga tu ima i dosta konektanja i upita na bazu koji direktno utječu na brzinu izvršavanja, a i na potrošnju bandwidtha. Osim toga razbio si sve na tri klase, a sve je moglo biti složeno u jednoj klasi.

Ne da mi se sad sve pisat ali mislim da bi to bilo dovoljno strpat u jednu klasu s 5-6 funkcija.[/quote]

Možeš sve strpat u jednu klasu sa 5-6 funkcija ali na ovaj način je lakše proširit. Primjer je uzet iz mog frameworka koji sam radio za jednog klijenta i poanta je bila da može biti više načina spremanja (u bazu, xml, običnu datoteku) pa je zato napravljeno u više dijelova.

Inače koristim ovu klasu samo sa puno više opcija i sličnim upitima. Nemam nikakvih problema sa performansama.

Ovaj tutorial je onak i ovak namjenjen ljudima da dobiju neku generalnu ideju, ne da im sve napišem. Ovak imaju neki početak a kasnije neka prošire i dodaju opcije. Preurede neku logiku i slično.

[quote=“dmitrecic”]I ja sam složio višejezičnost preko baze, a ne preko datoteka. Prednosti su jer je lakše dodavati nove jezike, lakše mi je administrirati, izmjenivati kasnije postojeće riječi, itd. Nema “kopanja” po file-u u potrazi za željenom riječi.
Što se perfomansi tiče, radi savršeno i brzo, ništa vidljivo sporije nego da je isto u zasebnoj datoteci (kao što je to nekakvo pravilo u postojećim gotovim skriptama).
Ima više posla prilikom kodiranja (izrada sučelja za dodavanje/izmjenu/brisanje pojmova) ali se na duge staze isplati.
I naravno, sve u “kompletu” sa sessionom, url_rewriteom i cookiesima.[/quote]

Ok, moguće, pogotovo ako koristiš i caching itd. Kao što rekoh nije loša ideja i sigurno se da izrealizirati da to bude tip top.

U biti u komentiranom primejru mi se nije svidjelo petljanje s puno klasa kad je bilo sve moguće strpati u jednu. Baš ću se pozabaviti malo time da vidim kako bi se to dalo napraviit.

Mislim da bi ti bilo dobro da pogledas poznate PHP CMSove i da prema njima vidis kako su rijesili problem multijezicnosti i spremanja u bazu podataka. Ne treba izmisljat kotac kada vec postoji :slight_smile:

Većina CMSova (gotovo svi) imaju posebne language.php datoteke. Po meni, “otkrivanjem kotača” vježbaš mozak, tehniku, a možda ponešto novo možeš i pružiti zajednici :wink:

[quote=“CreatifCode”]

I kasnije sve to koristiš na jednostavan način:

[HTML]

<?php echo $lang['dobrodosli']; ?>

[/HTML]

Na ovaj način kasnije možeš dodavati jezika koiko ti srce hoće, A nećeš opterečivati server parsanjem jednog arraya u kojem je smješteno 4,5 drugih, a koji imaju opet ko zna koliko polja.

Ovo ti je posebno zanimljivo ako radiš prema MVC načelima gdje ti je index.php datoteka ulazna stranica i gdje se sve odvija preko nje. Ako ćeš to koristiti na “običnoj stranici” spremiš to kao funkciju u jednu datoteku i tu datoteku includaš na početku svake druge datoteke gdje ti je potrebna ta funkcija.

[color=“Red”]Napomena: Ovo je demonstrativni kod i valjalo bi primejniti još neke sigurnosne provjere prilikom uzimanja get varijable i includanja datoteke.[/color][/quote]

Hvala ti na ovome!
Odlučio sam iskombinirati tvoj i kolačiće ali tako da ne izvlačim variablu jezika iz kolačića svaki puta nego samo prvi puta. dok ne postoji $_SESSION ili $_GET . Ti imaš malu grešku u kodu jer ne može proći iz if(!isset($_SESSION[‘lang’]) i doci do GET ako je vec postavljen SESSION.
Ja sam to napravio ovako:

Naravno planiram uz ovo koristiti i .htaccess te me nešto mući u vezi linkova. Ako netko promjeni jezik na recimo EN njemu će u stranici stajati stranica.com/index.php?lang=en_EN . Kako taj link prosljeđivati na sve poveznice. Znam da jezik zapravo stoji u SESSION-u i da to nije potrebno ali dali je to ispravan način zbog pretraživača i njihovih robota koji pregledavaju linkove na web stranici.


Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Webmaster.Ninja