laravel 请求 return 消息键翻译

laravel request return message keys translations

我有一个 Laravel 应用程序和另一个通过 API 调用 Laravel 的应用程序。这2个项目是分开的。

Laravel和App有自己的多语言系统。他们独立工作,但使用相同的键翻译。

所以我的想法是所有 Laravel 回复都必须是翻译键,例如:'messages.success'.

有了这个响应,应用程序可以翻译它。

所有这些都工作正常。

当我开始使用 Laravel 请求验证表单时,问题出现了。 在这种情况下,验证错误会自动翻译,因此应用程序会收到使用 Laravel 应用程序的默认语言翻译的响应。

那我该怎么办?

我想了2个点子不知道行不行

1:将语言传递给参数。不知道是否可行,如何在 Laravel 验证请求之前设置语言?

2:在不翻译的情况下覆盖 return 消息的请求功能,因此而不是 "Felicidades" return "messages.success"。我真的很喜欢这种方法。但是我该怎么做才能满足所有规则呢?像这样覆盖消息函数:

public function messages()
{
    return [
        'unique' => 'validation.unique'
    ];
}

因为每个规则都有效...但我感觉很糟糕。

另一种方法?

解决此问题的最佳方法是什么?

我建议您在 2 行代码中使用这个 hacky 解决方案。转到 /resources/lang/{code}/validation.php。你可以看到默认情况下它 returns 一个消息数组。像这样修改它:

// 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));

之后您可以像往常一样使用验证,您将获得验证消息密钥而不是消息。干杯,希望这有帮助。