Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [wzorzec] Serwis wielojęzyczny
kamileus
post 28.11.2007, 19:35:59
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 29.08.2007

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


Witam.
Poszukuję jakiegoś dobrego, elastycznego i sprawdzonego wzorca do serwisu wielojęzycznego.
Założenia:
1. Szablon serwisu powinien być wspólny dla wszystkich języków, zmienia się tylko treść np. tytuł, nazwy w menu itp.
2. Obsługa defaultowego języka, tzn. nie wszystkie treści muszą mieć swoje odpowiedniki w innym języku (tzn. jakiś artykuł może być napisany tylko w j. polskim, inny tylko w angielskim, a jeszcze inny tylko w niemieckim). Może też nastąpić sytuacja, że użytkownik wybrał domyślnie niemiecki (elementy menu są w tym języku, a sam artykuł jest np. po angielsku).

Będę wdzięczny za wszelkie przykłady kodu, tutoriale lub cokolwiek związanego z tematem postu.
Go to the top of the page
+Quote Post
in5ane
post 28.11.2007, 19:57:15
Post #2





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Kolega franki01 opisał jak to zrobić w innym topicu...

Proszę, patrz:

Cytat
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 biggrin.gif

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


Ten post edytował in5ane 28.11.2007, 19:57:27


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 06:57