| | |
| Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
Autor | Správa |
---|
Registrovaný: 20.01.07 Prihlásený: 12.02.24 Príspevky: 401 Témy: 87 | Napísal dulius: 13.10.2008 14:39 | |
|
zdravim.
robim web a ma byt tam funkcia, ktora zisti odkial je uzivatel a na zaklade toho ho presmeruje na jazykovu mutaciu webu.
jedna sa o cz, sk, en, ger a pl verzie.
ako na to?
bude tam index.php .. ktory ma bude odkazovat na
cz/index.php
sk/index.php
en/index.php
ger/index.php
pl/index.php
|
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
stat mozes zistit tka mozno podla IP, ale to nie je najlepsia cesta
skus pouzit $_SERVER["HTTP_ACCEPT_LANGUAGE"]
tam by mohol byt jazyk ktory preferuje uzivatel. neviem ale ci tuto informaciu korektne pozsielaju vsetky browseri a neviem ako sa to bude spravat ked mas OS a browser inych jazykovych verziach. napri anglicky windows, cesky browser, ale si slovak
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 20.01.07 Prihlásený: 12.02.24 Príspevky: 401 Témy: 87 | Napísal autor témy dulius: 13.10.2008 15:12 | |
|
dik, napadlo ma este $jazyk = $_SERVER['HTTP_USER_AGENT'];
tam vidim vo vystupe sk ... v tom tvojom vystupe mam toho viac ... mne vyhodilo: sk,cs;q=0.8,en-us;q=0.5,en;q=0.3
takze to nemozem pouzit
este vie mi niekto povedat, ake skratky presne vyhodi vysledok prikazu $jazyk = $_SERVER['HTTP_USER_AGENT'];
ak je to v krajine cz, pl, nemecku a anglicku?
zatial to mam takto: Kód: <?php session_start(); if ( strpos($_SERVER['HTTP_USER_AGENT'], 'cz') ) { $_SESSION['lang']='cz';
} if ( strpos($_SERVER['HTTP_USER_AGENT'], 'sk') ) { $_SESSION['lang']='sk'; } if ( strpos($_SERVER['HTTP_USER_AGENT'], 'en') ) { $_SESSION['lang']='en'; } if ( strpos($_SERVER['HTTP_USER_AGENT'], 'de') ) { $_SESSION['lang']='de'; } if ( strpos($_SERVER['HTTP_USER_AGENT'], 'pl') ) { $_SESSION['lang']='pl'; } elseif ( empty($_SESSION['lang']) ) { $_SESSION['lang']='cz'; }
header("Location: " . $_SESSION['lang'] ."/index.php");
?>
//nabuduce edit, inak to rovno mazem. suchy
|
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
namiesto else if empty by stacilo else
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 20.01.07 Prihlásený: 12.02.24 Príspevky: 401 Témy: 87 | Napísal autor témy dulius: 13.10.2008 16:03 | |
|
GoodWill píše: namiesto else if empty by stacilo else
dik, ale myslim ze aj takto je to OK
|
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
nie je, pretoze ak tam bude mat niekto napriklad fr, tak mu zobrazis co?
404, page /fr/index.php not found?
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 10.07.08 Príspevky: 190 Témy: 40 Bydlisko: BA | Napísal m4r14n: 13.10.2008 17:11 | |
|
a myslis ze je to najlepsie riesenie? ... bo napr. v $_SERVER['HTTP_USER_AGENT'] v google chrome naslo aj pl (apple) a ako jazyk je tam nastaveny en (sk ani cz tam neni ani spomenuty, a pritom mam cesky win a slovensky browser)... no a asi by som zo stranky odisiel keby bola v polcine...
|
|
Registrovaný: 20.01.07 Prihlásený: 12.02.24 Príspevky: 401 Témy: 87 | Napísal autor témy dulius: 13.10.2008 17:56 | |
|
GoodWill píše: nie je, pretoze ak tam bude mat niekto napriklad fr, tak mu zobrazis co? 404, page /fr/index.php not found?
ale ak tam bude mat fr, tak premenna session nebude naplnena, teda bude splnena posledna podmienka elseif ( empty($_SESSION['lang']) ) a hodi ho na predvolenu cz verziu ...
|
|
Registrovaný: 29.10.07 Prihlásený: 27.10.23 Príspevky: 1395 Témy: 30 Bydlisko: Bratislava |
ah, ano, prehliadol som ze tam miesas session a server
aspon sa v tom vyznas ty
_________________ PC: OS: Windows 11 (64bit) CPU: AMD Ryzen 5 3600 GPU: ASUS TUF RTX3060Ti 8GB RAM: 16GB DDR4-3200MHz Kingston Fury MB: ASUS TUF Gaming B550M WIFI SSD: 1000GB PCIe M.2 NVME Mobil: Xiaomi POCO F2 PRO |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
myslim, ze je uplne postacujuce, ked budes kontrolovat len hodnotu $_SERVER['HTTP_ACCEPT_LANGUAGE'], lebo user_agent nemusi obsahovat ziadnu hodnotu popisujucu jazyk, alebo inu ako je preferovany jazyk, takisto moze nastat aj problem, ktory nacrtol m4r14n...
Tiez nechapem, preco ukladas jazyk do session, je to zbytocne, mozes si to predsa zistit z url...
Kód: <?php if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); } if(!isset($lang) || (!empty($lang) && !eregi("[cz|sk|en|de|pl]",$lang))) { $lang = "cz"; }
header("Location: " . strtolower($lang) ."/index.php"); ?>
Naposledy upravil stenley dňa 14.10.2008 12:47, celkovo upravené 1
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 20.01.07 Prihlásený: 12.02.24 Príspevky: 401 Témy: 87 | Napísal autor témy dulius: 14.10.2008 12:46 | |
|
ahoj stenley ... vdaka za lepsi navod ...
inak nic nie je zbytocne
ja potrebujem v dalsich strankach tu premennu lang, preto ju ukladam do session.
na zaklade tej premennej sa nastavuju obrazky v menu v roznych jazykovych verziach a podobne.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
podla mna to je zbytocne jazyk si predsa mozes zistit z url... na co to davat este aj do session? to by si tam mohol rovno ukladat aj hodnoty z GET a pod... navyse, tak ci tak budes musiet kontrolovat, ci je v session spravna hodnota, takze na tvojom mieste by som siel cestou ziskavania jazyka z url
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 20.01.07 Prihlásený: 12.02.24 Príspevky: 401 Témy: 87 | Napísal autor témy dulius: 14.10.2008 12:53 | |
|
stenley píše: podla mna to je zbytocne jazyk si predsa mozes zistit z url... na co to davat este aj do session? to by si tam mohol rovno ukladat aj hodnoty z GET a pod... navyse, tak ci tak budes musiet kontrolovat, ci je v session spravna hodnota, takze na tvojom mieste by som siel cestou ziskavania jazyka z url
strasne vela zbytocnych veci je na svete, ja viem
|
|
Registrovaný: 07.02.11 Prihlásený: 12.04.14 Príspevky: 6 Témy: 2 |
Dobrý deň,
viem že táto diskusia už nie je dávno aktuálna, no v Googli som hľadal niečo o automatickom presmerovaní podľa jazyka prehliadača a medzi prvými príspevkami bol aj tento... Skúšal som ho a chcem len povedať, že nie je veľmi presný. Napr. ak máte v Mozille nastavený NL jazyk a ďalší za ním je nastavený SK jazyk, tak sa nepresmeruje na CZ, ale na SK!!! Len toľko...
stenley píše: myslim, ze je uplne postacujuce, ked budes kontrolovat len hodnotu $_SERVER['HTTP_ACCEPT_LANGUAGE'], lebo user_agent nemusi obsahovat ziadnu hodnotu popisujucu jazyk, alebo inu ako je preferovany jazyk, takisto moze nastat aj problem, ktory nacrtol m4r14n... Tiez nechapem, preco ukladas jazyk do session, je to zbytocne, mozes si to predsa zistit z url... Kód: <?php if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); } if(!isset($lang) || (!empty($lang) && !eregi("[cz|sk|en|de|pl]",$lang))) { $lang = "cz"; }
header("Location: " . strtolower($lang) ."/index.php"); ?>
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 07.02.2011 11:19 | |
|
|
|
Registrovaný: 07.02.11 Prihlásený: 12.04.14 Príspevky: 6 Témy: 2 |
staci len za cz vymenit za cs a tieto zatvorky [] vamazat :
<?php
if(!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2);
}
if(!isset($lang) || (!empty($lang) && !eregi("[cz|sk|en|de|pl]",$lang))) {
$lang = "cz";
}
header("Location: " . strtolower($lang) ."/index.php");
?>
|
|
| Stránka: 1 z 1
| [ Príspevkov: 16 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|