ccc

silex: Idiomas

index.php:

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