gpt4 book ai didi

json - 如何在 JSON 文件中翻译 Laravel 的默认验证错误?

转载 作者:行者123 更新时间:2023-12-04 12:59:08 34 4
gpt4 key购买 nike

我需要在 JSON 文件中翻译 Laravel 的默认验证错误。问题是如果我想覆盖翻译,比如 resourses/lang/de.json 文件中的“必需”验证错误,它不起作用。

我必须这样做的原因是我使用的短语翻译系统。

任何的想法?谢谢!

更新

经过一番研究,现在我明白了我的“问题”是什么。 Laravel 使用 trans() 函数来翻译验证错误,但如果你想使用 Laravel 的 JSON 翻译,那么你必须使用 __() 函数。好吧,我知道他们为什么这样做,因为如果使用字符串作为键,验证错误是由“短键”和 JSON 格式的翻译构成的。
但是,如果我仍然想以 JSONish(我知道这是一个 future 主义的词)方式翻译默认错误怎么办?在此处按照我的解决方案进行操作:

首先,您必须创建一个表单请求( https://laravel.com/docs/7.x/validation#creating-form-requests ):

php artisan make:request UserUpdateRequest

在新创建的表单请求文件中,您必须覆盖消息函数才能翻译验证错误:
namespace App\Http\Requests\v1;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use App\Exceptions\ApiValidationException;

class UserUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => ['required', 'string', 'min:3', 'max:255'],
];
}

/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
'name.required' => __('The user name is required.'),
'name.string' => __('The user name must be a string.'),
'name.min' => __('The user name must be at least three characters.'),
'name.max' => __('The user name may not be greater than 255 characters.'),
];
}
}

现在我们必须创建翻译文件( https://laravel.com/docs/7.x/localization#using-translation-strings-as-keys )并将新的翻译字符串放入其中。
# resourses/lang/de.json

{
"The user name is required." : "The user name is required.",
"The user name must be a string." : "The user name must be a string.",
"The user name must be at least three characters." : "The user name must be at least three characters.",
"The user name may not be greater than 255 characters." : "The user name may not be greater than 255 characters."
}

就这样。
我希望这个翻译过程的描述对其他人有用。

最佳答案

我需要在 JSON 文件中翻译 Laravel 的默认验证错误。问题是如果我想覆盖翻译,比如 resourses/lang/de.json 文件中的“必需”验证错误,它不起作用。

我必须这样做的原因是我使用的短语翻译系统。

任何的想法?谢谢!

答案

经过一番研究,现在我明白了我的“问题”是什么。 Laravel 使用 trans() 函数来翻译验证错误,但如果你想使用 Laravel 的 JSON 翻译,那么你必须使用 __() 函数。好吧,我知道他们为什么这样做,因为如果使用字符串作为键,验证错误是由“短键”和 JSON 格式的翻译构成的。
但是,如果我仍然想以 JSONish(我知道这是一个 future 主义的词)方式翻译默认错误怎么办?在此处按照我的解决方案进行操作:

首先,您必须创建一个表单请求( https://laravel.com/docs/7.x/validation#creating-form-requests ):

php artisan make:request UserUpdateRequest

在新创建的表单请求文件中,您必须覆盖消息函数才能翻译验证错误:
namespace App\Http\Requests\v1;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use App\Exceptions\ApiValidationException;

class UserUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => ['required', 'string', 'min:3', 'max:255'],
];
}

/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
'name.required' => __('The user name is required.'),
'name.string' => __('The user name must be a string.'),
'name.min' => __('The user name must be at least three characters.'),
'name.max' => __('The user name may not be greater than 255 characters.'),
];
}
}

现在我们必须创建翻译文件( https://laravel.com/docs/7.x/localization#using-translation-strings-as-keys )并将新的翻译字符串放入其中。
# resourses/lang/de.json

{
"The user name is required." : "The user name is required.",
"The user name must be a string." : "The user name must be a string.",
"The user name must be at least three characters." : "The user name must be at least three characters.",
"The user name may not be greater than 255 characters." : "The user name may not be greater than 255 characters."
}

就这样。
我希望这个翻译过程的描述对其他人有用。

关于json - 如何在 JSON 文件中翻译 Laravel 的默认验证错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61541046/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com