Created
October 23, 2017 22:22
-
-
Save claudiohilario/a16884a3baed8834bcfb7f4272fbcac8 to your computer and use it in GitHub Desktop.
Hook Linguagem em CodeIgniter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* LanguageLoader | |
* | |
* Classe responsável por verificar qual o idioma que está a ser utilizado | |
* e carregar os respetivos ficheiros que se encontram em 'application/language' | |
* | |
* @package Hooks | |
* @author Cláudio Hilário <[email protected]> | |
* @link http://www.ontech.pt | |
*/ | |
class LanguageLoader | |
{ | |
/** | |
* Variavel coorespondente a instância do Codeigniter | |
* | |
* @var array | |
*/ | |
private $CI; | |
public function __construct() | |
{ | |
$this->CI = get_instance(); | |
$this->CI->load->helper('cookie'); | |
} | |
/** | |
* | |
*/ | |
function initialize() | |
{ | |
/** | |
* Algoritmo: | |
* 1. Se cookie lang existe | |
* 1.1. Carrega a linguagem que se encontra no cookie | |
* 2. Se não | |
* 2.1. Deteta idioma do browser | |
* 2.2. Coloca o idioma do browser em lang cookie | |
* 2.3. Carrega a linguagem | |
* | |
*/ | |
$lang = $this->CI->input->cookie('lang', true); | |
// 1. Se cookie lang existe | |
if(!is_null($lang)) | |
{ | |
// 1.1. Carrega a linguagem que se encontra no cookie | |
$this->load_lang($lang); | |
} | |
// 2. Se lang não existe | |
else | |
{ | |
//2.1. Deteta idioma do browser | |
$lang = $this->get_idioma_browser(); | |
// 2.2. Coloca o idioma do browser em lang cookie | |
setcookie('lang',$lang,time()+84000,'/'); | |
// 2.3. Carrega a linguagem | |
$this->load_lang($lang); | |
} | |
} | |
/** | |
* _detetar_idioma_browser | |
* | |
* Permite detetar qual o idioma do browser | |
* @return bool|string | |
*/ | |
private function get_idioma_browser() | |
{ | |
return substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2); | |
} | |
/** | |
* Permite carregar o ficheiros de linguagem | |
* @param $lang | |
*/ | |
private function load_lang($lang){ | |
$this->CI->load->helper('language'); | |
switch ($lang) { | |
case 'en': | |
$idioma = 'english'; | |
break; | |
case 'pt': | |
$idioma = 'portuguese'; | |
break; | |
default: | |
$idioma = 'english'; | |
break; | |
} | |
//Carrega todos os ficheiros de idioma | |
$this->CI->lang->load(array( | |
'calendar', | |
'date', | |
'db', | |
'email', | |
'form_validation', | |
'ftp', | |
'imglib', | |
'migration', | |
'number', | |
'pagination', | |
'profiler', | |
'unit_test', | |
'upload', | |
'gfitness' | |
), $idioma); | |
//Define o idioma a ser utilizado. | |
$this->CI->config->set_item('language', $idioma); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment