Symfony 2.3, el libro oficial

15.1. Configurando

La traducción se realiza mediante un servicio llamado translator que utiliza la configuración regional del usuario para buscar y devolver los mensajes traducidos. Antes de usarlo, habilita el servicio translator en tu configuración:

# app/config/config.yml
framework:
    translator: { fallback: en }
<!-- app/config/config.xml -->
<!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:framework="http://symfony.com/schema/dic/symfony"
    xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
                        http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">

    <framework:config>
        <framework:translator fallback="en" />
    </framework:config>
</container>
// app/config/config.php
$container->loadFromExtension('framework', array(
    'translator' => array('fallback' => 'en'),
));

La opción fallback define la configuración regional que se utiliza por defecto cuando no está disponible la configuración regional del usuario.

El locale utilizado en las traducciones es el que se encuentra almacenado en la petición del usuario. Normalmente su valor se configura con el parámetro especial _locale de las rutas.