我为 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/
.
如果我从应用程序级别加载翻译,我将要求应用程序始终发布翻译文件以便正确加载它们。我想避免这个额外的步骤。
哪个是解决这个问题的优雅方式?
我将相应地进行编辑以提供尽可能多的清晰信息。
提前致谢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句