2016-03-28 53 views
0

是否可以告訴Laravel驗證程序驗證使用哪種語言?指定Laravel驗證語言

我有一個應用程序,其中有英文文本,但對於某些表單,我需要用不同語言返回的字段的驗證錯誤。

我研究了一點,發現我可以只使用\App::setLocale('ro')設置應用程序的語言,因此resources/lang/ro/validation.php下的文件將被用於驗證,但我不想與setLocale錘鍊。在最壞的情況下,我可以對它進行調整,並在驗證之前更改語言,並在驗證再次將其更改後重新使用,但似乎並不是一個好的解決方案。

我期待更多的東西是這樣的:

$this->validate($request, [ 
    'title' => 'required', 
    'short' => 'required', 
], 'lang_that_I_set_in_DB'); 

回答

0

我做圖這一點,感謝給我指針!

這是它的外觀在Laravel 5.1:

$validator = \Validator::make($request->all(), [ 
    'title' => 'required', 
    'short' => 'required', 
]); 

$validator->getTranslator()->setLocale('ro'); 

if ($validator->fails()) { 
    return redirect() 
     ->back() 
     ->withErrors($validator) 
     ->withInput(); 
} 
1

如果一個自定義的驗證是一個選擇,你可以設置驗證翻譯的語言環境:

$validator = Validator::make($request->all(), [ 
    'title' => 'required', 
    'short' => 'required', 
]); 

$validator->getTranslator()->setLocale('ro'); 

$this->validateWith($validator); 
+0

你能更多地討論這個? getTranslator()是我的自定義驗證器中的自定義方法嗎? –

+1

「自定義驗證器」僅僅意味着您不能直接使用由特性「ValidatesRequests」提供的'validate()'方法。 'Validator :: make()'只返回'\ Illuminate \ Validation \ Validator'的一個實例,所以你可以手動設置譯碼器區域設置。然後你可以使用'ValidatesRequest :: validateWith()'來驗證你的「自定義」Validator實例的請求。我編輯了我的答案來提供這一部分。 – tommy

+0

我也想提一下,當使用Form Request類時,這會有所不同。 – tommy