Laravel - 验证本地化并不起作用

时间:2014-09-25 14:12:34

标签: validation laravel laravel-4 laravel-validation

每当我使用trans()函数从validation.php文件返回特定的翻译时,它就能完美地运行。我的应用程序中有两种语言,两种语言都会返回。

但是,每当我使用Laravel验证器时,它只返回默认语言环境中的消息。我需要在验证器中指定一些内容吗?如何使它适用于这两种语言?

3 个答案:

答案 0 :(得分:0)

您需要将翻译作为第3个参数传递。我们假设您已经定义了您的字段,规则和验证器,如下面的代码所示:

$data = Input::only('title');
$rules['title'] = 'required|min:20|max:80',
$validator = Validator::make($data, $rules,
            Lang::get('forms.validation.entry'));

现在您需要定义翻译。我们假设您需要fr lang的翻译,因此您需要共同创建lang/fr/forms.php文件并将以下内容放入其中:

<?php

return

array (
  'validation' => array (
     'entry' => array (
         'title.required' => 'Your translation for title required',
         'title.min' => 'Your translation for title min',
         'title.max' => 'Your translation for title max',
      )
  )
);

当然你可以用更简单的数组创建文件,但它只是一个例子 - 而不是forms.validation.entry它可以是formsvalidation

答案 1 :(得分:0)

问题源于我的本地化实施。我已将App::setLocale(Session::get('lang'));添加到App::before()文件中的filters.php方法,现在一切正常。

答案 2 :(得分:0)

在resources / lang / en文件夹中laravel具有validation.php。创建新语言时,可以将该文件复制到新创建的语言文件夹中,然后将其编辑为该语言。

例如,您想创建fr语言

/resources/lang/fr/validation.php and translate it to this language