Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> strona wielojęzyczna - jak ?
robos85
post
Post #1





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

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


Otóż chcę zrobić stronkę w języku PL i niemieckim. I mam pytanie - jakby to zrobić, żeby były flagi i po kliknięciu na flagę przestawiał sie język.
Teksty na stronie będą modyfikowane - coś a'la mały CMS.

Dajcie jakieś sugestie jak się do tego zabrać.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
franki01
post
Post #2





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

Posty w temacie
- robos85   strona wielojęzyczna - jak ?   16.11.2007, 01:22:00
- - Foxx   Użyj sesji, na początku indexu zainicjuj zmienną s...   16.11.2007, 01:36:53
- - robos85   Dzięki, w sobotę coś zacznę ju...   16.11.2007, 01:43:49
- - Foxx   To bardzo ogólne o co pytasz więc ogólna odpowiedź...   16.11.2007, 01:51:58
- - robos85   Cytat(Foxx @ 16.11.2007, 03:36:53 ) S...   16.11.2007, 01:53:33
- - Foxx   Nie rób osobnych plików dla każdej podstrony. Rozw...   16.11.2007, 02:05:32
- - robos85   mam taki błąd: [PHP] pobierz, plaintext ...   16.11.2007, 02:14:21
- - Foxx   Pokaż swój kod.   16.11.2007, 02:18:01
- - robos85   index.php [PHP] pobierz, plaintext <!DOCTYPE HT...   16.11.2007, 02:19:18
- - Foxx   Rzeczywiście, to powoduje błąd... zmodyfikowalem t...   16.11.2007, 02:47:47
- - robos85   dzięki, może ktoś podpowie mi jak z...   16.11.2007, 02:51:48
- - drPayton   Brak identyfikatora sesji w URI: [PHP] pobierz, pl...   16.11.2007, 04:31:27
|- - robos85   Cytat(drPayton @ 16.11.2007, 06:31:27...   16.11.2007, 09:01:57
- - NoiseMc   Zmienna jezykowa w sesji? A jak wyslesz komus link...   16.11.2007, 05:05:11
- - FliSs_tCv   NoiseMc mógłbyś wtedy pomoc jak wykonać to przekaz...   16.11.2007, 08:45:42
- - NoiseMc   Cytat(FliSs_tCv @ 16.11.2007, 08:45:4...   16.11.2007, 13:59:58
- - Sh4dow   Po pierwsze w sesji mozna index jezyka trzymac, al...   16.11.2007, 14:49:20
- - domis86   zamiast [PHP] pobierz, plaintext <?php$lang...   16.11.2007, 15:15:12
- - robos85   zacząłem ten temat właśnie po ...   16.11.2007, 20:30:18
|- - jang   Cytat(robos85 @ 16.11.2007, 20:30:18 ...   17.11.2007, 00:16:00
- - franki01   Ja robie katalog langs/ i tam trzymam pliki z jezy...   16.11.2007, 22:45:28
|- - robos85   Cytat(franki01 @ 17.11.2007, 00:45:28...   17.11.2007, 00:30:30
- - franki01   Troche tutaj inny schemat katalogow bedzie niz w p...   18.11.2007, 23:16:06


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: 23.10.2025 - 23:31