指定Laravel验证语言

时间:2016-03-28 22:31:47

标签: validation laravel localization laravel-5.1

是否可以告诉Laravel验证器使用哪种语言进行验证?

我有一个应用程序,其文本为英文,但对于某些表单,我需要使用其他语言返回字段的验证错误。

我研究了一下,发现我可以使用\App::setLocale('ro')设置应用程序的语言,因此resources/lang/ro/validation.php下的文件将用于验证,但我不想与setLocale发脾气。在最糟糕的情况下,我可以使用它来调整并在验证之前更改语言,并在验证之后将其更改回来,但它似乎不是一个好的解决方案。

我正在寻找更像这样的东西:

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

2 个答案:

答案 0 :(得分:1)

如果您可以选择自定义验证器,则可以设置验证器转换器的区域设置:

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

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

$this->validateWith($validator);

答案 1 :(得分: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();
}