Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V  < 1 2  
Reply to this topicStart new topic
> strona wielojęzyczna - jak ?
jang
post
Post #21





Grupa: Zarejestrowani
Postów: 101
Pomógł: 11
Dołączył: 2.02.2005

Ostrzeżenie: (0%)
-----


Cytat(robos85 @ 16.11.2007, 20:30:18 ) *
zacząłem ten temat właśnie po to, aby poznać jakąś optymalną metosę na zrobienie tego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
więc co byście polecili w końcu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

http://forum.php.pl/index.php?s=&showt...st&p=397224
Go to the top of the page
+Quote Post
robos85
post
Post #22





Grupa: Zarejestrowani
Postów: 466
Pomógł: 11
Dołączył: 21.09.2006
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Cytat(franki01 @ 17.11.2007, 00:45:28 ) *
Ja robie katalog langs/ i tam trzymam pliki z jezykami: pl.lang.php, en.lang.php, de.lang.php itd. Potem przy pomocy wyzej wymienionych sesji includuje odpowiedni plik. Zawartosci pliku mozna tworzyc na rozne sposoby:

  1. <?php
  2. define('L_TYTUL', 'Tytuł'); // dla np. angielskiego define('L_TYTUL', 'Title');
  3. define('L_KOMPUTER', 'Komputer');
  4. // itd.
  5. ?>


albo

  1. <?php
  2. $lang_tytul = 'Tytuł';
  3. $lang_komputer = 'Komputer';
  4. ?>


Dzieki takiemu czemus nie trzeba bawic sie w budowanie dlugich zmiennych jak to bylo wyzej napisane..


a jak połączyć te sesje z twoimi plikami dokładnie ?

Ten post edytował robos85 17.11.2007, 00:33:21
Go to the top of the page
+Quote Post
franki01
post
Post #23





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Troche tutaj inny schemat katalogow bedzie niz w poprzednim poscie...

Robisz katalog langs/ w nim robisz katalogi z jezykami, np pl/, en/ itd. W tych katalogach robisz plik lang.php. Strukura katalogow ma wygladac tak:

Kod
katalog ze strona
--katalog1
--katalog2
--langs
----en
------lang.php
------obrazek.gif <- obrazek z napisem angielskim
----pl
------lang.php
------obrazek.gif <- obrazek z napisem polskim
--index.php
--style.css


Najwazniejsze jest drzewo langs...
W kazdym pliku z jezykami bedzie lista tlumaczen:

  1. <?php
  2. // tresc langs/pl/lang.php
  3. define('L_TEXT', 'Treść');
  4. define('L_QANSW', 'Szybka odpowiedź');
  5. define('L_IMAGE', 'Obrazek');
  6. // itd...
  7.  
  8.  
  9. // tresc langs/en/lang.php
  10. define('L_TEXT', 'Text');
  11. define('L_QANSW', 'Quick answer');
  12. define('L_IMAGE', 'Image');
  13. ?>



Tak ma wygladac schemat katalogow. Chyba zrozumiałe...

Teraz skrypt sterujący językami:

  1. <?php
  2.  
  3. if($_SESSION['LANG'] == '') $_SESSION['LANG'] = 'pl'; // deklaracja jezyka dla pierwszej wizyty
  4.  
  5. if($_GET['lang'] != '') {
  6. preg_match("([a-zA-Z0-9-_]*)", $_GET['lang'], $tmp); // filtracja wprowadzonego jezyka zeby nie bylo czegos w stylu ../../../../../plik.php
  7. if(file_exists('langs/'.$tmp[1].'/lang.php')) $_SESSION['LANG'] = $tmp[1]; // sprawdzenie czy plik z jezykiem istnieje i przypisanie
  8. }
  9.  
  10. define('LANG_DIR', 'langs/'.$_SESSION['LANG'].'/'); // zdefiniowanie katalogu z jezykiem, zeby latwo zmieniac jezyki obrazkow
  11. require_once(LANG_DIR.'lang.php'); // incudowanie pliku z jezykiem
  12. ?>


I potem mozna zeby uzyc jakiegos wyrazenia w danym jezyku, wywolujemy okreslona stałą, np:

  1. <?php
  2. echo L_TEXT.' - '.L_QANSW; // pojawi sie tekst w okreslonym jezyku z zaincudowanego pliku
  3. echo '<img src="'.LANG_DIR.'obrazek.gif" alt="'.L_IMAGE.'" />'; // tekst alternatywny jest okreslony w pliku z jezykiem, a obrazek.gif lezy w odpo
    wiednim katalogu z jezykiem (zobacz strukture katalgow wyzej)
  4. ?>



No i to by bylo na tyle... Chyba najlepszy sposob. Jak jest niezrozumiale to najpierw przyczytac trzy razy a potem pisac (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)


EDIT:
Lepiej operowac na stalych niz na zmiennych ze wzgledow za ich zasieg w funkcjach i klasach

Ten post edytował franki01 18.11.2007, 23:18:43
Go to the top of the page
+Quote Post

2 Stron V  < 1 2
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.10.2025 - 21:45