Symfony2 – Traduções # 1

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');
}