Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

multilingual site
Vezi mesajul original
Du-te la pagina 1, 2  Următoare
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat
Subiectul anterior :: Subiectul următor  
Autor Mesaj
whiteadi



Data înscrierii: 04/Mar/2004
Mesaje: 26
Locație: Timisoara

Trimis: Mar Oct 05, 2004 3:41 pm    Titlul subiectului: multilingual site  

buna,

a facut careva site multilingual?

eu am mai facut in 2 variante insa nu in php si ma gandeam ca poate exista antecedente :)

cum am facut eu:

- cu language manager , un tool, bagam nishte variabile in php care inainte de a pune codul sus luam cu acest tool scripturile si el punea in x variante, cate limbi era setat, si facea x foldere cu codul in care inlocuia variabilele cu ce era pt limba x in niste fisiere excell

- cu baza de date dupa language id din sessiune, dura of course > mult

Regards,
whiteadi
Sus  
mihnea sim



Data înscrierii: 20/Aug/2004
Mesaje: 149
Locație: Alexandria

Trimis: Mar Oct 05, 2004 7:07 pm    Titlul subiectului:  

ca sa iti fie tie usor, ca programator, folosesti cate o baza de date pt fiecare limba.. baze de date identice ca structura
Sus  
beeuser



Data înscrierii: 20/Mai/2004
Mesaje: 389

Trimis: Mie Oct 06, 2004 2:41 am    Titlul subiectului:  

cum ii facut in oscommerce ii ok.

ai o tabela languages

languages_id language
1 en
2 ro


iar o alta tabela cu continutul.
Ex:
content_id content languages_id
1 bla blah 1
2 blah bas 2


si cand faci selectul, faci pe limba.
Sus  
apann



Data înscrierii: 17/Mai/2004
Mesaje: 93

Trimis: Mie Oct 06, 2004 9:12 am    Titlul subiectului:  

O alta idee eleganta este cu fisiere XML.
Faci ceva de genul director lang in care ai file RO.xml, EN.xml (and so on).
Iti mai trebe un mini XML parser (hint domIT)
Sus  
Troto



Data înscrierii: 29/Iun/2004
Mesaje: 249
Locație: Brasov

Trimis: Mie Oct 06, 2004 9:56 pm    Titlul subiectului:  

Eu pentru siteuri multilanguage foloses atat baza de date cat si fisiere php.

In baza de date bagi textele mari dupa o structura definita pt fiecare limba, iar la texte micutze le pui in fisiere cum e exemplul de la phpbb
Sus  
andreibrr



Data înscrierii: 02/Oct/2004
Mesaje: 120

Trimis: Joi Oct 07, 2004 1:04 pm    Titlul subiectului: exemplu  

solutie: fisiere php incarcate cu constantele ce le folosesti in situl tau.

uite un exemplu:
romana - ro.php
define("_CONSTANTA","valoare");
define("_CONSTANTA1","valoare1");

etc

bafta
Sus  
Troto



Data înscrierii: 29/Iun/2004
Mesaje: 249
Locație: Brasov

Trimis: Joi Oct 07, 2004 1:30 pm    Titlul subiectului:  

Si in fiecare fisier unde ai textele constantele/variabilele sa fie cu acelasi nume, si tu doar incarci fisierul specific limbii selectate
Sus  
smallAdmin



Data înscrierii: 21/Mai/2004
Mesaje: 117
Locație: Bucuresti

Trimis: Vin Oct 08, 2004 2:24 pm    Titlul subiectului:  

eu folosesc mai multe variante.

limba folosita o tin in general in sesiune si o iau din baza de date daca userul e logat pe site. daca nu uit, o pun si in cookie, ca sa fie disponibila la urmatoarea vizita. cert e ca pana la urma am $_SESSION['language'], in care tin limba vizitatorului.

textele "statice" le tin in fisiere: en.php, ro.php, fr.php, etc. unde am un vector $lang. ex:
an style="color: #000000"><?php $lang['welcome']='Welcome'; // in en.php $lang['welcome']='Bun venit'; // in ro.php 
si le includ cam asa
an style="color: #000000"><?php require_once('inc/'.$_SESSION['language'].'.php'); 

Continutul il tin in baza de date. Stirile de exemplu, stau intr-o tabela cu structura:
id,title_ro,content_ro,title_en,content_en,data,....

si selectul e lejer:
an style="color: #000000"><?php $sql="select id,title_".$_SESSION['language']." as title,content_".$_SESSION['language']." as content,data from ..."; 
si o sa am $row['title'] si $row['content'] cand fac mysql_fetch_array().

dupa parerea mea, e cel mai usor de folosit.
Sus  
Troto



Data înscrierii: 29/Iun/2004
Mesaje: 249
Locație: Brasov

Trimis: Sâm Oct 09, 2004 12:52 am    Titlul subiectului:  

nu asta amspus si eu ? :D

dar mie mi-a fost mai lene sa dau mai multe detalii :D
Sus  
taipan



Data înscrierii: 24/Sep/2004
Mesaje: 44

Trimis: Lun Oct 11, 2004 12:26 pm    Titlul subiectului:  

Citat: O alta idee eleganta este cu fisiere XML.
Faci ceva de genul director lang in care ai file RO.xml, EN.xml (and so on).
Iti mai trebe un mini XML parser (hint domIT)

Apann tu iti dai seama ca xml-ul este unul dintre cele mai lente structuri? Adica sa tii informatie si sa o parsezi in mod absolut inutil incarcand php-ul pana la naiba nu mi se pare cea mai optima solutie, oricum mult mai optima mi se pare solutia lui smallAdmin.

In mod normal dupa mintea mea nici smallAdmin nu are totalmente dreptate deoarece daca vreau sa adaug o limba trebuie sa dau alter pe tabele, la fel daca vreau sa scot o limba (aici scuzati formularea).

