Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [cookies][javascript] 2 wersje językowe na blogu, BLOGGER
marian2299
post
Post #1





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


Cześć,
mam problem z blogiem, który pomagam założyć znajomemu. Chcemy, żeby był po angielsku i po polsku. Blogger niestety nie ma takiej funkcji, ale znalazłem pomoc w postaci skryptu (http://polytimenerd.blogspot.fr/2012/06/multilanguage-posts-in-your-blog.html)

Mój kod obecnie wygląda tak:

  1. <script language="Javascript">
  2. function getElementsByClass(searchClass,node,tag) {
  3. var classElements = new Array();
  4. if ( node == null )
  5. node = document;
  6. if ( tag == null )
  7. tag = '*';
  8. var els = node.getElementsByTagName(tag);
  9. var elsLen = els.length;
  10. var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
  11. for (i = 0, j = 0; i < elsLen; i++) {
  12. if ( pattern.test(els[i].className) ) {
  13. classElements[j] = els[i];
  14. j++;
  15. }
  16. }
  17. return classElements;
  18. }
  19.  
  20. function show_en() {
  21. var pl = getElementsByClass('lang:polish', null, null);
  22. var en = getElementsByClass('lang:english', null, null);
  23.  
  24. for(i = 0; i < pl.length; i++) {
  25. pl[i].style.display = 'none';
  26. }
  27.  
  28. for(i = 0; i < en.length; i++) {
  29. en[i].style.display = 'block';
  30. }
  31. }
  32.  
  33. function show_pl() {
  34. var pl = getElementsByClass('lang:polish', null, null);
  35. var en = getElementsByClass('lang:english', null, null);
  36.  
  37. for(i = 0; i < pl.length; i++) {
  38. pl[i].style.display = 'block';
  39. }
  40.  
  41. for(i = 0; i < en.length; i++) {
  42. en[i].style.display = 'none';
  43. }
  44. }
  45.  
  46.  
  47.  
  48.  
  49.  
  50. <a href="#" onclick="show_en();"><img src="PATH-flagawielkiejprytanii.jpg" style="width: 65px; height: 48px;" /></a>
  51. <a href="#" onclick="show_pl();"><img src="PATH-polskaflaga.jpg" style="width: 65px; height: 48px;" /></a>


Dzięki temu, każdy <div class="lang:polish"> </div> i <div class="lang:english"> </div> pokazują się tylko po kliknięciu flagę.

Kategorie działają ładnie, zmieniają się, kiedy się w nie kliknie, ale problemem są 2 rzeczy:

1. Jak sprawić, żeby nie trzeba było klikać przy każdym odświeżeniu strony w angielską flagę?
2. Jak sprawić, żeby po kliknięciu w angielską flagę automatycznie PRZEKIEROWAŁO MNIE POD JAKIŚ ADRES I ZAŁADOWAŁO angielską wersję?
(chodzi o to, że posty angielskie mają konkretną flagę na bloggerze i chciałbym żeby można było podstawić link /search/Label:Englsish i jednocześnie, zeby cała strona się zmieniała na angielski)

Wiem, że należałoby ustawić setcookie, ale nie mam pojęcia, jak i byłbym bardzo wdzięczny za jakąkolwiek pomoc.
Marcin


--------------------
film edit student
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Comandeer
post
Post #2





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Jeśli to działa tylko po stronie JS, to zamiast ciasteczek wystarczy pobawić się z localStorage. Wówczas zapis języka mógłby wyglądać tak:
Kod
localStorage.setItem('lang', 'en');

a odczyt tak:
Kod
var lang = localStorage.getItem('lang');


A przekierowanie to po prostu ustawienie location.href na odpowiedni adres.


--------------------
Go to the top of the page
+Quote Post
marian2299
post
Post #3





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


Dziękuję za odpowiedź!
Ale ten odczyt ma być onclick na fladze?
jestem zielony w JS, nigdy sie nie zglebilem w tym tak jak w PHP i MySQL.


--------------------
film edit student
Go to the top of the page
+Quote Post
Comandeer
post
Post #4





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Dostawiłbym coś takiego na końcu tego script:
Kod
if(localStorage.getItem('lang') != 'en')
    show_pl();
else
    show_en();

Co na starcie powinno załadować dobry język.

Natomiast do show_pl i show_en trza by dodać na końcu linijki ustawiające odpowiedni język
Kod
localStorage.setItem('lang', 'en czy tam pl');

i powinno w miarę działać.


--------------------
Go to the top of the page
+Quote Post
marian2299
post
Post #5





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

Ostrzeżenie: (0%)
-----


DZIĘKUJĘ ! ! ! !

Mam jeszcze jedno pytanie,
jak podlinkować te flagi? Gdy daję coś takiego:
<a href="http://*.blogspot.com/search/?q=label:english" onclick="show_en();">

to elementy niżej (jak "o mnie") zmieniają się na angielski ale tylko na sekundę i na tej załadowanej stronie już znowu jest po polsku. Podczas gdy np. menu głowne u góry się nie zmienia. To wina bloggera czy moja?



--------------------
film edit student
Go to the top of the page
+Quote Post
Comandeer
post
Post #6





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

Ostrzeżenie: (0%)
-----


Hmm… A
Kod
<a href="http://*.blogspot.com/search/?q=label:english" onclick="show_en();return false;">

?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 08:25