SORU
25 HAZİRAN 2009, PERŞEMBE


JavaScript tespit tarayıcı dili tercih

Tarayıcı dil tercihi JavaScript kullanarak algılamaya çalışıyorum.

Tools>Internet Options>General>Languages IE tarayıcı dilini ayarlamak nasıl bu değeri JavaScript kullanarak okumak mı?

Firefox için aynı sorun. tools>options>content>languages ayarı navigator.language kullanarak tespit edemiyorum.

navigator.userLanguage kullanmadan ayar üzerinden yapılır algılar Start>ControlPanel>RegionalandLanguageOptions>Regional Options sekme.

navigator.browserLanguage navigator.systemLanguage ile denedim ama hiçbiri ilk ayar değeri(Tools>InternetOptions>General>Languages) verir

Bir ayrıntılı olarak anlatılır link buldum ama soru cevapsız kalır :(

CEVAP
26 Temmuz 2010, PAZARTESİ


Asıl sorun burada tarayıcı ayarları aslında javascript ile elde edilen navigator.language özelliği etki etmez bence.

Etkisi ne HTTP 'Kabul Dili' Başlığı, ama bu değeri javascript ile kullanılabilir değil gibi görünüyor. (Muhtemelen neden @anddoutoi sunucu tarafı içermeyen bir referans bulamıyor Birleşik Devletleri)

Geçici bir çözüm şifreledim: JSONP. üzerinden HTTP istek başlıklarını döndürür http://ajaxhttpheaders.appspot.com google app engine script hamile olduğum

(Not: Bu bir sadece kesmek için bu arka uç kullanılabilir yüklü değilse kullanılmalıdır. Genel olarak ana güven çok yüksek seviyede olmadığı sürece sayfalarında üçüncü taraflarca javascript dosyaları için arama yapmak olmamalıdır.)

Onu orada bırakmak ebediyen niyetindeyim kodunuzu kullanmak için çekinmeyin.

İşte bazı örnek kodu (jQuery) nasıl kullanabileceğiniz için

$.ajax({ 
    url: "http://ajaxhttpheaders.appspot.com", 
    dataType: 'jsonp', 
    success: function(headers) {
        language = headers['Accept-Language'];
        nowDoSomethingWithIt(language);
    }
});

Birisi bu yararlı bulur umuyoruz.

Edit: bu işlev sarar github üzerinde küçük bir jQuery eklentisi yazdım: https://github.com/dansingerman/jQuery-Browser-Language

Edit 2: istediğin Gibi AppEngine (süper gerçekten önemsiz): çalışan koddur

class MainPage(webapp.RequestHandler):
    def get(self):
        headers = self.request.headers
        callback = self.request.get('callback')

        if callback:
          self.response.headers['Content-Type'] = 'application/javascript'
          self.response.out.write(callback   "(")
          self.response.out.write(headers)
          self.response.out.write(")")
        else:
          self.response.headers['Content-Type'] = 'text/plain'
          self.response.out.write("I need a callback=")

application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=False)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

Edit3: app engine kod burada kaynaklı açık: https://github.com/dansingerman/app-engine-headers

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • amc

    amc

    21 EYLÜL 2005
  • DONFANTASTICKYPESS

    DONFANTASTIC

    1 Temmuz 2007
  • EvilControllers

    EvilControll

    20 Ocak 2008