2012-10-28 10 views
8

I TranslationServiceProvider mit YAML registriert und es funktioniert gut:Silex Übersetzung nicht mehr funktioniert, wenn die Überprüfung registriert ist

$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; 
})); 

Dann melde ich mich ValidationServiceProvider wie folgt aus:

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

Wenn ich Validation registrieren, Übersetzung funktioniert nicht mehr . Alle Zeichenfolgen, die übersetzt werden sollen, werden nicht fehlerfrei übersetzt. I locale in dem countroller bin zu ändern, so könnte es etwas damit zu tun hat:

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

Dies könnte ein Fehler sein und ich habe eine Idee, wie Sie es beheben können. Können Sie dem 'fabpot/silex' Repo auf GitHub einen fehlgeschlagenen Testfall senden? – igorw

+0

@igorw Ich konnte das Problem bei einer Neuinstallation mit nur registrierten Validierungs-, Übersetzungs- und Zweigdiensten nicht reproduzieren. Ich denke nicht, dass es ein Fehler ist. Soll ich noch melden? – leemour

+0

Nur wenn Sie einen reproduzierbaren Testfall haben. – igorw

Antwort

0

So, alle Dienste (von Dienstleistern) Paradiese Laufzeit bekommen, bevor Wunsch Prozess erstellen. Und wenn das echte Gebietsschema nicht angezeigt wird, erhält der Übersetzer das Ersatzgebietsschema.

Problem: Sie können Gebietsschema in Runtime nicht ändern, da das Gebietsschema eine Variable ist und nicht als Link dargestellt wird (wenn das Gebietsschema ein Objekt ist, können Sie das Gebietsschema ändern).

Lösung: Change/Set Gebietsschema auf Anfrage Abonnenten.

Verwandte Themen