我正在尝试使用我的软件包中的语言覆盖resources/lang/en
下的默认laravel英语软件包。
该软件包只是将自己的语言文件发布到例如resources/lang/vendor/*package-name*/de
,其中包含与laravel标准lang文件相同的文件,例如validation.php
或auth.php
。
有没有办法告诉Laravel使用这些软件包翻译?
答案 0 :(得分:3)
通常使用 双冒号语法。
在将翻译内容加载到包的服务提供商的boot
方法中时,您需要将其位置告知Laravel。因此,假设您的包裹名称为acme
,您将得到类似这样的信息。
public function boot()
{
$this->loadTranslationsFrom(__DIR__.'/path/to/translations', 'acme');
}
然后加载翻译,您将执行以下操作:
trans('acme::file.line');
编辑:如果要提供自定义验证消息,则需要在Form Request中添加messages()
方法。例如:
public function messages()
{
return [
'field' => trans('acme::validation.field')
];
}
如果您手动创建Validator实例,则可以执行以下操作:
$messages = [
'field' => trans('acme::validation.field')
];
$validator = Validator::make($input, $rules, $messages);
编辑:由于resources/lang/en/validation.php
包含一组键值对,因此您可以将文件内容替换为:
<?php
return trans('acme::validation');
并假设您包的验证文件返回的是键-值对数组,这应该可以解决问题。