【问题标题】:Laravel - validation localization doesn't workLaravel - 验证本地化不起作用
【发布时间】:2014-11-20 08:37:16
【问题描述】:

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

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

【问题讨论】:

    标签: validation laravel laravel-4 laravel-validation


    【解决方案1】:

    您需要将翻译作为第三个参数传递。假设您已经在以下代码中定义了字段、规则和验证器:

    $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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        例如你想创建 fr 语言

        .

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-21
          • 2017-02-28
          • 2016-05-11
          • 1970-01-01
          • 2018-06-19
          • 2021-08-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多