// 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 文件会覆盖消息目录验证器域中当前存在的文件。
因此,如果有人知道如何防止它这样做,那就太好了,谢谢。