Autor | Zpráva | ||
---|---|---|---|
Adam Dvořák Profil * |
#1 · Zasláno: 3. 5. 2012, 19:44:10 · Upravil/a: Adam Dvořák
Na svém webu plánuji několik jazykových verzí. Udělal jsem velké přesměrování, nejdřív z Indexu do složky WEB, kde je index, ve kterým je tento kód:
<script> window.location.href =" '/../web/' + navigator.language + '/index.html' " </script> [#1] Adam Dvořák Je to na stránkách ententyky.eu |
||
Borius Profil |
#2 · Zasláno: 3. 5. 2012, 21:39:39
Adam Dvořák:
Mne to přesměrovalo na http://ententyky.eu/web/cs/index.html, tedy tuším správně (Firefox 12). Respektive, kam přesně to má přesměrovat? Jinými slovy, použitý kód <script>window.location.href = navigator.language + "/index.html"</script> nejspíš funguje správně.
|
||
Adam Dvořák Profil * |
#3 · Zasláno: 4. 5. 2012, 19:14:47
Asi to už fonguje :) nevím co se stalo, ale je do to! Tak děkuji moc :)
|
||
Adam Dvořák Profil |
Tak toto funguje, alespoň doufejme. Ale řekněme, že se teď někdo přihlásí s jazykem chorvatštinou a já nebudu mít takovou jazykovou verzi. Co se s ním stane? Nešla by nějak obejít stránka 404???
|
||
juriad Profil |
#5 · Zasláno: 4. 5. 2012, 19:24:51
presměrovalo mě to na stránku: http://ententyky.eu/web/en-US/index.html
404 Not Found Objekt nenalezen dost pravděpodobně si takto odřízneš mnoho návštěvníků |
||
_es Profil |
#6 · Zasláno: 4. 5. 2012, 19:25:57
Adam Dvořák:
„bude to fungovat úplně všude?“ Nebude, napríklad návštevníkom s nefunkčným či vypnutým JS a takéto „veľké presmerovanie“ ti budú ignorovať aj vyhľadávače. |
||
Borius Profil |
#7 · Zasláno: 4. 5. 2012, 19:34:27 · Upravil/a: Borius
Chtělo by to ošetřit ty jazyky, pro které nemáš připravenou stránku, jako např. [#5] juriad.
Rovněž vyřeš i – [#6] _es, nejlépe přímým odkazem na jazykové verze. [#4] Adam Dvořák V takovém případě bych přesměrování prováděl na nějakou defaultní stránku, např. s češtinou. Potom bys ani nemusel řešit 404 (myslím pro takovou situaci). |
||
Adam Dvořák Profil |
#8 · Zasláno: 4. 5. 2012, 20:20:36
A nejde to, aby ten JS měl seznam dostupných jazyků a kdyby se ten uživatelův neshodoval, rovnou by ho to hodilo do češtiny?
|
||
Borius Profil |
#9 · Zasláno: 4. 5. 2012, 20:29:39
Adam Dvořák:
Přesně tak jsem to měl na mysli. |
||
Adam Dvořák Profil |
#10 · Zasláno: 4. 5. 2012, 21:03:31
No ale já nevím jak to udělat :(
|
||
weroro Profil |
#11 · Zasláno: 4. 5. 2012, 21:29:48
Napr. vytvoriť si pole v ktorom budú jazyky, ktoré sú dostupné a potom si vytvoriť funkciu, v ktorej sa bude porovnávať
navigator.language s prvkami v poly. Ak sa bude zhodovať tak vráti jazyk z poľa alebo navigator.language a ak sa nebude zhodovať ani s jedným prvkom tak vráti cs.
|
||
Adam Dvořák Profil |
#12 · Zasláno: 4. 5. 2012, 21:32:11
Thank.... :-/ Ale s tím se už nějak poperu, tutoriál mám prostudovaný celý, kdyžtak napíšu :)
Edit: Alespoň kousíček kódu by nebyl? |
||
weroro Profil |
Niečo na tento spôsob, písané z hlavy.
function lang() { var jazyky = ['cs', 'en', 'sk', 'de']; var langDefault = 'cs'; var actualLang = navigator.language; for (var i = 0; i < jazyky.length; i++) { if (actualLang == jazyky[i]) { return jazyky[i]; } } return langDefault; } Edit// Mne navigator.language vracia undefined |
||
Adam Dvořák Profil |
#14 · Zasláno: 4. 5. 2012, 21:38:25
weroro:
Děkuji :) PS: Jen tak mimochodem, proč je hodnota "i" tak oblíbená? |
||
weroro Profil |
#15 · Zasláno: 4. 5. 2012, 21:44:26
Adam Dvořák:
„PS: Jen tak mimochodem, proč je hodnota "i" tak oblíbená?“ i ako interator |
||
Borius Profil |
#16 · Zasláno: 4. 5. 2012, 22:08:37
Anebo bez vytváření funkce:
var lang; switch(navigator.language){ case 'sk' : lang='sk'; break; case 'en' : lang='en'; break; case 'fr' : lang='fr'; break; case 'cs' : ; default : lang='cs'; } |
||
Adam Dvořák Profil |
#17 · Zasláno: 4. 5. 2012, 22:23:39
A jak k tomu zakomponuji to přesměrování?
|
||
Borius Profil |
Adam Dvořák:
„A jak k tomu zakomponuji to přesměrování?“ Stejným způsobem jako jsi měl původně. Tzn.: window.location.href ="./web/" + lang; window.location.href =lang; Poznámka: ‘/index.html’ nemusíš přidávat, to již máš již nakonfigurováno na serveru, aby se načítalo. |
||
Adam Dvořák Profil |
#19 · Zasláno: 4. 5. 2012, 23:33:34
Děkuji moc :) Už jsem to tam nahrál a funguje to.
Jen je divné, že někomu to hází "en", někomu "en-US" a někomu "udentifed"... Nedá se to nějak sjednotit? |
||
Chamurappi Profil |
#20 · Zasláno: 5. 5. 2012, 00:02:43
Reaguji na Adama Dvořáka:
Hodnotu undefined vrací Explorer, protože v něm není navigator.language , místo toho podporuje dvě vlastnosti: navigator.userLanguage a navigator.systemLanguage .
„někomu to hází "en", někomu "en-US"“ Mno, to si nějak sjednoť. Asi se lze spolehnout, že první dva znaky jsou vždy jazyk. Reaguji na werora: „i ako interator“ Bez „n“, jen iterátor, podle iterace. |
||
Borius Profil |
#21 · Zasláno: 5. 5. 2012, 00:11:30
Adam Dvořák:
„Nedá se to nějak sjednotit?“ Jde to. Podstatná jsou první dvě písmena před spojovníkem, ta značí jazyk. Poté mohou (ale nemusí) následovat další dvě písmena, označující stát. (Angličtina britská, americká, kanadská, irská, australská, novozélandská, jihoafrická, jamajská atd.) Takže řešením je použít pouze dvě první písmena před spojovníkem. Pokud jde o výraz ‘undefined’, nejedná se o jazyk používaný u N-defínů, ale – [#20] Chamurappi. |
||
weroro Profil |
#22 · Zasláno: 5. 5. 2012, 00:44:41
Chamurappi:
„Bez ‚n‘, jen iterátor“ Kiež by som sa mohol vyhovoriť na preklep, ale bohužiaľ takto mi to kedysi dávno bolo interpretované a do teraz som teda žil v omyle. Ďakujem za opravu a zároveň sa ospravedlňujem Adamovi Dvořákovi, že som ho takto nechtiac zaviedol. |
||
Adam Dvořák Profil |
#23 · Zasláno: 5. 5. 2012, 20:28:41
<script> if (navigator.language == "undefined"){ var lang; switch(navigator.userLanguage){ case 'sk' : lang='sk'; break; case 'en' : lang='en'; break; case 'en-GB' : lang='en'; break; case 'cs' : ; default : lang='cs'; } } else { var lang; switch(navigator.language){ case 'sk' : lang='sk'; break; case 'en' : lang='en'; break; case 'en-GB' : lang='en'; break; case 'cs' : ; default : lang='cs'; } } window.location.href =lang; </script> Tak jsem se pokusil sepsat toto, bude to fungovat ve všech prohlížečích? |
||
Borius Profil |
#24 · Zasláno: 5. 5. 2012, 20:52:07 · Upravil/a: Borius
Adam Dvořák:
Docela dobré, ale protože ten switch je tam vlastně dvakrát stejný, chtělo by to malinkou úpravu, aby stačil pouze jednou. var userlang=(navigator.language=="undefined")? navigator.userLanguage : navigator.language; switch(userlang){ … (Netestoval jsem.) Ještě bych zpracoval a zahrnul všechna ‘en’, protože takto zobrazíš například Amiričanovi s jeho ‘en-US’ češtinu namísto angličtiny. |
||
Adam Dvořák Profil |
#25 · Zasláno: 5. 5. 2012, 21:01:25
No, co třeba takhle?
<script> if (navigator.language == "undefined") { userlang = navigator.userLanguage } else { userlang =navigator.language } var lang; switch(userlang){ case 'sk' : lang='sk'; break; case 'en' : lang='en'; break; case 'en-GB' : lang='en'; break; case 'cs' : ; default : lang='cs'; } window.location.href =lang; </script> |
||
Borius Profil |
#26 · Zasláno: 5. 5. 2012, 21:07:23
Adam Dvořák:
Také možné. Jenom dvě úpravy: ~ chybějící středníky ( userlang =… ; )
~ deklaproměnné ( var userlang… )
|
||
Adam Dvořák Profil |
<script> var userlang; if (navigator.language == "undefined") { userlang = navigator.userLanguage; } else { userlang =navigator.language; } var lang; switch(userlang){ case 'sk' : lang='sk'; break; case 'en' : lang='en'; break; case 'en-GB' : lang='en'; break; case 'cs' : ; default : lang='cs'; } window.location.href =lang; </script> Takhle? |
||
Časová prodleva: 11 let
|
0