Как определить язык пользователя в данном случае?

Написал класс определения языка пользователя:
namespace engine\classes;

class language{
	public static $userLang;

        public function init(){
		$langArray = array('ua', 'ru', 'en');//возможные языки
		if(!empty($_GET['lang']) && in_array($_GET['lang'], $langArray)){//если введен язык и он есть в массиве
				setcookie('lang', $_GET['lang'], time()+3600, '/', DOMEIN);
			self::$userLang = $_GET['lang'];
		}elseif(!empty($_COOKIE['lang']) && in_array($_GET['lang'], $langArray)){//если есть кука с языком и она есть в массиве
			self::$userLang = $_COOKIE['lang'];
		}elseif(empty($_GET['lang']) && empty($_COOKIE['lang'])){//если языка не введено и кука пуста
			$browserArray = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
			if(in_array($browserArray, $langArray)){
				setcookie('lang', $browserArray, time()+3600, '/', DOMEIN);
				self::$userLang = $browserArray;
			}else self::$userLang = DEFAULT_LANG;
		}else self::$userLang = DEFAULT_LANG;//если не один из способов не подошел
	}
}

Мб кто-то посоветует, как это сделать короче?
  • Вопрос задан
  • 2607 просмотров
Решения вопроса 1
abler98
@abler98
Software Engineer
<?php
$lang = !empty($_GET['lang']) ? $_GET['lang'] : (!empty($_COOKIE['lang']) ? $_COOKIE['lang'] : substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
$lang = in_array($lang, $langArray) ? $lang : DEFAULT_LANG;
setcookie('lang', $lang, time() + 3600, '/');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы