Laravel:在闭包中转换验证消息

Laravel:在闭包中转换验证消息,laravel,validation,localization,closures,Laravel,Validation,Localization,Closures,我正在使用Laravel的HTTP请求类来验证一些表单数据。对于某些字段,我需要一个闭包来进行自定义验证 由于我的应用程序有两种本地化(英语和德语),如果验证失败,我需要翻译错误消息,我已经翻译了 我唯一的问题是闭包中的$fail()-消息 这是我根据闭包中的当前本地化来翻译消息的方式: if (app()->getLocale() == 'en') { $fail('Please choose a name for "' .$value. '" in order to contin

我正在使用Laravel的HTTP请求类来验证一些表单数据。对于某些字段,我需要一个闭包来进行自定义验证

由于我的应用程序有两种本地化(英语和德语),如果验证失败,我需要翻译错误消息,我已经翻译了

我唯一的问题是闭包中的
$fail()
-消息

这是我根据闭包中的当前本地化来翻译消息的方式:

if (app()->getLocale() == 'en') {
   $fail('Please choose a name for "' .$value. '" in order to continue.');
} 
elseif (app()->getLocale() == 'de') {
   $fail('Bitte wählen Sie einen Namen für "' .$value. '" um fortzufahren.');
}
我知道我可以使用
en.json
-文件来翻译整个网站,但我不能在句子中使用
$value

我想知道是否有更好的方法来实现这一点

编辑

因为我使用的是闭包,所以我必须在闭包中写入“default”德语错误消息,如下所示:

$fail('Bitte wählen Sie einen Namen für "' .$value. '" um fortzufahren.');
@if ($errors->has('person.*.name'))
   <label class="error-small">@lang($errors->first('person.*.name'))</label>
@endif
这样做,我会在视图中显示的错误消息中获得
$value
的值,如下所示:

$fail('Bitte wählen Sie einen Namen für "' .$value. '" um fortzufahren.');
@if ($errors->has('person.*.name'))
   <label class="error-small">@lang($errors->first('person.*.name'))</label>
@endif
@if($errors->has('person.*.name'))
@lang($errors->first('person.*.name'))
@恩迪夫

因此,
$value
变量将插入消息中,因此我无法再通过json转换文件访问该变量。

为什么您不能传递参数

请看下面的图片

大概是这样的:

$fail('Bitte wählen Sie einen Namen für "' .$value. '" um fortzufahren.');
@if ($errors->has('person.*.name'))
   <label class="error-small">@lang($errors->first('person.*.name'))</label>
@endif
messages.php

'chose_name' => 'Please choose a name for :name in order to continue.'
--编辑

对于JSON

__('Please choose a name for :name in order to continue.', ['name' => $value])
你试过这个吗:

de.json

{"Please choose a name for :name in order to continue.": "Bitte wählen Sie einen Namen für :name um fortzufahren."}

这是否可以在json文件中使用,而不是在
messages.php
中使用?我使用的是翻译字符串,而不是短键。@OfcMiceandMoon ofc的情况基本相同。看看我的编辑。我如何将其写入json文件?我能不能把这个句子和变量放在一起,比如:
:name
?@ofmiceandmoon看看我的另一个编辑,试一下,让我知道。你不能在文本中传递参数:)你必须在客户端以某种方式解析它,这很糟糕。。把它放在一个
flash()
会话中,这个会话可能只持续一个请求。