Kendi IP adresi üzerinden bir kullanıcının dilini algılamak nasıl

7 Cevap php

Ben bir web sitesi www.tenxian.com geliştirdik.

Japon ve Çinli üç dil sürümleri, İngilizce, vardır. Nasıl otomatik olarak ziyaretçinin IP adresine dayalı bir dil sürümünü seçebilirsiniz etkili bir PHP programı yazabilirim?

Ben "if-else" kullanırsanız, kod çok karmaşık olurdu; Ben ele alınmalıdır verilere beri yazmak için nasıl switch davayı kullanıyorsanız, IP belirli numaraları değil, aralıkları vardır. Ayrıca, ben bu IP aralıklarını bilmiyorum

Bunu yapmak için en kolay yolu nedir?

7 Cevap

, Bu IP == dili düşünme hata yapmazlar LÜTFEN Lütfen. Tarayıcılar bakmak kabul-dili başlığını ilk OS dilini içeren, ve ancak o zaman dikkate IP alabilir ardından tarayıcı kimlik dizesi. Tüm vakaların yaklaşık% 100 tarayıcı kabul-dili başlığı mevcut ve yeterli olacaktır.

Ve her zaman kullanıcıya başka bir dile geçmek için seçenek sunmak.

Sadece dışında yurt dışında bir yabancının basit davadan, nasıl Hollandalı ve Alman onlar Fransızca konuşan Belçika dili, belirliyorsunuz? (Belki de bu sadece felsefi davanızı için geçerli, ama değil. :)).

Evet Google bu ve can sıkıcı dreaking yapar ... bunu yapmayın lütfen .. Ben her zaman benim tarayıcıdan yerine ingilizce birini thai versiyonu olsun.

Tarayıcıdan http başlıkları kullanın.

Belki de bu yardımcı olacaktır: www.countryipblocks.net

Muhtemelen IP coğrafi kodlama veritabanı çeşit kullanmak isterdim (example).

IP dil seçenek birine aralıkları dönüştürmek varsayarsak, (yukarıdaki bütün yanıtlar) Bu yapabilirdi: Bu formun bir ilişkisel dizi saklanan uygulamalarda tüm mesajlar var.

$MESSAGES[$USER_LANGUAGE][$msgId]

burada $USER_LANGUAGE, Çince, Japonca, ya da İngilizce (veya başka eşdeğer numaralama) olabilir. $msgId "login.successful", "login.fail" vs gibi şeyler olabilir nerede Hiç hardcoded dizeleri gösterilecek {[(1 kullanarak değişken için bir başvuru yapmazlar kullanıcıya mesajları görüntülemek )]}.

Bir global değişken olarak erişebilirsiniz VEYA bir parametre olarak $ MSGID alır ve mesaj döndüren bir fonksiyon yaratalım, $USER_LANGUAGE ilk kez ayarlanmış olan (aynı zamanda global bir değişken olabilir kullanıcı) geliyor.

veri yapısı için belki de ISO-3166-1 ülke kodu ile girmek, PHP için MaxMind geoip modülünün (http://www.maxmind.com/app/php) bakabilirsiniz hangi {[(0)] } döner.