Prevođenje sajta na nekoliko jezika

1

Prevođenje sajta na nekoliko jezika

offline
  • Pridružio: 08 Jan 2014
  • Poruke: 30

Pozdrav, pre svega izvinjavam se administrtaciji ovog foruma ako sam temu okacio na pogresno mesto i molim da se tema prebaci na pravo mesto stim da budem obavesten o linku gde se tema nalazi jer je jako veliki forumstog necu uspeti da se snadjem Smile
Imam jedan problem naime rec je o sajtu koji smo prijatelj i ja pisali u php -u i sad me zanima da li postoji neki nacin da ne prevodim citav sajt svaku skriptu itd na nekoliko jezika jer bi to bio preveliki posao .
Znam da ima google translate opcija za dodavanje na sajt opcije za prevod ali ni to nije resenje jer prevod nebi bio realan ,ja bih vise da uradim neki language box gde bi imale zastavice simbolicne za te zemlje npr: zastava srbije za srpski jezik,nemacke za nemacki,rumunije za rumunski ,bugarske za bugarski,italije za italijanski itd..
Znam da bih mozda mogao da odradim recimo folder en i da tu bude ceo sajt na engleskom jeziku ali opet ne znam kako ceo sajt da prevedem na sve jezike koje hocu nikako mi ne ide u glavu ,ne koristim nikakav cms poseban tipa joomla wp webspell itd itd vec custom odradjen ...
Pa mene zanimaju dve stvari i to:
1.Kako da to resim(da li ima mogucnost neka sa nekim programima ili slicno da se ceo sajt prevede na odredjenio jezik onda taj translate da sacuvam u folderu /en zatim kada bih u search baru kucao ime sata.com otvorio bi mi default language koji je na srb a zatim kada kliknem na englesku zastavicu da mi otvara naravno ime sajta.com/en/index.php)?
2.Da li ima jos neki nacin koji je mozda jednostavniji ili komplikovanijiosim da svaku rec ja sam prevodim,fora je u tome da samo stranic hocu da prevedem i njihov sadrzaj skripte necu jer nebi imalo svrhe )...



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

E moj prijatelju, ima načina ali ni je dan ti nije lak.

U svakom slučaju moj predlog je sledeći. Dali ti ili neko drugio koga angažuješ da ti to uradi treba da napravi jedan php fajl u kome se nalazi definicija za neku reč i da ta definicija ima svoj prevod. U celom CMS-u sve tvoje tekstvove od menija do svih mogućih statičkih sadržaja treba zameniti definicijama i njima dati vrednost. Na taj način preko cookie možeš da menjaš jezike u realnom vremenu samo zamenom jednog PHP fajla preko include. Tako ćeš imati german.php, serbian.php, english.php i u svakom se nalaze iste definicije sa prevodom.

PRIMER:
// unutar PHP fajla serbian.php define("_MENU_HOME", 'Početna'); define("_MENU_CONTACT", 'Kontakt'); define("_MENU_ABOUT", 'O nama'); // unutar PHP fajla english.php define("_MENU_HOME", 'Home'); define("_MENU_CONTACT", 'Contact'); define("_MENU_ABOUT", 'About'); // Radiš inkludovanje željenog jezika pre svih učitavanja komponenata i stranica include('serbian.php'); // unutar HTML-a <ul> <li><a href="#"> <?php echo _MENU_HOME; ?> </a></li> <li><a href="#"> <?php echo _MENU_CONTACT; ?> </a></li> <li><a href="#"> <?php echo _MENU_ABOUT; ?> </a></li> </ul>
Ako koristiš MySQL to imaš način da napraviš nova polja za naslove ili jedno polje koje ti je parametar jezika i za svaki jezik napraviš novi sadržaj a koristiš isti cookie da ti prepozna koji je jezik inkludovan i koji da povlači.

Ja na ovaj način radim sve moje CMS sisteme jer je najjednostavniji jedino što oduzima vreme kada ga gradiš ali posle ti pruža maksimalan komfor.

I da ne zaboravim, vrednost definicije može biti i HTML sa tekstom i CSS-om.

PRIMER:
define("_ERROR_MESSAGE", '<div class="error">Imate neku grešku...</div>');
define() se ponaša kao i običan string samo pogledaj na www.php.net sva uputstva kako se koristi jer ga možeš sačuvati čak i u bazu i kasnije pozvati. Moćna je stvar u svakom slučaju ali ga nemoj koristiti zadefinisanje baze podataka ili nekih bitnih stvari, on je samo za prelazne sadržaje da se lakše prelazi iz stranice u stranicu, ali može poslužiti i u svrhe zaštite PHP fajla od direktnog pristupa pomoću defined(). U svakom slučaju pogledaj manuals.



offline
  • Pridružio: 08 Jan 2014
  • Poruke: 30

Prijatelju ja sam nov takoreci tek usao u php,html,css,sql,perl itd znaci skroz pocetnik do sada sam samo dizajn radio pa sam se odmah bacio sa prijateljom koji je nesto delimicno bolji od mene u projekat server monitoring sajta sve smno sredili samo me ovo zeza naravno nisam shvatio skroz na skroz pa me muci opet isto potanje:
Jel svakako ako definisem prevod u gore prvom navedenom nacinu moram u svakom fajlu (index,contact,cslist,codlist,samplist i takodalje znaci u svaku stranicu koju korisnik moze videti) include jezik.php ? Evo primera sta sam mislio
kreiram svakako novi folder imenovan lang u njemu opet kreiram kopije citavih stranica skripti i tako dalje (ili mogu samo stranice koje su allow korisnicima to jest njih 10-ak kao sto je index,login itd) ?
I jos nesto ako radim na taj nacin ja moram znaci kompletne textove da prevedem ili samo reci koje su koristene u tim stranicama tipa "home-pocetna" ,mada mislim da bi mi lakse bilo da svaki delic stranice citave recenice i textove kopiram i na kraju samo da opalim ranslate imaj u vidu da dobro govorim 12 stranih jezika..

offline
  • Code Developer
  • Pridružio: 23 Okt 2011
  • Poruke: 163

Ma jok, sto bi radio da kopiras opet sve fajlove u lang folder. Namestis folder lang, i u njemu kreiras serbian.php i english.php i u njih postavis konstane kao sto ti je gore navedeno, u prethodnom postu, i onda te fajlove na osnovu izabranog jezika includujes.
Ja sam to uradio preko switch petlje. Verujem da je bolji nacin odredjivanja jezika preko cookie ali ja sam direktno u link upisivao jezik i na osnovu toga radio include.
Pokusaj jos jednom da razumes to sto ti je napisao, FoxVanis, jer odlicno resenje.
Pozdrav...

offline
  • Pridružio: 08 Jan 2014
  • Poruke: 30

Znaci samo reci da definisem ? Ali naravno sve jel ?
Da li je neko od vas dvojice voljan da mi malo bolje objasni ja sam racunao na odradim u sidebaru sa desne strane neki languagebox ,simbolicne ikonice za srbiju,englesku,nemacku,rumuniju,italiju spaniju i jos par zemalja onda ako on odabere lupam sad nemacku zastavicu onda da mu samo refreshuje page pritom da on bude na nemackom jeziku,znaci sve to znam osim da sam shvatio za jezike znaci ne moram ceo text, ali reci sve koje koristim na sajtu moram to bukvalno dodje kao vokabular ceo da moram da sredim i da pitam jos ovo da li moram kod svake reci da upisujem ovako:
define("_MENU_HOME", 'Početna'); define("_MENU_CONTACT", 'Kontakt'); define("_MENU_ABOUT", 'O nama');
znaci zanima me da li je ovaj deo bitan:
_MENU_

I da li taj deo _MENU_ moram upisivati kod svake reci ili samo kod reci koje sadrze navigaciju ?

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

olos ::Znaci samo reci da definisem ? Ali naravno sve jel ?
Da li je neko od vas dvojice voljan da mi malo bolje objasni ja sam racunao na odradim u sidebaru sa desne strane neki languagebox ,simbolicne ikonice za srbiju,englesku,nemacku,rumuniju,italiju spaniju i jos par zemalja onda ako on odabere lupam sad nemacku zastavicu onda da mu samo refreshuje page pritom da on bude na nemackom jeziku,znaci sve to znam osim da sam shvatio za jezike znaci ne moram ceo text, ali reci sve koje koristim na sajtu moram to bukvalno dodje kao vokabular ceo da moram da sredim i da pitam jos ovo da li moram kod svake reci da upisujem ovako:
define("_MENU_HOME", 'Početna'); define("_MENU_CONTACT", 'Kontakt'); define("_MENU_ABOUT", 'O nama');
znaci zanima me da li je ovaj deo bitan:
_MENU_

