2012-10-28 7 views
8

ho registrato TranslationServiceProvider con YAML e funziona benissimo:traduzione Silex smette di funzionare quando la convalida è iscritto

$app->register(new TranslationServiceProvider(), array(
    'locale_fallback' => 'ru', 
)); 

$app['translator'] = $app->share($app->extend('translator', function($translator, $app) { 
    $translator->addLoader('yaml', new YamlFileLoader()); 
    $translator->addResource('yaml', CONTENT_PATH . '/locales/en.yml', 'en'); 
    return $translator; 
})); 

Poi mi registro ValidationServiceProvider come questo:

$app->register(new Silex\Provider\ValidatorServiceProvider()); 

Quando mi registro di convalida, Traduzione smette di funzionare . Tutte le stringhe che devono essere tradotte non vengono tradotte senza errori. sto cambiando locale nel countroller, quindi potrebbe avere qualcosa a che fare con esso:

$en->get('/{slug}', function (Silex\Application $app, $slug) { 
    $app['locale'] = 'en'; 
+3

Questo potrebbe essere un bug e ho un'idea su come risolverlo. Puoi inviare un caso di test in errore al repo 'fabpot/silex' su github? – igorw

+0

@igorw Non è stato possibile riprodurre il problema su un'installazione pulita con solo i servizi di convalida, traduzione e twig registrati. Non penso che sia un bug. Devo ancora segnalare? – leemour

+0

Solo se si dispone di un caso di test riproducibile. – igorw

risposta

0

Quindi, tutti i servizi (da fornitori di servizi) ottengono locali in fase di esecuzione, prima richiesta, in creare processo. E, se non viene presentata la localizzazione reale, il traduttore ottiene il locale di fallback.

Problema: non è possibile modificare le impostazioni internazionali in runtime, perché le impostazioni locali sono una variabile e non vengono presentate come collegamento (se le impostazioni internazionali saranno oggetto, è possibile modificare le impostazioni internazionali).

Soluzione: Modifica/Imposta locale su richiesta sottoscrittore.

Problemi correlati