Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]strona wielojęzyczna
Forum PHP.pl > Forum > Przedszkole
plej
Witam mam do zrobienia stronę wielojęzyczną.
I chciałbym linka np. strona.pl/pl/index.php
to mam to zrobić w katalogach? i pobierając nazwe katalogu "pl" i na tej podstawie?
Bo w sumie tak mam ale nie wiem czy to jest ok.
Jeśli tak to jaką funkcją pobierać nazwe katalogu "pl" bo stosuje getcwd
o tak:
  1. $lang = getcwd();
  2. $szuakny_lang = "pl";
  3. if(strpos($lang, $szuakny_lang) === false){
  4. // nie ma
  5. $lang = "en";
  6. $lang_name = "English";
  7. }else{
  8. //jest
  9. $lang = "pl";
  10. $lang_name = "Polski";
  11. }
  12. ?>

ale to chyba mało optymalne ?


Bo chce jedną strone robić ale po dwie tabele w bazie np. news_pl i news_en itd.
Michael2318
Ja robię u siebie zawsze tak, że tworzę sobie katalog language, a w nim następne katalogi:
- lang_polish - polski, domyślny,
- lang_english - angielski.

Następnie u góry strony dodaję dwie ikonki - flaga Polski i Wielkiej Brytani. Następnie warunek:

  1. if ( isset($_COOKIE['lang_eng']) )
  2. {
  3. $language = 'lang_english';
  4. }
  5. else
  6. {
  7. $language = 'lang_polish';
  8. }
  9.  
  10. include('language/'.$language.'/plik_z_frazami_jezykowymi.php');


gdzie plik_z_frazami_jezykowymi.php to plik zawierający wszystkie wyrazy itd. przykładowa zawartość w katalogu lang_polish:
  1. $home = 'Strona główna';
  2. $contact = 'Kontakt';


oraz przykładowa zawartość w katalogu lang_english:

  1. $home = 'Home';
  2. $contact = 'Contact';


Oczywiście jeszcze trzeba dorzucić warunek, że po kliknięciu w ikonkę GB tworzy ciacho, a po kliknięciu w ikonkę PL je usuwa, czyli:

  1. if ( isset($_GET['change_lang']) && $_GET['change_lang'] == 'eng' )
  2. {
  3. setcookie('lang_eng', time(), time()+86400); // tworzymy ciacho
  4. }
  5. else if ( isset($_GET['change_lang']) && $_GET['change_lang'] == 'pl' )
  6. {
  7. setcookie('lang_eng', time(), time()-86400); // usuwamy ciacho
  8. }
plej
dzięki w sumie fajny patent bo nie musze strony kopiowac do innego katalogu czyli że będzie dwa razy.

mam taki kod:
  1.  
  2. if ( isset($_GET['change_lang']) && $_GET['change_lang'] == 'eng' ){
  3. setcookie('lang_pl', time(), time()-86400); // usuwamy ciacho{
  4. setcookie('lang_eng', time(), time()+86400); // tworzymy ciacho
  5. }else if ( isset($_GET['change_lang']) && $_GET['change_lang'] == 'pl' ){
  6. setcookie('lang_eng', time(), time()-86400); // usuwamy ciacho
  7. setcookie('lang_pl', time(), time()+86400); // tworzymy ciacho
  8. }
  9. if ( isset($_COOKIE['lang_eng']) ){
  10. $this->lang = 'eng';
  11. $this->lang_name = "English";
  12. }else{
  13. $this->lang = 'pl';
  14. $this->lang_name = "Polski";
  15. }


robie na zasadzie jak ty ale bez katalogów bo i tak wszystko w bazie i mam nazwane tabele np. "news_pl" news_en itd..


zmienia język ale dopiero po drugim razie jak się kliknie na język a musi jak wiadomo po pierwszym kliknięciu co zrobiłem źle?
pionas
Nie lepiej zrobić to na sesji?
  1. $lang_array = array("pl" => "Polski", "eng" => "English");
  2.  
  3. if (isset($_GET['change_lang']) && array_key_exists(trim($_GET['change_lang']), $lang_array)){
  4. $_SESSION['lang'] = trim($_GET['change_lang'];
  5. }
  6. if (isset($_SESSION['lang'])){
  7. $this->lang = $_SESSION['lang'];
  8. $this->lang_name = $lang_array[$this->lang];
  9. } else {
  10. $this->lang = 'pl';
  11. $this->lang_name = $lang_array[$this->lang];
  12. }
plej
No lepiej na sesji bo z tym cookie dziwnie to chodzi ; p tez właśnie pomyślałem o sesji ; p i najwyżej domyślny dam eng ; p
in5ane
A ja zaproponowałbym Ci jeszcze inny pomysł, ja osobiście używam tak i wydaje mi się to lepsze zastosowanie. Tworzysz sobie url'e typu twojastrona.com/pl/account/register lub twojastrona.com.pl/en/page/contact. I po prostu zczytujesz url'e i sprawdzasz jaka jest zmienna, dodatkowo tworzysz sobie malutki skrypt, że jak ktoś wpisuje twojastrona.com to z automatu dodaje Ci pl do adresu (defaultowy język), to samo gdy ktoś wpisz twojastrona.com/account/register, to od razu z automatu dajesz mi język. Do zmiany języka na stronie tworzysz sobie linki z adresem z dany język i tyle. Reszta zastosowania jak podawali poprzednicy, katalog lang i w nim pliku z językami.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.