You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel-Lang包:如何禁止验证错误消息中的属性翻译?

禁止Laravel-Lang验证错误消息中的属性翻译

针对你遇到的法语locale下属性被翻译导致语义不通的问题,有几种直接的解决方式:

方式一:删除对应属性的翻译条目

Laravel-Lang包会在lang/fr/attributes.php(或lang/fr/validation.php的attributes数组)中定义属性的翻译映射。找到该文件,删除或注释掉last_name对应的翻译行,比如:

// 注释或删除这一行
// 'last_name' => 'nom',

这样验证器会直接使用原始属性名last_name,不再替换为法语翻译。

方式二:自定义验证错误消息

在验证规则中直接指定自定义消息,跳过属性翻译逻辑。比如在控制器或请求类中:

$rules = [
    'last_name' => 'max:50',
];

$customMessages = [
    'last_name.max' => 'Le champ last name ne peut pas contenir plus de 50 caractères.',
];

$this->validate($request, $rules, $customMessages);

这种方式精准控制单条规则的错误消息,不会影响其他字段。

方式三:全局禁用属性翻译

如果希望所有验证错误都保留原始属性名,可在App/Providers/AppServiceProvider.php的boot方法中重写验证器的属性获取逻辑:

use Illuminate\Validation\Validator;

public function boot()
{
    $this->app->resolving(Validator::class, function ($validator) {
        $validator->setAttributeNames(function ($attribute) {
            // 直接返回原始属性名,不做翻译替换
            return $attribute;
        });
    });
}

此设置会全局生效,所有验证消息中的:attribute占位符都会被原始属性名替换。

内容的提问来源于stack exchange,提问作者Dom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 21:00:22