(16) 981791110 contato@policast.studio

O que é o sistema de internacionalização do Symfony?

O sistema de internacionalização do Symfony é um conjunto de recursos e ferramentas que permitem criar aplicativos para suportar múltiplos idiomas.

Como criar uma aplicação multilíngue com Symfony?

Para criar uma aplicação multilíngue com o Symfony é necessário seguir alguns passos básicos. O primeiro passo é habilitar o suporte a traduções na configuração do Symfony. Para isso, adicione a configuração a seguir ao arquivo config.yml:

# config/config.yml
framework:
translator: { fallbacks: ['%locale%'], paths: ['%kernel.project_dir%/translations'] }

O próximo passo é criar um diretório translations (traduções) no diretório raiz do projeto, este diretório conterá os arquivos .xlf ou .yml que contém as traduções para todas as outras línguas.

Supondo que você queira adicionar a tradução em Português, crie um arquivo messages.pt_BR.yml na pasta translations com o seguinte conteúdo:

messages:
welcome_message: Bem-vindo ao meu aplicativo!

Para utilizar esta tradução, basta carregar o serviço de tradutor e obter a tradução utilizando o método trans(). Por exemplo:

use SymfonyComponentTranslationTranslatorInterface;

class MyController extends Controller
{
public function index(TranslatorInterface $translator)
{
$message = $translator->trans('messages.welcome_message');
return $this->render('index.html.twig', ['message' => $message]);
}
}

Agora, se o usuário estiver usando o idioma PT-BR, verá a mensagem “Bem-vindo ao meu aplicativo!” e se estiver em outro idioma, verá a mensagem padrão definida no arquivo config.yml.

Como alterar o idioma da aplicação?

Para alterar o idioma da aplicação, basta alterar o valor da variável $locale de acordo com o idioma desejado. Por exemplo:

$request->setLocale('pt_BR');

Com isso, a aplicação começará a utilizar as traduções do arquivo messages.pt_BR.yml.

Outra opção é definir o idioma padrão para toda a aplicação definindo o valor da variável ‘locale’ no arquivo config.yml.

# config/config.yml
parameters:
locale: en_US

Nesse caso, todas as traduções serão carregadas a partir do arquivo messages.en_US.yml.

Como criar traduções para mensagens definidas em templates Twig?

Para criar traduções para mensagens definidas em templates Twig, basta utilizar o filtro trans do Twig. Por exemplo:

{{ 'Welcome to my app!'|trans }}

Este filtro irá procurar a tradução da mensagem ‘Welcome to my app!’ no arquivo messages.xx_YY.yml correspondente ao idioma definido na variável $locale ou no idioma padrão da aplicação.

No caso de haver variáveis dentro da mensagem a serem traduzidas, estas podem ser passadas como argumentos adicionais para o filtro trans. Por exemplo:

{{ 'Hello %name%'|trans({'%name%': user.name}) }}

Neste caso, a variável user.name será substituída no momento da tradução.