use Symfony\Component\Translation\Loader\YamlFileLoader;
$app->register(new Silex\Provider\TranslationServiceProvider(), array(
'locale_fallbacks' => array('es','en','fr', 'pt'),
));
$app['translator'] = $app->share($app->extend('translator', function($translator, $app) {
$translator->addLoader('yaml', new YamlFileLoader());
$translator->addResource('yaml', __DIR__.'/locales/es.yml', 'es');
$translator->addResource('yaml', __DIR__.'/locales/en.yml', 'en');
$translator->addResource('yaml', __DIR__.'/locales/fr.yml', 'fr');
$translator->addResource('yaml', __DIR__.'/locales/pt.yml', 'pt');
return $translator;
}));
$app->match('/{_locale}/form_add_compra', 'diclases\CUsuarios::formAddCompra')
->bind('form_add_compra');
FormAddCompra.twig:
<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'en'})) }}">Ing</a>
<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'fr'})) }}">Fran</a>
<a href="{{ path(app.request.get('_route'), app.request.get('_route_params')|merge({'_locale': 'pt'})) }}">Port</a>
{% if (app.request.locale == "es") %}
...
{% endif %}
En public/locales/es.yml: (no hace falta comillas ni nada)
lunes: lunes
martes: martes
miercoles: miércoles
jueves: jueves
mensaje: Bienvenido a mi página web
En public/locales/en.yml: (no hace falta comillas ni nada)
lunes: monday
martes: tuesday
miercoles: Wednesday
jueves: Thursday
mensaje: Welcome my site web
Para llamarlo desde un twig:
{{'mensaje'|trans}}
Forzar desde el controller un idioma (aunque no es habitual):
$app['locale'] = "fr";

No hay comentarios:
Publicar un comentario