View previous topic :: View next topic |
Author |
Message |
nel`chee
Joined: 08 Jul 2004 Posts: 2087 Location: Rijeka
|
Posted: 22.10.2005 15:02 Post subject: visejezicni site i IP |
|
|
koja komponenta IP-a govori da je rijec o hrvatskom ISP-u? kako mogu ljude iz hrvatske redirectati na hrvatsku verziju? po mogucnosti, u .htaccess-u
a sto ako ta osoba u cookie-ju ima vec postavljeno na engleski? kako onda overrideati taj rule? |
_________________ ♥ art & design portfolio ♥ free Photoshop brushes stuff ♥ sketchblog ♥ facebook ♥ |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 22.10.2005 16:31 Post subject: |
|
|
Skini si IP-to-country bazu i ubaci je u MySQL tablicu. Sad imaš IP rangeve za sve zemlje svijeta i preciznost ti je veća od 95% brijem, ali nikad ne može biti 100% zbog toga što ljudi koriste daleke proxye i drugih internetskih finti. Počupaš IP od klijenta, pretvoriš u long (ip2long) funkcija i query-aš bazu, izvučeš zemlju i serviraš jezik.
No, sve ovo je bez veze pošto jezik serviraš prema ACCEPT-LANGUAGE request headeru kojeg šalje browser, a ne prema IP-u. Ima puno Hrvata koji surfaju izvana a svejedno žele stranice na materinjem jeziku. |
|
|
Back to top |
|
|
nel`chee
Joined: 08 Jul 2004 Posts: 2087 Location: Rijeka
|
Posted: 22.10.2005 17:55 Post subject: |
|
|
pa zato postoji cookie, koji bi bio vazniji od IP-a. covjek moze odabrat jezik ako mu ne odgovara.
hmm zar mi zbilja treba baza svih IP-eva na svijetu? ja zelim samo hrvatske, za sve ostalo ide engleski..
thanks anyway, vidjet cu dal uopce zelim to |
_________________ ♥ art & design portfolio ♥ free Photoshop brushes stuff ♥ sketchblog ♥ facebook ♥ |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 22.10.2005 18:40 Post subject: |
|
|
Ozbiljno sam ti rekao, jezik bi se trebao servirati po više navedenom request headeru kojeg šalje svaki normalni browser, a ne po zemlji porijekla requesta!
Ako zaista želiš servirati po IP-u, možeš napraviti ovo - skinuti si bazu, pogledati je li čovjek iz Hrvatske, BIH, Srbije, Slovenije, čak i Makedonije i servirati njima hrvatski po defaultu, ostalima engleski... ali ja uopće nisam za to da ignoriraš ACCEPT-LANGUAGE header, pošaljem ti funkciju koja ga parsira ako hoćeš, a što se tiče baze daš mi user i pass za svoju bazu i dumpiram ti tablicu IP rangeva za zemlje direktno u nju |
|
|
Back to top |
|
|
gog
Joined: 18 Jun 2004 Posts: 679 Location: zagreb
|
Posted: 22.10.2005 19:01 Post subject: |
|
|
Možeš ti iz baze izbaciti sve što nije hrv., onda lijepo imaš neki redirect.php koji prvo gleda cookie, ako tamo ništa nije pohranjeno radi upit na bazu, ukoliko ti je mysql_num_rows($upit) == 0 šalji na eng, ako nije onda na hr. i odmah postavi odgovarajući cookie. Ako netko želi promjeniti jezik, promijeniš cookie i to je to... |
|
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
|
Back to top |
|
|
nel`chee
Joined: 08 Jul 2004 Posts: 2087 Location: Rijeka
|
|
Back to top |
|
|
carr
Joined: 13 Nov 2003 Posts: 1397 Location: Karlovac
|
Posted: 23.10.2005 04:30 Post subject: |
|
|
Sulien wrote: | Ozbiljno sam ti rekao, jezik bi se trebao servirati po više navedenom request headeru kojeg šalje svaki normalni browser, a ne po zemlji porijekla requesta! |
jes, ali ono, ljudi si to ne namjestaju u browseru jer neznaju da se to uopce moze.
konkretno kad firefox instaliras, difoltni jezik ti je engleski.
IE je nesto pametniji, pa s njim je difoltni hrvatski (ako ti je difoltni jezik na kompu hrvatski).
naravno da je accept-language bolji, inteligentniji, ali sta ces kad svijet nije takav. |
_________________ Bolje biti malo lud, nego malo pametan. |
|
Back to top |
|
|
nel`chee
Joined: 08 Jul 2004 Posts: 2087 Location: Rijeka
|
Posted: 23.10.2005 04:53 Post subject: |
|
|
hm evo ko sto carr kaze nisam imala pojma do sad da to postoji... ali sad sam si namjestila
ako imas gotovu funkciju za ovo bila bi jako zahvalna, buduci da mi i nakon citanja ovog nije jasno kako bi to trebalo izvest |
_________________ ♥ art & design portfolio ♥ free Photoshop brushes stuff ♥ sketchblog ♥ facebook ♥ |
|
Back to top |
|
|
gog
Joined: 18 Jun 2004 Posts: 679 Location: zagreb
|
|
Back to top |
|
|
nel`chee
Joined: 08 Jul 2004 Posts: 2087 Location: Rijeka
|
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 23.10.2005 21:53 Post subject: |
|
|
moj kod je ponešto kraći
stvar je u tome što sam trebao nešto na brzinu i nisam siguran da li je baš bulletproof ali vjerujem da radi jer vidim u statistikama logične rezultate
BTW ne snifa charset, ja svima uredno dajem Unicode
Code: | function languages(){
if(isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])){
$header = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
if(preg_match_all('/q=(\d(?:\.\d)?)/', $header, $matches)){
$langs = preg_split('/[,;]q=(\d(?:\.\d)?)[,;]?/', $header);
array_pop($langs);
$langs = array_combine($matches[1], $langs);
ksort($langs, SORT_NUMERIC);
$langs = array_reverse($langs, true);
$retval = array();
foreach($langs as $sub_langs) $retval += preg_split('/[,;]/', $sub_langs);
return $retval;
}
return preg_split('/[,;]/', $header);
}
else return array();
} |
|
|
|
Back to top |
|
|
Pekx
Joined: 09 Sep 2004 Posts: 559
|
|
Back to top |
|
|
nel`chee
Joined: 08 Jul 2004 Posts: 2087 Location: Rijeka
|
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 25.11.2005 17:10 Post subject: |
|
|
pa isprogramiraj funkciju array_combine... i onda je loadaj ako je verzija phpa manja od verzije 5, uostalom array_combine je jako jednostavna funkcija za isprogramirat
edit:
Code: | function array_combine($arrKeys, $arrVals)
{
if(empty($arrKeys) || empty($arrVals))
return false;
if(count($arrKeys) != count($arrVals))
return false;
$returnArr = array();
foreach($arrKeys AS $key)
{
$returnArr[$key] = current($arrVals);
next($arrVals);
}
return $returnArr;
} |
|
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 25.11.2005 19:25 Post subject: |
|
|
sorry, ja sam isto programirao svoju combine() ali sam zaboravio pejstati
thnx retro |
|
|
Back to top |
|
|
nel`chee
Joined: 08 Jul 2004 Posts: 2087 Location: Rijeka
|
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 27.11.2005 02:38 Post subject: |
|
|
nel`chee wrote: | retro_one wrote: | uostalom array_combine je jako jednostavna funkcija za isprogramirat |
da, kad znas sto ta funkcija treba napraviti
tnx |
http://hr.php.net/array_combine |
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
|