www.WebTips.pl: Jak w zależności od języka użytkownika skierować go na stronę napisaną w jego języku? - www.WebTips.pl

Skocz do zawartości


Strona 1 z 1

Jak w zależności od języka użytkownika skierować go na stronę napisaną w jego języku? Przekierowanie

#1 Użytkownik nie jest zalogowany   KrzychoGacek 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 6
  • Rejestracja 16 cze 10

Napisano 29 lipiec 2010 - 10:31

Witajcie!
Mam ProBlem, sprawa wyglada tak, że posiadam 4 wersje językowe strony - każda w osobnym katalogu oraz plik index.html w którym jest przekierowanie do wersji polskiej tj.
<meta http-equiv="Refresh" content="0; URL=http://www.XXX.com.pl/pl/index.html">
, wszystko to w głównym katalogu.
Chciałem zamienic plik index.html w głównym katalogu na index.php gdzie umieściłbym jakiś skrypt rozpoznający wersję językową przeglądarki/systemu użytkownika i przekierował go do odpowiedniej wersji językowej. Nazwy katologów pl, en, ru, ro.
Macie jakieś pomysły? Proszę o pomoc ProWebmasterów, dla których nie stanowi to ProBlemu ;)

PS Jeszcze jedno, w przypadku kiedy język użytkownika jest inny od tych wszystkich, chciałbym żeby został przekierowany na stronę angielską
0


Strona 1 z 1

Odpowiedzi do tego tematu

#2 Użytkownik nie jest zalogowany   Piechu 

  • Junior
  • Pip
  • Grupa Użytkownik
  • Postów 75
  • Rejestracja 21 lip 10
  • MiejscowośćKraków

Napisano 29 lipiec 2010 - 13:31

Znalazłem takie rozwiązanie. Zwróć uwagę na ostatni post, tam jest skrypt, którego potrzebujesz ;) Skoro każdy index jest w innym folderze, to pamiętaj o zmianie ścieżek w case:

 case pl: require_once('twoja_siezka/polish.php'); break; 

W tym rozwiązaniu nie potrzebujesz już przekierowania meta
0

#3 Użytkownik nie jest zalogowany   czarny 

  • Bywalec
  • PipPip
  • Grupa Użytkownik
  • Postów 151
  • Rejestracja 02 cze 10

Napisano 29 lipiec 2010 - 14:01

case 'pl': 
default:
  require_once('twoja_siezka/polish.php'); 
break; 


cudzysłowów brakowało. jest jeszcze rozwiązanie z geoip, ale jest pracochłonne, wymaga uprawnień administracyjnych na serwerze i jest problem chyba z blueconnectem, który przydziela ip-ki z holandii.
0

#4 Użytkownik nie jest zalogowany   KrzychoGacek 

  • Nowicjusz
  • Grupa Użytkownik
  • Postów 6
  • Rejestracja 16 cze 10

Napisano 30 lipiec 2010 - 13:14

Troszkę skomplikowane to rozwiązanie, więc podciągnąłem rękawy i zacząłem szukac prostszego - lubię kiedy rozumię każdy fragment kodu. Ku mojemu zdziwieniu odnalazłem je! :) - matula ma rację - jak chce to potrafię :P Bardzo się dziwię, że to co podał mi Piechu udało się zmieścic w dosłownie kilku linijkach:
<?php
function comefrom()
{
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
switch(substr($lang, 0, 2))
{
  case pl: require_once('pl/index.html'); break;
  case en: require_once('en/index.html'); break;
  case ru: require_once('ru/index.html'); break;
  case ro: require_once('ro/index.html'); break;	
  default: require_once('pl/index.html'); break;
}
}
comefrom();
?>

Korzystałem z tej strony. Przydała się trochę minimalna znajomośc C++, który jest jak widzę podobny do PHP, przez co zrozumiałem OCB no i działa. Jest tylko jeden problem - przeglądarka nie przechodzi do następnej strony tylko otwiera plik html w obrębie pliku php (tak mi sie wydaje) przez co cała strona sie rozsypuje - złe ścieżki lokalne do plików. W jaki sposób sprawic żeby przeglądarka otwierała plik index.html jako następną stronę?

Dziękuję za dotychczasową pomoc i proszę o więcej :)
Pozdrawiam
Krzysiek

\\\\EDIT////
Najpierw piszę później myślę. Wszystko już działa jak należy po drobnej modyfikacji. Zapodaję gotowy kod gdyby ktoś potrzebował:
<?php
function comefrom()
{
$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
switch(substr($lang, 0, 2))
{
  case pl: header("Location: pl/index.html"); break;
  case en: header("Location: en/index.html"); break;
  case ru: header("Location: ru/index.html"); break;
  case ro: header("Location: ro/index.html"); break;
  default: header("Location: pl/index.html"); break;
}
}
comefrom();
?>


Jeszcze raz Wam dziękuję!
Pozdrawiam
0

Strona 1 z 1


Szybka odpowiedź

  

Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych