2016-04-11 15 views
0

Sayfada çeviriyi yapan basit bir JavaScript dosyasına sahibim. Yani kullanıcı ör. İngilizce, üzerine tıklar ve sayfa kendini çevirir. Kullanıcı başka bir sayfaya gittiğinde hariç her şey harika çalışıyor.sayfalarda değişken paylaşımları

Şimdi benim javam tekrar yüklenir ve varsayılan dil devreye girer. İstenmeyen bir durumdur - JavaScript'imin hangi dilin belirttiğini hatırlamasını istiyorum.

Burada, ben depolamak.Bu dil (bir kullanıcının belirttiği) üstünde benim language değişken görebileceğiniz gibi ben

//translations 
var language = "en"; 
$(function() { 
    translatePage(); 

    $("#PageLanguages li").on("click", function (attr) { 
     var selLang = $(this).data("language"); 
     if (selLang) { 
      language = selLang; 
     } 

     translatePage(); 
    }); 

    function translatePage() { 
     $.ajax({ 
      url: 'languages.xml', 
      success: function (xml) { 
       $(xml).find('translation').each(function() { 
        var id = $(this).attr('id'); 
        var text = $(this).find(language).text(); 
        $("#" + id).text(text); 
       }); 
      }, 
      error: function (err) { 
       var x = err; 
      } 
     }); 
    }; 
}); 

yapıyorum göstermek için JavaScript kodudur.

Tüm sayfalar arasında bir değişkeni paylaşmak için web sitesine gitmek istediğimde (bu örnekte olduğu gibi) ne yapmam gerekiyor?

//set data 
localStorage.setItem("language", language); 

// get data 
var language = localStorage.getItem("language"); 

tüm sayfalar için geçerli olacaktır: Burada

+5

Dil değişkeni çerezlerde veya localstorage'da saklanır – uzaif

+0

Veya sunucu tarafında bir veritabanında. İstediğin şeyi elde etmenin birçok yolu var. –

cevap

1

. Ama sadece üç tane listeleyeceğim. Eğer (tarayıcı tarafından desteklenen etkinleştirilen JavaScript dayanır /) JavaScript yaklaşımı isterseniz: Alternatif

var language = localStorage.getItem("language") || ""; 

if(language !== "") 
{ 
    // Set the language for content in here 
} 
else 
{ 
    // Store the language in LocalStorage here. 
    localStorage.setItem("language", "en-us"); 
} 

, kendi Veritabanı (sunucu tarafı) böyle şeyler saklamak olabilir, ama depolama karşı tavsiye ediyorum İhtiyacınız olduğunda bu değerin mevcut olmasını kesinlikle sağlamanız gerekmedikçe, kendi verilerinizde bu tür şeyler.

Başka bir seçenek, language=en-us gibi bir sorguyu, bir köprüyü veya düğmeyi tıklattığında sorgu dizenize ekliyor. Daha sonra bu veriyi sorgu dizisinden almak için JavaScript'i veya bir sonraki sayfada sunucu tarafı dilini kullanabilirsiniz.

3

Benim tavsiyem tarayıcı hedef tarayıcılar HTML5 uyumlu ise, yerel depolama deneyin modern tarayıcılarda

localStorage.setItem('language', 'eng'); 

// Retrieve the object from storage 
var retrievedLanguage = localStorage.getItem('language'); 

console.log(retrievedLanguage); /// prints eng 
2

ile yerel depolama kullanarak, dayanır.

1

Tüm sayfalarda dil değişkenini korumanın farklı bir yolu vardır. dilini bilmek https://www.paypal.com/ar/webapps/mpp/ev

2) Çağrı sunucusu:

1) URL'ye kendisini eski dil dizesini kullanın. çerezinde

3) Mağaza localStorage kullanma uzaif

4) tarafından belirtildiği gibi bunu hakkında gidebilirsiniz çeşitli yolları vardır

İlgili konular