Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Language system.
Forum PHP.pl > Forum > PHP
Potar
Witajcie, chciałbym wprowadzić na swoj serwer język polski i anglieski, gdy ktoś kliknie angielski to ogląda cały czas w jezyku angielskim, obecnie mam tak że wszystko po polsku a link z flagą prowadzi do angielskiego a nie zapisuje na stałe, czyli po kliknieciu innego linka wraca na polski, najlepiej byłoby że jak ktoś kliknie np. ENG to ładuje się całe menu z linkami do anglieskich nazw, a jak polska to do polskich artykułów.
binprogrammer
Ja osobiscie stworzylbym nowa subdomene dla angielskiej strony i po kliknieciu flagi przekierowal na ta subdomene, oczywiscie da sie przez php, jednak zapomnialem kompletnie jak to kiedys zrobilem sad.gif dodam ze to tylko moje zdanie, znajac zycie nie jest to najlepsze rozwiazanie.

Kshyhoo
Zapisuj w sesji, coockie.
lukaskolista
cookie i sesja nie sa dobrym rozwiazaniem. Co w przypadku, gdy uzytkownik A jest z Polski, ale oglada strone w jezyku angielskim i wysle linka do uzytkownika B rowniez z Polski? Uzytkownik B dostanie ta strone w jezyku polskim, a powinien w angielskim. Podobnie bedzie z wyszukiwarka, bedzie indeksowala strone tylko w 1 jezyku. Pozostaja subdomeny (bardzo eleganckie rozwiazanie) + system wielojezycznosci w php bazujacy na jezyku z subdomeny
Niktoś
Cytat
Pozostaja subdomeny (bardzo eleganckie rozwiazanie)
.
No i chyba bardziej optymalne niż tworzenie prawie wszystkich tagów w locie i podmiana ewentualnie grafiki z napisami.
MrMag
Podczepie sie pod ten temat poniewaz mam pewien problem z indeksowaniem w google zwiazany z wielojezykowoscia. Przy wejsciu na strone sprawdzane sa w kolejnosci cookie z jezykiem, $_SERVER['HTTP_ACCEPT_LANGUAGE'] a jak nie ma ani jednego ani drugiego, przyjmowana jest wartosc 'en'*. Nastepnie robiony jest header(location) na wybrany jezyk - strona.com/pl lub strona.com/en. Pod adresem strona.com w zasadzie jest tylko badanie gdzie zrobic przekierowanie. Powoduje to, ze pod glownym adresem strona.com google zaindeksowalo tresc jako angielska i jest duzo dalej w wynikach wyszukiwania niz powinna. Jak sobie z tym poradzic? Oczywiscie strona.com/pl tez jest w google, ale daleko bo cala sila linkow zewnetrznych idzie na te angielska. Czy konieczne bedzie osobne pozycjonowanie */pl i */en?

* - i wolałbym by tak zostało
Potar
Subdomeny, niestety odpadają i osobne katalogi, gdyż po prostu na serwerze dedykowanym mam ponad 6 domen, ciężko o konfigurację z subdomenami, sama domena przekierowuje na podkatalog, to ciężko by jeszcze dorobić do tego subdomeny.

Najbardziej przypadła mi do gustu "Zapisuj w sesji, coockie. " na jakiej zasadzie mogę to zroić, byle najprościej, bo jednak żeby umieszczać tą samą stronę w 2 różnych katalogach, + konfiguracja obu + płatności i IPN=y nie będzie takie proste, to najbardziej właśnie coockie do mnie przemaiwa, moglibyście dać jakiś przykład jakby to zrobić?
Kshyhoo
O obsłudze sesji czy coockie jest sporo w Google. Możesz np. tak:
  1. $_SESSION["lang"] = (isset($_GET['lang']) && !empty($_GET['lang'])) ? $_GET['lang'] : 'polski';
  2. $file = 'languages/'.$_SESSION['lang'].'.php';
  3. include file_exists($file) ? $file : 'languages/polski.php';

Możesz też trzymać w bazie:
  1. if($_SESSION["lang"]==polski){echo "$row['polski'];"; exit();}
  2.  
  3. if($_SESSION["lang"]==angielski){echo "$row['angielski'];"; exit();}
Potar
Zrobiłem coś na zasadzie:

  1. $_SESSION["lang"] = (isset($_GET['lang']) && !empty($_GET['lang'])) ? $_GET['lang'] : 'pl';
  2.  
  3.  
  4. <script> function SetCookie(cookieName,cookieValue,nDays) {
  5. var today = new Date(); var expire = new Date();
  6. if (nDays==null || nDays==0) nDays=1; expire.setTime(today.getTime() + 3600000*24*nDays);
  7. document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();
  8. }
  9.  
  10.  
  11. function zmienJezyk(cookieName,cookieValue,nDays){
  12. SetCookie(cookieName,cookieValue,nDays);
  13. window.location.reload(); } </script>


oraz dodałem do menu osobne łącze:

  1. <a href="#"onClick="zmienJezyk(<?php if($_SESSION["lang"]==pl){echo "'lang', 'en', 30) ";} if($_SESSION["lang"]==en){echo "'lang', 'pl', 30) ";} ?> ">


Więc powinno po kliknięciu dawać cookie 'en' .



Jak teraz zrobić, żeby ładował, gdy cookie jest inne to inna treść oraz gdy cookie jest inne to jeszcze inna , jak mogę to sprawdzać w php?


Dodałem w przykładowym pliku:


Cytat
<?PHP
if($_SESSION["lang"]==pl){
$main_content .= 'Język Polski';
}
if($_SESSION["lang"]==en){
$main_content .= 'English Language';
}
?>


Cały czas pokazuje że jest Polski, nie idzie zmienić.



Ok sprawdziłem, nie działa tylko mój przycisk, możecie mi pomóc go zrobić?
Klikam odświeżam strone a cookie dalej 'pl' a nie 'en'


Liczę jakby ktoś mógł że mi podpowie, bo nie wiem co może być tu nie tak.

Odświeżam
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.