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" />