PHP ile seçim tarayıcı dili algılama

2 Cevap php

I'm trying to implement this code to have different files to load for german, spanish or english browser languages of choice. The case is that with my spanish IE I still get the english file.

<?php 
if (is_home()) {
  if (preg_match('/de-DE/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    include(TEMPLATEPATH . '/german-navbar.php' );
  }
  elseif (preg_match('/es-ES/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    include(TEMPLATEPATH . '/spanish-navbar.php' );
  }
  else {
    include(TEMPLATEPATH . '/english-navbar.php' );
  }
}

I-HTTP_ACCEPT_LANGUAGE hem de kullanılan ve HTTP_USER_AGENT.

Kimse ile, bunu kontrol etmek istiyorsa, bu, sitenin test Alman veya tarayıcıda seçtikleri bir dil olarak İspanyolca: http://paragraphe.org/janette/

Ben ingilizce benim Firefox ve güzel çalışıyor, ama ben kod İspanyolca ve Almanca durumlar için çalıştığından emin olamaz.

I in this SO thread parçacık bulundu, ama ben bu noktada biraz kayıp değilim.

Teşekkürler herhangi bir giriş için bu kadar,

EDIT: kod Firefox (ama IE) çalışır.

2 Cevap

Eğer sahte HTTP_ACCEPT_LANGUAGE için taleplerinin başlıklarını olurdu ama her şeyden önce, siz [(1)] {ile, örneğin, sahte useragents için firefox için User Agent Switcher uzantısını kullanmak ve test edebilirsiniz (ayrıca başlığının yanı sıra kullanıcı ajanları değiştirmek sağlar)} uzatma

oh, ve Almanca çalışmıyor:

Warning: include(/home/paragrap/public_html/janette/wp-content/themes/Janette/german-home.php) [function.include]: failed to open stream: No such file or directory in /home/paragrap/public_html/janette/wp-content/themes/Janette/home.php on line 4

Warning: include() [function.include]: Failed opening '/home/paragrap/public_html/janette/wp-content/themes/Janette/german-home.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/paragrap/public_html/janette/wp-content/themes/Janette/home.php on line 4

Lütfen bunu deneyin:

Sadece bir dizi ('tr', 'de', 'es') olarak $ availableLanguages ​​sağlamak

fonksiyonu get_client_language ($ availableLanguages, $ default = 'tr') {

if (isset($_SERVER['HTTP_ACCEPT_language'])) {

	$langs=explode(',',$_SERVER['HTTP_ACCEPT_language']);

	//start going through each one
	foreach ($langs as $value){

		$choice=substr($value,0,2);
		if(in_array($choice, $availableLanguages)){
			return $choice;

		}

	}
} 
return $default;

}