Symfony2 – O milagre da tradução

Muitas vezes, quando o projeto está quase pronto, o cliente traz a você uma solicitação de mudança e diz:

“Esquecemos as versões de idioma, então haverá 4 delas para todo o site”

O orçamento está queimado. É tarde da noite. Você precisa de um milagre.

O tutorial do milagre começa aqui:

Instale:
http://jmsyst.com/bundles/JMSI18nRoutingBundle

e

http://jmsyst.com/bundles/JMSTranslationBundle

Basta adicionar esses dois ao seu arquivo composer.json:

#composer.json
"require": {
"jms/i18n-routing-bundle": "dev-master",
"jms/translation-bundle": "1.1.*"
}

execute o:

$php composer.phar update

Habilite os conjuntos em seu AppKernel.php

$bundles = array (
...
new JMSI18nRoutingBundleJMSI18nRoutingBundle(),
new JMSTranslationBundleJMSTranslationBundle(),
);

Edite o seu config.yml:

jms_i18n_routing:
default_locale
: pl
locales
: [de, en, pl]
strategy
: prefix_except_default

Puf!

Então, agora você tem 3 idiomas habilitados em seu site. Verifique apenas inserindo seu projeto com o prefixo 🙂acmedemoapp.com/en

olhe para a:

php app/console router:debug

Puf!

Tantas rotas localizadas! YAY!

Ok, mas ainda tenho apenas uma tradução de mensagens.

Extraia string para traduções de seu código!

ekhm … Eu não consigo obter texto cara.

Puf!

Use o comando do symfony luke!
~ Mestre Yoda

Bem desse jeito:

$php app/console translation:extract pl --bundle=AcmeDemoBundle --enable-extractor=jms_i18n_routing --output-format=yml --exclude-dir=Tests

Não vai eu estou usando o behat e dá um erro.

Adicione isso:

--exclude-dir=Features

Repita isso para todos os seus pacotes.

Puf!

Você pode enviar o arquivo de traduções para o cliente. Eles cuidarão do resto!