Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]strona wielojęzyczna, jak zrobić strone wielojęzyczną?
plej
post 6.10.2013, 00:28:25
Post #1





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

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


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.

Ten post edytował plej 6.10.2013, 00:30:30
Go to the top of the page
+Quote Post
Michael2318
post 6.10.2013, 11:31:54
Post #2





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


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. }


Ten post edytował Michael2318 6.10.2013, 11:34:39
Go to the top of the page
+Quote Post
plej
post 6.10.2013, 13:41:00
Post #3





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

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


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?

Ten post edytował plej 6.10.2013, 13:44:13
Go to the top of the page
+Quote Post
pionas
post 6.10.2013, 16:28:02
Post #4





Grupa: Zarejestrowani
Postów: 70
Pomógł: 2
Dołączył: 25.03.2009
Skąd: Pionki

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


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. }


--------------------
Organizujesz konkurs? Chcesz coś wygrać? Wejdź na www.e-Konkursy.info :)
Go to the top of the page
+Quote Post
plej
post 6.10.2013, 23:36:37
Post #5





Grupa: Zarejestrowani
Postów: 264
Pomógł: 11
Dołączył: 9.05.2011
Skąd: Gdańsk

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


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
Go to the top of the page
+Quote Post
in5ane
post 7.10.2013, 08:07:13
Post #6





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

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


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.


--------------------
> > > 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: 15.08.2025 - 03:36