// 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文件不適用。沒有從Yaml設置Silex表單驗證器翻譯
例如,如果我編輯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文件是覆蓋消息目錄驗證器域中當前存在的文件。
所以,如果有人知道如何防止這樣做會很好,謝謝。