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