Boa noite pessoal, estou com uma dúvida aqui e tá irritando porque não entendo…hehe
no controller está assim:
Yii::t('fs','Unable to create the directory "{dir}" to disk. The "{parent}" does not appear to be writable.',array('{dir}'=>$path, '{parent}'=>$parent));
dentro de protected/messages criei o diretório pt_br (no core eu copiei o pt pra pt_br)
e criei o arquivo fs.php
ficou protected/messages/pt_br/fs.php
o arquivo fs.php assim :
<?php
return array (
'Unable to create the directory "{dir}" to disk. The "{parent}" does not appear to be writable.'=>'Impossível criar o diretório "{dir}" no servidor. O "{parent}" parece não ter permissão de escrita.',
);
?>
e em config/main.php está:
‘sourceLanguage’ => ‘pt_br’,
as mensagens do yii, exibem em portugues corretamente.
essa mensagem customizada/personalizada só a string em inglês que passei no parametro
Eu já olhei esse tópico. Mas o problema não é com as mensagens do yii. Essas funcionam sem problemas.
Eu andei lendo os fontes, mas to achando muito estranho… se eu definir a linguagem lá no main.php ele não vai traduzir essas mensagens personalizadas… pra traduzir eu teria que usar o quinto param em t() e definir o idioma
se eu defino em componentes no config.main.php em CMessageSource translate() ele verifica se é diferente os idiomas pra traduzir, logo como é igual ele não traduz. É igual pois o sourceLanguage está definido em pt_br
Então pra funcionar eu tenho que escrever as mensagens no idioma que eu definir no main.php e criar a tradução do português para o inglês no caso?
É isso?
Porque a aplicação serão em 3 idiomas, logo intuitivamente eu pressupunha que mantinha tudo em ingles, definiria a principal que é portugues lá no main, manteria o padrão no aplicativo com as mensagens originais em ingles, e passaria por session a seleção do usuário se é inglês/português/espanhol…
Ou então, pra funcionar a forma "gambiarrística" de alterar no core :S
ai funcionaria, se adicionar no array principal, ai funciona como eu achava que deveria fazer, lá traduz para o português e o espanhol sem problemas. Desde que eu mantenha a mensagem em inglês.
ao invés de copiar pra não perder mensagens caso faça uma atualização no framework
<?php
return CMap::mergeArray(
require(Yii::getFrameworkPath().'/messages/pt_br/yii.php'),
array(
'{file} exists in directory.'=>'{file} já existe no diretório.',
'Unable to create the directory "{dir}" to disk. The "{parent}" does not appear to be writable.'=>'Impossível criar o diretório "{dir}" no servidor. Talvez "{parent}" não tenha permissão de escrita.',
'You do not have permission to perform this operation or access "{resource}"'=>'Você não tem permissão para acessar ou executar "{resource}"' ,
)
);
?>
resolvi fazer o mergê, e colocar no arquivo yii.php em protected/messages mesmo… mas se mudar a categoria em t(), o primeiro parametro, ele não busca está buscando no arquivo como fala na documentação.
Mesmo assim obrigado por quem tentou ajudar… Quando tiver tempo, vou ver o porque só carrega quando é o yii.php
Olha, nunca usei mensagens personalizadas exceto as do core do Yii.
Porém, pelo que sei, o primeiro parametro do Yii:t é referente à categoria da mensagem. Se vc alterou o arquivo em pt-br, entao vc está adicionando uma mensagem na categoria ‘yii’, logo, o comando deveria ser
Yii::t('yii','Unable to create the directory "{dir}" to disk. The"{parent}" does not appear to be writable.',array('{dir}'=>$path,'{parent}'=>$parent));
Se vc deseja fazer mensagens especificas para seu sistema, vc deve criar um arquivo chamado ‘fs’ em app/messages e lá adicinar seu trecho de codigo (aí vc pode usar a categoria como ‘fs’)
Reforçando, é o que li pelo forum, talvez eu esteja enganado em alguma parte, mas é por aih