Arquivos JavaScript internacionalizados no CodeIgniter

Existem muitos motivos pelos quais as strings nos arquivos JavaScript precisam estar no idioma do usuário.

O CodeIgniter tem sua própria biblioteca i18n, porém ela pode ser usada apenas em PHP. A solução para arquivos JavaScript internacionalizados é um analisador de arquivos.

Basta criar um novo controlador (em / aplicativo / controladores) com o nome que desejar (ou seja, JSLoader):

class JSLoader extends CI_Controller {
function __construct() {
parent
::__construct();
$this
->load->helper('file');
}
public function file($file = null){
if (!$file) {
header
('HTTP/1.1 404 Not Found');
return;
}
$contents
= read_file('./javascripts/' . $file);
if (!$contents) {
header
('HTTP/1.1 404 Not Found');
return;
}
$contents
= $this->parse_variables($contents);
echo $contents
;
}

private function parse_variables($text) {
preg_match_all
("/[@{0,1}[a-zA-Z0-9_]+[s]*[a-zA-Z0-9_]*]/",$text, $matches, PREG_PATTERN_ORDER);
foreach ($matches[0] as $match) {
$varname
= str_replace('[', '', $match);
$varname
= str_replace(']', '', $varname);

$lang_value
= lang($varname); // get value from lang file

$value
= ($lang_value ? $lang_value : $varname);

if ($value) {
$text
= str_replace($match, $value, $text);
}
}
return $text;
}
}

O código acima irá pesquisar seus arquivos JavaScript por strings encapsuladas entre colchetes ([…], isto é, [VAR1], [VAR2]). Essas variáveis, junto com as chaves, serão substituídas pelo valor fornecido no arquivo de idioma ativo.

// This will display an alert window,  
// having as text the value of
// $lang['HELLO_MESSAGE'] variable
// in your CodeIgniter language file.
function someJavascriptMethod() {
alert
('[HELLO_MESSAGE]');
}

Você pode então carregar arquivos JavaScript em suas visualizações html fazendo referências ao seu novo controlador:

<script type="text/javascript" src="<?php echo site_url('jsloader/my_javascript_file.js" />