I da li taj deo _MENU_ moram upisivati kod svake reci ili samo kod reci koje sadrze navigaciju ?



Vidi, promenjive (definicije ili konstante) pišeš kako ti hoćeš. Vrednost je tvoj text. Ne trebaju ti drugi folderi već samo fajlovi sa prevodima kako sam ti objasnio predhodno.

Sa _MENU_ ti samo sebi odvajaš grupu kojoj ta promenjiva pripada, bar ja tako radim. Možeš definisati kako hoćeš.

Znači sve tekstove na sajtu, linkove, itd. stavi unutar definicija i radi prevode.

PRIMER:
define("_CONTENT_ABOUT_US", 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.');

Posle samo ubaciš _CONTENT_ABOUT_US negde na tvoju stranicu i pojavi ti se ceo tekst koji si definisao.

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1622
  • Gde živiš: Pancevo

Druze evo kako ja radim.

Napravi config.php

U config.php definisi jedan niza ili konstantu sa svim podesavanjim i koji ti je glavni jezik npr. kod mene je

 $config['language'] = 'en' //english

Napravi direktorijum sa jezicima npr english i u njemu uradi english.php

U tom fajlu npr dodas sledece :

// Notices $lang['error_email_missing'] = "You must submit an email address"; $lang['error_url_missing'] = "You must submit a URL"; $lang['error_username_missing'] = "You must submit a username"; // Menu items $lang['home'] = "Home"; $lang['aboutus'] = "About Us"; ...... etc

Na kraju napravis neku funkciju ili klasu za jezik koja ce ti ucitavati datu liniju u prevodu npr kao ovo.

 ] // example $this->lang->line('language_key'); // Real example $i = false; if ( $i != true ) {       return $this->lang->line('error_email_missing');  // <div> You must submit an email address </div> }

Samo sto se danas radi po mvc standardima i dodaje se uri segment u URL.
Npr:

www.example.com/sr/

Posle toga da bi preskocio SR uri segment koristis rutiranje pomocu front kontrolera koji na kraju kao rezultat preskace taj /sr segment i dobijas full clear dispach. To je sada malo dublja tematika, da te nebunim sa time. Ovo sto sam ti predlozio je mnogo slozenija prica za pocetnika.

Samo ti treba funkcija koja ce ti citati odredjeni kljuc niza iz datog fajla. Nesto tipa
lang('language line', 'element id')

Ziveli

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

_iKaC ideja ti nije loša ali je malko komplikovanije. Ti radiš sad sa klasama i asocijativnim nizovima a čovek sam kaže da PHP slabo poznaje. Ipak je bolje da radi sa define() jer je lakše i nemora se zezati sa stringovima i nizovima. Ovog puta bih ipak moj predlog rekao da je za njega korisniji jer je lakši i brži.

Izvini na upadu, ništa nije zlonamerno.

offline
  • C# and PHP Developer
  • Pridružio: 16 Feb 2011
  • Poruke: 1622
  • Gde živiš: Pancevo

Ma ok nije to nista sporno, necu da se mesam u vasu pricu ja sam samo dao predlog ne samo njemu. Ovde dolaze i korisnici koji nisu registrovani (citaoci).

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

_iKaC ::Ma ok nije to nista sporno, necu da se mesam u vasu pricu ja sam samo dao predlog ne samo njemu. Ovde dolaze i korisnici koji nisu registrovani (citaoci).
Ma jasno. Ideja ti je super to je još jedan način, čak i sigurniji po meni jer neće doći do brljanja ili sudaranja. Problem sa define je što ga možeš lako od spolja pozvati injection-om.

Ko je trenutno na forumu
 

Ukupno su 728 korisnika na forumu :: 37 registrovanih, 2 sakrivenih i 689 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 2967 - dana 31 Okt 2019 06:37

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: aca022, Alojz Hauptman, aramis s, Arhiv, baza, bojcistv, caesar, dimitrovskid, djboj, Djokislav, Fisherman, Gama, Groucho, ibssa, Kubovac, Marko Marković, mačković, mgaji21, nebojsag, Nennad, pedja63, pein, prekodrinski, Raptor12, repac, ruger357, sakota79, slonic_tonic, Snorks, Srna, ssekir75, SsssssNOVI, Toni, vlahale, vlvl, wizzardone, yufighter