Otomatik algılama dil dosyaları PHP ile tarayıcı ve URL tarak kapalı dayanır

4 Cevap php

Ben dünyanın dört bir yanından birçok kişi ile bir site var. Yunanca İngilizce - Tüm şey böylece insanlar istedikleri dilde içerik göndermek ve konuşmak için ücretsiz UTF-8'dir.

Şimdi kullanıcı kontrol edemez tek şey kayıt için navigasyon ve talimatlar gibi şeyler için kullanılan site dil inşa edilmiştir. Bu dizeler, ancak dil dosyası ve kolayca tercüme edilebilir.

Yani şimdi ben hala o değiştirilecek izin verirken, kullanıcıların tercih ettiği dili otomatik olarak algılamaya çalışacaktır bir sistem inşa bilmek gerekir.

Bunu yapmanın en kolay yolu, is to check Accept-Language users browser sends başlık. Tarayıcıların çoğu kullanıcının istediği dilde yüklenir olacak - ve o zaman bile ayarlarında dili değiştirebilirsiniz.

The problem is Internet cafe kullanıcıların bu ayarları değiştirmek isteyebilirsiniz ama mümkün olmayacaktır veya kullanıcılar, hatta onlar hakkında bilmek web ile yeterince yetkili olmayabilir. Başka bir ülkede bazı bilgisayarda bir aptal Amerikalı turist resim. (Ben biriyim, çünkü ben onlara gülmek).

Yani bu insanlar daha iyi bir yolu onlar tarayıcı kılamaz dil örtmek değiştirmeniz gerekir. Ben site.com/en_us/... veya site.com/fr_ca/... gibi bir URL tabanlı bir sistemi uygulamak diye düşünüyordum cevaplamak için.

Tamam, işte ben o çalışma hayal ediyorum nasıl olduğunu.

  • Yeni UserA görme geliyor.
  • Sitem yerel çerez seti bulur
  • bakar ve kabul-dili başlığını ayrıştırır
  • mevcut lang dir için denetler (I fr_ca desteklemek emin olun!)
  • setleri fr_ca olarak dil ile çerez
  • site.com/fr_ca için kullanıcı yönlendirir

  • UserA şimdi yükler site.com/fr_ca

  • Sitemin yerel çerez bulur
  • Yerel tanımlama URL yerel maçları
  • Kullanıcı, bu yerel istiyor olmalı
  • yükleme sayfasına devam

  • UserB UserA site.com/fr_ca işvardırt link alır

  • UserB yükler sayfa ve benim site Hiçbir yerel çerez bulur

Ben tür sonraki adımın ne kadar kayıbım İşte burada

  • My site finds UserB browser says en_us so it redirects them or
  • Sitemin fr_ca ile bir yerel çerez oluşturur ve kullanıcı bunu değiştirmek için en_US ziyvardırt etmek olacak.

Ben kayıt veya Registre demek olmadığını biliyorum bu yüzden bu dil algılama işlemek için oldukça sağlam bir yol gibi görünüyor mu?

4 Cevap

if her yerde dil anahtarlayıcıları yok - Bu yeni bir ziyaretçi için beklenen davranış olurdu gibi, "Sitemin UserB tarayıcı bu yüzden onları yönlendirir en_US diyor bulur" ile devam ediyorum.

Eğer do yerde dil seçicilerle iyi görünür bloğu sağlamak eğer Öte yandan, - o zaman ben Sitemin FR ile bir yerel çerez oluşturur ve kullanıcı değiştirmek EN ziyaret etmek olacak "kullanmak istiyorum "çünkü" yanlış dil "kolay olabilir geçti.

Genel olarak, ben görünür dil anahtarları uygulanması tavsiye ederim - herşey başarısız ve Fransız ziyaretçi Yunanca bir web sitesi görürse, bu en güvenilir geri dönüş olduğunu.

Daha sonra bu roller dil müzakere her seviyesine atanabilir:

  1. (En düşük öncelik) cookie raporları ziyaretçinin tercihi
  2. hiçbir çerez olduğunda, kabul-dili kullanmak için hangi dili söyler
  3. olduğunda hiçbir accept-language (ya da bunu desteklemez), kullanım varsayılan dil
  4. (En yüksek öncelik) URL bir dil belirleyici olduğunda - kurabiye / kabul-dili değerleri ne olursa olsun, bu kullanımı

İşte ben bunu yolu var ...

Her kullanıcı diller arasında geçiş yapabilirsiniz sitede bir yere sahip. Dil düğmelerini Şu anda aynı sayfayı yükleyin ve o dile bir cookie gerekir.

Yüklemek için hangi dili sınamak için ...

// cookie exists, they know what language they want
if cookie exists load that language

// cookie doesn't exist - its expired or this is their first visit
elseif accept-language is set, load that language; set cookie

// no accept-language present
else load some default language; set cookie

Fransa'da bir İngilizce hoparlör sitenize gelirmiş.

  • Hiçbir çerez mevcut, ancak kabul-dili Fransız.

  • fransız yüklenir, çerez ayarlanır.

  • kullanıcı dil switcher görür ve ingilizce seçer. İngilizce yükler ve bir çerez sitede onun kalan süre için ayarlanır.

Çerezleri tarayıcı üzerinde kabul edilmez Eğer sorgu dizesinde bir lang = [lang] geçmek ve çerez kontrol bundan sonra kontrol edin.

En etiketleri yazma yönünü tanımlamak zorunda onlar, sağdan sola yazma gibi akılda tutmak, küçük bir sorun Arapça dilleri vardır. Ayrıca ben yerine en_US veya aralarında çok fark yok gibi en__GB parametre tr kullanmak kullanarak, sıkı diye dil parametresini yapacak.

Ben mümkün olduğunca dil göstergesi olarak şeffaf olur. Ben bir tanımlama size önerilen gibi URL koymak ve istemiyorum demektir. Gerekirse orada URL bulunan kullanıcı kolayca değiştirebilirsiniz.

Dil göstergesi eksik Şimdi eğer, Accept-Language veya diğer kriterler dil müzakere yapmak ve istenen kaynağın bu dil özel gösterimine kullanıcıyı yönlendirebilirsiniz.

Ayrıca, her istek üzerine dil müzakere yapmak ve müzakere oldu biriyle URL istenen dili karşılaştırabilirsiniz. Bunlar farklı ise, tercih edilen dilde bir temsil de kullanılabilir bir mesaj vermek olabilir.