// Forms
$app->register(new FormServiceProvider());
$app->register(new Silex\Provider\ValidatorServiceProvider());
// Locale
$app->register(new Silex\Provider\TranslationServiceProvider(), array(
'locale' => 'en',
'locale_fallback' => 'en'
));
$app['translator']->addLoader('yaml', new Symfony\Component\Translation\Loader\YamlFileLoader());
$app['translator']->addResource('yaml', $app['root_dir'] .'/config/poseidon/locales/en.yml', 'en');
$app['translator']->addResource('yaml', $app['root_dir'] .'/config/poseidon/locales/validators.en.yml', 'en', 'validators');
これは私の index.php の一部です。メッセージ ドメインは問題ありませんが、バリデータ ドメインはそうではありません。これは、xlf ファイルのデフォルトのフォーム変換が、読み込んでいる yml ファイルが適用されないことを意味するためです。
たとえば、xlf ファイルを編集して削除すると、次のようになります。
この値を空白にすることはできません。
次に、私のymlファイル:
# validators.en.yml
This value should not be blank.: This is a required field
ロードされ、このキーがバリデータ配列に追加されます。ただし、これらのデフォルトの xlf ファイルがロードされている限り、私の yaml ファイルからバリデータの翻訳ドメインを上書きすることはできません。
なぜこれが起こっているのかについて私は考えていないので、どんな助けもいただければ幸いです。ありがとう。
編集:
これは実際には私が考えていたものとは逆で、次のように付け加えました。
echo $app['translator']->trans(
'This value should not be blank.',
array(),
'validators'
);
トランスレーターがリソースを追加し、期待される結果を得た直後。これは、FormServiceProvider がロードされているときに、デフォルトの xlf ファイルが、メッセージ カタログ バリデーター ドメインに現在存在するものを上書きするものであることを意味します。
したがって、これを防ぐ方法を誰かが知っていれば、それは素晴らしいことです。