如何使用您的打包语言覆盖Laravel的语言文件

时间:2019-01-11 11:15:25

标签: laravel package translation

我正在尝试使用我的软件包中的语言覆盖resources/lang/en下的默认laravel英语软件包。

该软件包只是将自己的语言文件发布到例如resources/lang/vendor/*package-name*/de,其中包含与laravel标准lang文件相同的文件,例如validation.phpauth.php

有没有办法告诉Laravel使用这些软件包翻译?

1 个答案:

答案 0 :(得分:3)

documentation

  

通常使用   双冒号语法。

在将翻译内容加载到包的服务提供商的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');

并假设您包的验证文件返回的是键-值对数组,这应该可以解决问题。