 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
danielsen
Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca
|
| Trimis: Mar Aug 12, 2008 2:31 am Titlul subiectului: citire fisiere din dir [rezolvat] |
|
|
Am o functie pt schimbare limba pe site. Arata cam asa:
Cod: // limba implicita
if (!isset($_SESSION['lang'])) {
$_SESSION['lang'] = 'ro';
}
if (isset($_GET['lang'])) {
$_SESSION['lang'] = $_GET['lang'];
}
// functia text()
function text($nr) {
switch ($_SESSION['lang']) {
case 'ro':
$txt[0] = 'Pagină încărcată în %.3f secunde.';
$txt[1] = 'căutare...';
$txt[2] = 'utilizator';
...
break;
case 'en':
$txt[0] = 'Page loaded in %.3f sec.';
$txt[1] = 'search...';
$txt[2] = 'user';
...
break;
}
}
// switch-ul asta vreau sa-l fac altfel;
// sa fie o functie care sa citeasca fiecare fisier de limba dintr-un director
// (in cazul asta, case-urile de mai sus)
function text($nr) {
$director = opendir('./languages');
while (false !== ($fisier_limba = readdir($director))):
if (strpos($fisier_limba, '.php', 1)):
include 'languages/'.$fisier_limba;
endif;
endwhile;
$_SESSION['lang'] = $fisier_limba;
return $txt[$nr];
}
Am doua fisiere in directorul /language : ro.php si en.php
Daca dau link cu index.php?lang=en, e tot cu informatia pt ro; nu se schimba informatia, imi da cineva o idee?
Daca mai adaug un fisier de.php si daca dau un link cu index.php?lang=de sa se schimbe pe limba aia. |
|
| Sus |
|
dechim
Data înscrierii: 10/Mai/2005
Mesaje: 630
Locație: Drobeta Turnu Severin
|
| Trimis: Mar Aug 12, 2008 3:32 am Titlul subiectului: |
|
|
Tu programezi in Fox ? Ce-i cu "endif", "endwhile" ?
Vezi daca te ajuta asta :
Cod:
function text()
{
$dir = './languages/';
$file = glob($dir.$_SESSION['lang'].'.php');
if (count($file)==1) include $file[0];
if (isset($txt)) return $txt;
return array();
}
|
|
| Sus |
|
griffin
Data înscrierii: 07/Dec/2006
Mesaje: 95
|
| Trimis: Mar Aug 12, 2008 8:32 am Titlul subiectului: |
|
|
Nu programeaza in Fox, e doar sintaxa alternativa( Alternative syntax for control structures ) a PHP-ului pentru structurile de control.
http://phpbuilder.com/manual/en/control-structures.while.php
Oricum nu prea e ok sa scrie asa, dar daca ii convine asa......Eu folosesc structura alternativa in pagini in care e mult html ca arata mai ok codul. |
|
| Sus |
|
danielsen
Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca
|
| Trimis: Mar Aug 12, 2008 11:43 am Titlul subiectului: |
|
|
In loc de textele corespondente pt fiecare limba, imi returneaza Array, intr-adevar include fisierele cum trebuie, dar nu si continutul, si de fapt e vina mea intr-un fel, ca n-am zis toata povestea, ce am facut si ce vreau sa fac. Cu endif si endwhile, n-are a face cu programarea in Fox, puteam foarte bine sa pun cu acolade, era un moft de-al meu doar.
Am incercat sa fac o clasa pe care o sa o dezvolt mai incolo. Arata asa:
Cod: class Limba {
function text($nr) {
switch ($_SESSION['lang']) {
case 'ro':
include 'lang/ro.php';
break;
case 'en':
include 'lang/en.php';
break;
}
return $txt[$nr];
}
}
Un fisier ro.php sau en.php arata cam asa:
Cod: <?php
$txt[0] = 'nume/prenume:';
$txt[1] = 'adresa e-mail:';
$txt[2] = 'mesajul dvs:';
$txt[3] = 'trimite';
?>
si in context unde avem meniuri sau alte chestii apelam:
$limba = new Lang;
bla bla bla '. $limba->text(0) .' bla bla bla...
bla bla bla '. $limba->text(1) .' bla bla bla...
si asa mai departe.
Ziceam ca ar fi fost mai bine ca in loc de switch-ul ala, sa fie o functie care recunoasca si sa citeasca fisierele php din director si sa se foloseasca de variabila lang ... am folosit ce mi-ai dat tu, dar imi returneaza Array, nimic altceva. |
|
| Sus |
|
dechim
Data înscrierii: 10/Mai/2005
Mesaje: 630
Locație: Drobeta Turnu Severin
|
| Trimis: Mar Aug 12, 2008 4:15 pm Titlul subiectului: |
|
|
@griffin merci
@danielsen - functia de mai sus cred ca rezolva problema ta, eventual $_SESSION['lang'] il pui ca parametru al functiei si-ti intoarce intreg array-ul |
|
| Sus |
|
danielsen
Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca
|
| Trimis: Mar Aug 12, 2008 5:30 pm Titlul subiectului: |
|
|
Ca bine zici tu, dar nu $_SESSION['lang'] ala il pun ca parametru, ci $nr:
Cod: class Lang {
function text($nr) {
$dir = './languages/';
$file = glob($dir.$_SESSION['lang'].'.php');
if (count($file) == 1) include $file[0];
if (isset($txt)) return $txt[$nr];
return array();
}}
Uitasem sa pun return $txt[$nr];
Mersi. |
|
| 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 |
|
| |
|