Ivo Bogucki

Ivo Bogucki Grafik, Koder
HTML/CSS/JS /
tanieprojektowanie.c
om / avan...

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Witam,

Szukam osoby, która (odpłatnie) pomoże mi stworzyć aplikację php rozpoznającą język przeglądarki użytkownika i na tej podstawie wczytującą odpowiednio przypisany link.

Chce zrobić stronę w wersji PL i EN, i zależy mi na tym, żeby użytkownikowi z anglojęzyczną przeglądarką otworzyła się na start strona w języku EN.

JS i jego przekierowanie odpada.

Jeśli ktoś ma może opanowany .htaccess to może z jego pomocą coś stworzy(?).

Dodam też że aplikacja będzie musiała być zintegrowana z systemem CMS Made Simple.

Proszę o info na PW jeśli ktoś dałby rade.

Pozdrawiam, IBIvo Bogucki edytował(a) ten post dnia 22.04.10 o godzinie 20:48
Bartosz M.

Bartosz M. Właściciel,
Gzoom.pl

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Ivo Bogucki:
Witam,

Szukam osoby, która (odpłatnie) pomoże mi stworzyć aplikację php rozpoznającą język przeglądarki użytkownika i na tej podstawie wczytującą odpowiednio przypisany link.
22.04.10 o godzinie 20:48[/edited]


A w JS może być.


<script>

/*
Browser Language Redirect script- By JavaScript Kit
For this and over 400+ free scripts, visit http://www.javascriptkit.com
This notice must stay intact
*/

//Enter ISO 639-2 letter Language codes to detect (see: http://www.w3.org/WAI/ER/IG/ert/iso639.htm):
var langcodes=new Array("en", "fr", "es", "ja", "zh", "default")

//Enter corresponding redirect URLs (last one is for default URL):
var langredirects=new Array("index.htm", "french.htm", "spanish.htm", "japan.htm", "chinese.htm", "index.htm")

var languageinfo=navigator.language? navigator.language : navigator.userLanguage
var gotodefault=1

function redirectpage(dest){
if (window.location.replace)
window.location.replace(dest)
else
window.location=dest
}

for (i=0;i<langcodes.length-1;i++){
if (languageinfo.substr(0,2)==langcodes[i]){
redirectpage(langredirects[i])
gotodefault=0
break
}
}

if (gotodefault)
redirectpage(langredirects[langcodes.length-1])

</script>


Wystarczy to przerobić na odpowiednie języki i pliki / katalogi.

EDIT: Sorry nie doczytałem o JS. A czemu właściwie nie może za pomocą JS, z CMS MS powinno działać, dla wersji multilang ?Bartosz Mózg edytował(a) ten post dnia 22.04.10 o godzinie 21:07
Ivo Bogucki

Ivo Bogucki Grafik, Koder
HTML/CSS/JS /
tanieprojektowanie.c
om / avan...

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Właśnie JS odpada. Z racji wymuszenia przekierowania. FF nie chwali sobie takich opcji. Ja osobiście też nie chwale. To musi iść z 'urzędu'.

Kurcze, z ciekawości wziąłem do testów ten kod i działa. Nie ma problemu z przekierowaniem. FF nie robi problemów...

Dzieki wielkie! Opłaty sobie liczysz?:D

---

Jest problem. Skrypt się zapętla jak daje go do szablonu. Jakieś pomysły żeby tego uniknąć?Ivo Bogucki edytował(a) ten post dnia 22.04.10 o godzinie 21:23
Bartosz M.

Bartosz M. Właściciel,
Gzoom.pl

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Nie ma sprawy. Jak będziesz kiedyś w okolicy Wrocław - Katowice, to możemy się piwa napić, albo czegoś konkretniejszego ;).
Bartosz M.

Bartosz M. Właściciel,
Gzoom.pl

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Ivo Bogucki:
Jest problem. Skrypt się zapętla jak daje go do szablonu. Jakieś pomysły żeby tego uniknąć?

Zrobić osobny szablony tylko dla Home page i tam wrzucić skrypt. Dla pozostałych stron dać szablon bez. ?Bartosz Mózg edytował(a) ten post dnia 22.04.10 o godzinie 21:27

konto usunięte

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Przeglądarka wysyła w zapytaniu dane o używanym języku, więc ma się do nich dostęp z poziomu skryptu serwera.

@edit:

$_SERVER["HTTP_ACCEPT_LANGUAGE"]

Wszystko ładnie działa, bo przed momentem sprawdzałem ;)

btw. Nie znam się specjalnie na php

Pozdrawiam,
AdamAdam Mydlarz edytował(a) ten post dnia 22.04.10 o godzinie 21:32
Ivo Bogucki

