laravel - 如何用你的包语言覆盖 Laravel 的语言文件
问题描述
我正在尝试resources/lang/en
用我的包中的语言覆盖默认的 laravel 英语语言包。
该软件包只是将自己的语言文件发布到 egresources/lang/vendor/*package-name*/de
并且其中包含与 laravel 标准 lang 文件相同的文件,例如validation.php
or auth.php
。
有没有办法告诉 Laravel 使用这些包翻译?
解决方案
从文档中,
包翻译文件通常使用双冒号语法引用。
在你的包的服务提供者boot
方法中加载你的翻译时,你需要告诉 Laravel 它的位置。所以假设你的包的名字是acme
,你会有这样的东西。
public function boot()
{
$this->loadTranslationsFrom(__DIR__.'/path/to/translations', 'acme');
}
然后加载翻译,你会做这样的事情:
trans('acme::file.line');
编辑:如果您想提供自定义验证消息,您需要在您的表单请求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');
并假设您的包的验证文件正在返回一个键值对数组,这应该可以解决问题。
推荐阅读
- python - 使用 PythonScript 将 Maya 显示层设置为关闭
- numpy - 如何在纯 Python 中创建直方图?
- sql - 如何将数组 json 列中的值提取到 Postgresql 中的多行中?
- reactjs - React Enzyme 测试:找不到 react-redux 上下文值;请确保组件被包裹在一个
- windows - `path %path:"=%` 在批处理文件中有什么作用?
- python - 如果循环中有另一个元素要迭代,则无法迭代范围。这是为什么?
- express - 如何抑制快递:路由器日志?
- unity3d - 我需要使用 HTC Vive Cosmos Elite 测试 VR Unity 项目 - 但我们正在为 Quest 进行开发。我可以做些什么来区分这两者吗?
- azure-devops - 运行 databricks 工作区 import_dir 的 Azure 管道问题
- react-native - 新的 AbortController() 返回空对象