我为Laravel> = 5.4构建了a validation package,它使用JSON转换文件作为验证消息。
我想让应用程序覆盖该消息翻译。
Laravel provides namespacing代表trans()
。但是,看起来只有常规的.php
转换才允许使用命名空间。
我无法通过JSON翻译实现这一点。
当前,this is how I'm returning the validation message:
public function message($message, $attribute, $rule, $parameters)
{
return __('The domain for :attribute is not allowed. Please use another email address.', ['attribute' => $attribute]);
}
这就是我loading the translation files in 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/
内的软件包目录中加载翻译。
如果我从应用程序级别加载了翻译,我将要求应用程序始终发布翻译文件以正确加载它们。我想避免执行此额外步骤。
哪种方法可以解决这个问题?
我将进行相应的编辑以提供尽可能清晰的信息。
谢谢。
答案 0 :(得分:0)