Normal in mintea mea structura trebuie sa arate asa

lang (
lang_id
lang_title
lang_status <== daca scot limba ( :lol: ) poate vreau totusi sa pastrez textele
)

pagetext(
page_id
page_name
page_lang
page_text
page_text_pos (pozitia textului in pagina)
page_text_active (daca textul e vizibil sau nu)
)
Sus  
kristache



Data înscrierii: 19/Feb/2004
Mesaje: 45
Locație: Iasi

Trimis: Lun Oct 11, 2004 4:41 pm    Titlul subiectului:  

in ciuda vitezei, ideea cu fisiere xml parsat (destul de usor de altfel), mi se pare foarte eleganta. desi, recunosc, nu am aplicat'o niciodata. pana acum in toate proiectele am pastrat limba in fisiere text, incarcate in clasa de generare a paginii respective

an style="color: #000000"><?php function loadLang() {     // execut si functia din clasa "mami" Page     // respectiv fisiere de limba pentru header, meniu, etc.     parent::loadLang();     // limba o pastrez in sesiune     require_once($this->directory.'/language/profile/'.$this->language['Name'].'.lang.php');     // concatenez intr'un array asignat apoi prin smarty     $this->_dataLang = array_merge($this->_dataLang, $lang_profile); } 

apoi in smarty folosesc ceva de genu $LANG.TheNeededKey
Sus  
apann



Data înscrierii: 17/Mai/2004
Mesaje: 93

Trimis: Lun Oct 11, 2004 4:49 pm    Titlul subiectului:  

Se zice ca ai avea probleme cu fisiere XML mai mari de 5-6 MB, in cazul in care ai asa de mult text, probabil o alta metoda ar fi mai buna. In php5 situatia s-a imbunatatit considerabil in cea ce priveste suportul ptr. XML si se pare ca parsarea fisierelor mai mari de 10 MB nu depaseste timpul pe care il foloseste de ex. perl ptr. a parsa acelasi fisier.
Anyway iti dai seama ca parsezi o singura data fila aia, apoi lista rezultata o tii intr-o variabila de sesiune sau globala (lista==array).
Mi-am dat si eu cu parerea :)

O sa caut linkul catre o pagina cu niste benchmarkuri la parsat file XML prin diferite metode.

// BTW, Pear::XML e intradevar foarte lenta si nu ti-o recomand, mai bine poti incerca domIT ca parser
Sus  
apann



Data înscrierii: 17/Mai/2004
Mesaje: 93

Trimis: Mar Oct 12, 2004 11:56 am    Titlul subiectului:  

Uite si un mic exemplu ca sa iti faci o idee cam cum am incerca eu sa fac ptr. un site:
an style="color: #000000"><?php <?xml version="1.0" encoding="utf-8" ?>  - <locale lang="ro"> - <header>   <project>Project Name</project>    <lang>Romanian</lang>    </header> - <message>   <id>Hello</id>    <string>Salut</string>    </message> - <message>   <id>%u: How are you?</id>    <string>%u: Ce mai faci?</string>    </message>   </locale> 
Sus  
taipan



Data înscrierii: 24/Sep/2004
Mesaje: 44

Trimis: Mar Oct 12, 2004 12:02 pm    Titlul subiectului:  

Cauta nu numai parsare dar cauta si scalabilitatea sa vezi cum se incarca php-ul sa zicem la 100 de conexiuni simultane sau la 500 de conexiuni.

A avea un fisier xml inseamna cel putzin a adauga unei pagini 40 kb iar fisierul ala il incarci in memorie ptr parsare.

Gandeste-te la aceste actiuni:

--- Metoda ta ---
1) Incarci ala in memorie (lucreaza PHP)
2) Parsezi fisierul (lucreaza PHP)
3) Arunci rezultatele pe ecran (lucreaza PHP)

--- Metoda lui smallAdmin ---
1) Selectezi textul dupa un id (lucreaza MySQL, PHP deserveste alte treburi)
2) Afisezi rezultatele (lucreaza php)

XML-ul nu este recomandat ca o metoda de stocare, el este mai degraba un limbaj de comunicare asa ca mai bine in opinia mea este sa folosesti ceva care a fost construit pentru stocare si aducere de informatii.

In caz ca folosesti si xml-ul insasi data layer-ul va arata ca naiba :evil:
Sus  
whiteadi



Data înscrierii: 04/Mar/2004
Mesaje: 26
Locație: Timisoara

Trimis: Joi Oct 14, 2004 3:46 pm    Titlul subiectului:  

mercy de raspunsuri, mie imi pare ca tot metaoda a 2-a ce am spus-o la inceput e cea mai buna din perspectiva timpului de lucru cat si a vitezei:

am un script in care bag sa zicem 3 propozitii, sau o propozitie insa care se imparte in 3 deoarece intervin elemente de design, de ex:

Welcome < b > Adrian < /b > to our site!

Atunci fac in cod trei variable de genu:

<%- welc -%> < b > <%- name -%> &< / b > <%- endwelc -%>

Si apoi am un fisier, XML,excell..., in care pentru acest script numit xxx.php am despartite de virgula :

welc,Welcome,Bine ai venit,...

Setez tool-ul ala (LM) pentru cate limbi is si cand vreau eu sau cand am modificat eu ceva in acel script sau in mai multe scot acest script in x variante cate x linbi is in x foldere. Le pun astea pe site shi in functzie de limba ce o am in sesiune merge utilizatorul pe, de fapt, site-ul respectiv din folderul respectiv. In mare cam asha.
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> PHP Avansat Du-te la pagina 1, 2  Următoare
Pagina 1 din 2


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community