multilingual site

PEAR, Smarty, ADOdb, OOP, PHP 5, XML, UML, Şabloane de proiectare, PHP-GTK.

Moderatori: coditza, Emil, Moderatori

whiteadi
PHPRomania Supporter
Mesaje: 26
Membru din: Joi Mar 04, 2004 12:25 pm
Localitate: Timisoara
Contact:

multilingual site

Mesajde whiteadi » Mar Oct 05, 2004 4:41 pm

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



mihnea sim
Average Member
Mesaje: 149
Membru din: Vin Aug 20, 2004 9:15 pm
Localitate: Alexandria
Contact:

Mesajde mihnea sim » Mar Oct 05, 2004 8:07 pm

ca sa iti fie tie usor, ca programator, folosesti cate o baza de date pt fiecare limba.. baze de date identice ca structura
"o istorie aberanta si injusta copleseste fiinta si o arunca afara din lumea ei"

beeuser
Senior Member
Mesaje: 390
Membru din: Joi Mai 20, 2004 10:32 am
Contact:

Mesajde beeuser » Mie Oct 06, 2004 3:41 am


apann
Average Member
Mesaje: 93
Membru din: Lun Mai 17, 2004 1:47 pm

Mesajde apann » Mie Oct 06, 2004 10:12 am


Troto
PHPRomania Coder Professional
Mesaje: 249
Membru din: Mar Iun 29, 2004 2:11 am
Localitate: Brasov

Mesajde Troto » Mie Oct 06, 2004 10:56 pm

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

andreibrr
Average Member
Mesaje: 120
Membru din: Sâm Oct 02, 2004 6:22 pm
Contact:

exemplu

Mesajde andreibrr » Joi Oct 07, 2004 2:04 pm

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

Troto
PHPRomania Coder Professional
Mesaje: 249
Membru din: Mar Iun 29, 2004 2:11 am
Localitate: Brasov

Mesajde Troto » Joi Oct 07, 2004 2:30 pm

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

Avatar utilizator
smallAdmin
Average Member
Mesaje: 117
Membru din: Vin Mai 21, 2004 11:20 am
Localitate: Bucuresti
Contact:

Mesajde smallAdmin » Vin Oct 08, 2004 3:24 pm

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:
[php]$lang['welcome']='Welcome'; // in en.php
$lang['welcome']='Bun venit'; // in ro.php[/php]
si le includ cam asa
[php]
require_once('inc/'.$_SESSION['language'].'.php');
[/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:
[php] $sql="select id,title_".$_SESSION['language']." as title,content_".$_SESSION['language']." as content,data from ...";[/php]
si o sa am $row['title'] si $row['content'] cand fac mysql_fetch_array().

dupa parerea mea, e cel mai usor de folosit.
NEXT !
--
Aurelian Scarlat
http://aurelian.scarlat.ro

Troto
PHPRomania Coder Professional
Mesaje: 249
Membru din: Mar Iun 29, 2004 2:11 am
Localitate: Brasov

Mesajde Troto » Sâm Oct 09, 2004 1:52 am

nu asta amspus si eu ? :D

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

taipan
Junior Member
Mesaje: 44
Membru din: Vin Sep 24, 2004 3:47 pm

Mesajde taipan » Lun Oct 11, 2004 1:26 pm

Orice problema se rezolva cu o grenada.

kristache
Junior Member
Mesaje: 45
Membru din: Joi Feb 19, 2004 8:21 pm
Localitate: Iasi
Contact:

Mesajde kristache » Lun Oct 11, 2004 5:41 pm

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

[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);
}

[/php]

apoi in smarty folosesc ceva de genu $LANG.TheNeededKey
kristache. over.

apann
Average Member
Mesaje: 93
Membru din: Lun Mai 17, 2004 1:47 pm

Mesajde apann » Lun Oct 11, 2004 5:49 pm


apann
Average Member
Mesaje: 93
Membru din: Lun Mai 17, 2004 1:47 pm

Mesajde apann » Mar Oct 12, 2004 12:56 pm

Uite si un mic exemplu ca sa iti faci o idee cam cum am incerca eu sa fac ptr. un site:
[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>
[/php]

taipan
Junior Member
Mesaje: 44
Membru din: Vin Sep 24, 2004 3:47 pm

Mesajde taipan » Mar Oct 12, 2004 1:02 pm

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:
Orice problema se rezolva cu o grenada.

whiteadi
PHPRomania Supporter
Mesaje: 26
Membru din: Joi Mar 04, 2004 12:25 pm
Localitate: Timisoara
Contact:

Mesajde whiteadi » Joi Oct 14, 2004 4:46 pm

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.


Înapoi la “PHP Avansat”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 6 vizitatori