Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos!
Estou com um problema em uma função chamada "txt" que traduz utilizando um arquivo externo de acordo com endereço gerado na sessão. A sessão retorna "pt" ou "en" de acordo com a escolha do usuário. O problema é: Ele está traduzindo apenas a primeira coisa! Por exemplo: o menu é a primeira coisa que aparece no site, ele tem 5 itens, ou seja, apenas o primeiro item é traduzido, o resto fica como foi escrito na função (echo txt("uma_coisa"); // ele vai retornar "uma_coisa").
Segue o código da função (translator.php):
<?php
function txt($text){
// Recuperando o idioma da sessao.
$lang = isset($_SESSION['lang'])?$_SESSION['lang']:'';
if (!empty($lang))
{
// Carrega o array de mapeamento de textos.
$mapping = require_once ''.$lang.'.php';
return isset($mapping[$text])?$mapping[$text]:$text;
}
return $text;
}
?>
segue, por exemplo, o arquivo en.php:
<?php
return array(
// Index
'trans_ideias' => 'Making your idea a reality.',
'ts' => 'Test',
// Menu
'QUEM SOMOS'=>'ABOUT US',
'CLIENTES'=>'OUR CLIENTS',
'PARCEIROS'=>'OUR PARTNERS',
'CONTATO'=>'CONTACT'
);
?>
E o arquivo que é incluso no site, que irá chamar a função, iniciar sessão, etc (trad.php):
<?php
session_start();
include 'translator.php';
// Conferindo GET de tradução. Aceitar apenas "pt" e "en".
if(($_GET['idioma'] == 'pt') || ($_GET['idioma'] == 'en')){
$_SESSION['lang'] = $_GET['idioma'];
}
// Padronizando sessão.
if(!isset($_SESSION['lang'])){
$_SESSION['lang'] = 'pt';
}
// Variaveis de pastas de arquivos. Separados para organização.
if($_SESSION['lang'] == 'pt'){
$tr = 'pt';
$tr2 = 'en';
} else {
$tr = 'en';
$tr2 = 'pt';
}
// Teste exibição
echo "<br/>".txt('trans_ideias');
echo "<br/>".txt('ts');
/* <a href='?idioma=<?php echo $tr2; ?>'>trad</a> */
?>
Muito obrigado!
Carregando comentários...