laravel自定义验证器消息从另一个位置转换

时间:2018-06-10 16:20:18

标签: laravel

如何从resources/lang/*/validation.phpvendor/package/src/translation/*/validation.php以外的其他位置加载翻译?

我在路径vendor/package/src/translation/*/validation.php上创建了翻译文件:

<?php

return [

    'custom' => [
        'search_text' => [
            'string' => 'A nice message.',
            'not_regex' => 'Regex failed.',
        ],
    ],
   'attributes' => [
       'search_text' => 'Search text',
   ],
];

我在服务提供商中启动了自己的Validator:

$this->app->validator->resolver( function( $translator, $data, $rules, $messages = array(), $customAttributes = array() ) {
        return new MyValidator( $translator, $data, $rules, $messages, $customAttributes );
    } );

我创建了ofc验证器类。但我不知道如何将自定义位置的验证器和转换连接起来。如果两个文件中都出现任何交集,则自定义文件应该重载输出。 感谢帮助。 :)

1 个答案:

答案 0 :(得分:0)

如果您的软件包包含翻译文件,您可以使用loadTranslationsFrom方法通知Laravel如何加载它们,并将以下内容添加到您的服务提供商的引导方法中:

public function boot()
{
    $this->loadTranslationsFrom(__DIR__.'/path/to/translations', 'name');
}

使用package::file.line语法约定引用包翻译。

echo trans('name::file.line');