Symfony2 – Traduções # 1
Se seu aplicativo tiver mais do que localização zero, não é uma má prática usar traduções. Eu prefiro editar um arquivo de tradução em vez de rejuntar modelos e editá-los.
Portanto, em primeiro lugar, você deve informar ao seu aplicativo qual é o idioma padrão. Isso pode ser definido em app / config / config.php. Vamos jogar agora, este idioma é inglês com o código ‘en’
# app/config/config.yml
framework:
default_locale: en
Depois de definir, você deve criar um arquivo de tradução em seu pacote. Você deve criar um arquivo de texto na pasta do pacote /Resources/translations/messages.en.yml
Expressões de tradução de par de chave única
Você pode usar pares de valores-chave únicos em seu arquivo de tradução, que se parece com isto:
expression-id: 'Expression Label'
Isso significa que você usará a ‘expressão-id’ para apontar qual expressão você apresentaria em seu modelo. Neste caso, você pode usar sua tradução em seu controlador desta forma:
# This wil return 'Expression Label'
$this->get('translator')->trans('expression-id');
Você pode fazer o mesmo onde quiser em seu modelo Twig:
# This wil return 'Expression Label'
{{ 'expression-id'|trans }}
Espaços reservados para mensagens
Você pode usar expressões de tradução mais complexas com a implementação de variáveis.
greeting: 'Hello, %name%!'
Neste caso, você pode passar qualquer variável para sua expressão de tradução. Você pode passar quantas variáveis quiser.
O exemplo acima funciona em seu controlador assim:
# This wll return 'Hello, Zoltan!'
$this->get('translator')->trans('greeting ' . 'Zoltan' );
E funciona em seu modelo assim:
# This will return 'Hello, Zoltan!'
{{'greeting'|trans({'%name%': 'Zoltan' }) }}
Então, finalmente, a única coisa que você precisa saber é definir o idioma com a mão no controlador:
use SymfonyComponentHttpFoundationRequest;
public function indexAction(Request $request)
{
$locale = $request->getLocale();
$request->setLocale('en_US');
}