Можно, но все по большей части зависит от CMS движка вашего сайта, если вы занимаетесь изобретением велосипеда, тогда вот вам с ходу набросанная реализация того, о чем вы говорите:
class Language
{
var $language = null;
public function __construct()
{
if (($list = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']))) {
if (preg_match_all('/([a-z]{1,8}(?:-[a-z]{1,8})?)(?:;q=([0-9.]+))?/', $list, $list)) {
$this->language = array_combine($list[1], $list[2]);
foreach ($this->language as $n => $v)
$this->language[$n] = $v ? $v : 1;
arsort($this->language, SORT_NUMERIC);
}
} else $this->language = array();
}
public function getBestMatch($default, $langs)
{
$languages=array();
foreach ($langs as $lang => $alias) {
if (is_array($alias)) {
foreach ($alias as $alias_lang) {
$languages[strtolower($alias_lang)] = strtolower($lang);
}
}else $languages[strtolower($alias)]=strtolower($lang);
}
foreach ($this->language as $l => $v) {
$s = strtok($l, '-'); // убираем то что идет после тире в языках вида "en-us, ru-ru"
if (isset($languages[$s]))
return $languages[$s];
}
return $default;
}
}
Вот таким образом уже будете использовать:
// Определяем для кого будет выбираться русский язык
$site_langs = array('ru' => array('ru', 'be', 'uk', 'ky', 'ab', 'mo', 'et', 'lv'));
// Опеределяем язык пользователя и выбираем нужный для сайта
$user_lang = new Language();
$current_lang = $user_lang->getBestMatch('de', $site_langs);
// Отправляем пользователя на нужный язык для его локали.
if ($user_uri == '/') {
if ($current_lang != 'de') {
header("Location: http://site.de/" . $current_lang . "/");
}
}