Ivo Bogucki Grafik, Koder
HTML/CSS/JS /
tanieprojektowanie.c
om / avan...

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Bartosz Mózg:
Nie ma sprawy. Jak będziesz kiedyś w okolicy Wrocław - Katowice, to możemy się piwa napić, albo czegoś konkretniejszego ;).
Chętnie :)

Odnośnie zapętlenia. W skrypcie dodałem na sam koniec 'break'. Dzieki temu skrypt nie zapętla się i może być na każdym szablonie.

Powstał w między czasie kolejny problemik. Użytkownik z zagranicy nie może przełączyć sobie strony na PL. Tak więc w tym miejscu może mieć zastosowanie o którym pisałeś - osobny szablon dla home.

No nic, człowiek całe życie kombinuje :) ogromne dzięki za pomoc, w razie gdybym mógł pomóc, pisz.

PS. Dzieki Adamie za potwierdzenie :) tyle co sie namęczylem zeby samemu to napisać, to po prostu masakra. Niepisane mi pisac w php i js.

Pozdrawiam! IvoIvo Bogucki edytował(a) ten post dnia 22.04.10 o godzinie 21:35
Grzegorz Wysocki

Grzegorz Wysocki Mam web do pewnych
spraw ;)

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Ivo Bogucki:
Powstał w między czasie kolejny problemik. Użytkownik z zagranicy nie może przełączyć sobie strony na PL. Tak więc w tym miejscu może mieć zastosowanie o którym pisałeś - osobny szablon dla home.

Tutaj chłopaki rozgryzają podobny temat.

konto usunięte

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)


<?php

class LanguageDetector{
private static $languages = null;
public static function getBestMatch($langs = array()){
foreach($langs as $n => $v)
$langs[$n] = strtolower($v);
$r = array();
foreach(self::getAviableLanguages() as $l => $v){
($s = strtok($l, '-')) != $l && $r[$s] = 0;
if(in_array($l, $langs))
return $l;
}
foreach($r as $l => $v){
if(in_array($l, $langs)) return $l;
}

return null;
}
public static function getAviableLanguages(){
if(!isset(self::$languages)){ if(($list = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']))){
if(preg_match_all('/([a-z]{1,8}(?:-[a-z]{1,8})?)(?:;q=([0-9.]+))?/', $list, $list)){
self::$languages = array_combine($list[1], $list[2]);
foreach(self::$languages as $n => $v){
self::$languages[$n] = +$v ? +$v : 1;
}
arsort(self::$languages);
}
}else{
self::$languages = array();
}
}
return self::$languages;
}
}

echo '<pre>';

print_r(LanguageDetector::getAviableLanguages()); // wyciaga dostepne jezyki wraz z wartoscia

print_r(LanguageDetector::getBestMatch(array('pl','en','de'))); // wyciaga najlepiej pasujacy jezyk z dostepnych

: )

Edit : Uppps - Goldenline troche formatowanie rozwalilo :/Paweł Krefta edytował(a) ten post dnia 23.04.10 o godzinie 10:05

konto usunięte

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

Bartosz Mózg:
EDIT: Sorry nie doczytałem o JS. A czemu właściwie nie może za pomocą JS, z CMS MS powinno działać, dla wersji multilang
http://riddle.jogger.pl/2007/11/07/kto-normalny-wylacz...
Choćby dlatego, że nie wszystkie telefony mają zaimplementowaną obsługę JavaScript (a nawet jeśli mają to najczęściej nie obsługują przekierowań, setTimeout'ów, evali i innych dynamicznych składni języka). Takie rzeczy rozwiązuje się po stronie serwera.

Aby rozkminić język usera można wykorzystać wspomnianą wcześniej zmienną serwera HTTP_ACCEPT_LANGUAGE, ewentualnie HTTP_USER_AGENT.

Innym sposobem może być identyfikacja numeru IP, choć nie jest to zbyt optymalne rozwiązanie.
Marcin Kopczyński

Marcin Kopczyński Po prostu szczęśliwy
człowiek :)

Temat: Rozpozanie języka przeglądarki i załadowanie odp. strony (?)

dobra rada: sprawdź potem jak Twoje rozwiązanie potraktuje googlebot i inne tego typu szperacze oraz różnego rodzaju czytniki. One zachowują się trochę inaczej niż zwykła przeglądarka.

pomimo, że nie o to pytasz, ale szczerze odradzam 'dogadzanie' na siłę z językami. Ja mam system i przeglądarkę eng (więc dostanę na siłę eng?). U jednego klienta z aplikacją na wiele krajów przerabialiśmy system na wiele domen (regionalnych) aby uniknąć zabawy w przekierowania od których google nieźle szalało.



Wyślij zaproszenie do