[英]How to override JSON translations for a Laravel package?
我为Laravel> = 5.4构建了一个验证包 ,它使用JSON转换文件作为验证消息 。
我想让应用程序覆盖该消息翻译。
Laravel为trans()
提供了命名空间 。 但是,看起来只有常规的.php
转换才允许使用命名空间。
我无法通过JSON翻译来实现。
目前, 这是我返回验证消息的方式 :
public function message($message, $attribute, $rule, $parameters)
{
return __('The domain for :attribute is not allowed. Please use another email address.', ['attribute' => $attribute]);
}
这就是我在Service Provider中加载翻译文件的方式 :
public function boot()
{
$this->loadJSONTranslationsFrom(__DIR__.'/../../../lang', 'email-domain-blacklist');
$this->publishes([
__DIR__.'/../../../lang' => resource_path('lang/vendor/email-domain-blacklist'),
]);
$this->publishConfig();
// Add custom validation rules
Validator::extend('blacklist', "Alariva\EmailDomainBlacklist\Validator@validate");
// Add custom validation messages
Validator::replacer('blacklist', "Alariva\EmailDomainBlacklist\Validator@message");
}
如果我发布翻译文件并在resources/lang/vendor/email-domain-blacklist/*.json
更改,那么我将看不到任何更改,因为该软件包将从vendor/
的软件包目录加载翻译。
如果我从应用程序级别加载了翻译,我将要求应用程序始终发布翻译文件以正确加载它们。 我想避免这一额外步骤。
哪种方法可以解决这个问题?
我将进行相应的编辑以提供尽可能清晰的信息。
提前致谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.