laravel请求返回消息密钥转换
我有一个Laravel应用程序和另一个通过API调用Laravel的应用程序。这两个项目是分开的 Laravel和App有自己的多语言系统。它们独立工作,但使用相同的密钥翻译 所以我的想法是,所有Laravel的回答都必须是关键的,比如:“messages.success” 有了这个响应,应用程序可以翻译它 所有这些都很好 当我开始处理用于验证表单的Laravel请求时,问题出现了。 在这种情况下,验证错误将被自动翻译,因此应用程序将接收使用Laravel应用程序的默认语言翻译的响应 那我该怎么办 我有两个想法,但我不知道它们是否可行 1:将语言传递到params。不知道它是否可以工作,如何在Laravel验证请求之前设置语言 2:覆盖请求的功能以返回消息,而不进行翻译,因此,不要使用“Felicidades”返回“messages.success”。我真的很喜欢这种方法。但是我怎么能按规定去做呢?覆盖消息函数如下所示:laravel请求返回消息密钥转换,laravel,api,validation,request,translation,Laravel,Api,Validation,Request,Translation,我有一个Laravel应用程序和另一个通过API调用Laravel的应用程序。这两个项目是分开的 Laravel和App有自己的多语言系统。它们独立工作,但使用相同的密钥翻译 所以我的想法是,所有Laravel的回答都必须是关键的,比如:“messages.success” 有了这个响应,应用程序可以翻译它 所有这些都很好 当我开始处理用于验证表单的Laravel请求时,问题出现了。 在这种情况下,验证错误将被自动翻译,因此应用程序将接收使用Laravel应用程序的默认语言翻译的响应 那我该怎么
public function messages()
{
return [
'unique' => 'validation.unique'
];
}
因为每一条规则都有效。。。但是我感觉很糟糕
另一种方法
解决此问题的最佳方法是什么?我建议您在两行代码中使用此黑客解决方案。转到
/resources/lang/{code}/validation.php
。您可以看到,默认情况下,它返回一个消息数组。修改如下:
// Replace return in the first line
$ret = [
/* all the translations go here as normal */
];
// Add this as the last line. This will replace all values with their keys.
return array_combine(array_keys($ret), array_keys($ret));
之后,您可以像往常一样使用验证,您将获得验证消息键而不是消息。干杯,希望这有帮助。嘿,问得好。你正在使用的Laravel版本是什么?尝试使用最新的6.4.1Nice,这正是我想要的。但是现在,如果我想在Laravel应用程序上使用这个翻译,会发生什么呢?你会得到钥匙的。您可以根据某些条件选择性地执行此转换:if($is\u api)返回数组\u combine(…);否则返回$ret;