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

  • circuschina

    circuschina

    16 Mart 2007
  • David Tedeyev

    David Tedeye

    20 AĞUSTOS 2011
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010