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

Laravel 5.6条件验证:如何自定义翻译提示中的特定词汇

解决Laravel 5.6条件验证消息中"left"的自定义翻译问题

当然可行啦!我来给你拆解两种靠谱的解决方式,按需选择就行~

方法一:直接自定义验证消息(快速简单,适合单语言场景)

如果你的项目不需要多语言支持,直接在验证规则里指定自定义消息就能搞定。比如在控制器的验证代码里:

$validator = Validator::make($request->all(), [
    'text' => 'required_if:type,left', // 你的条件验证规则
], [
    // 直接把"left"替换成你想要的自定义词汇
    'text.required_if' => 'text必须填写,当type为【左侧】',
]);

这样验证不通过时,返回的提示就是你自定义好的内容,完全不用改其他配置。

方法二:用替换器+翻译文件(优雅适配多语言)

如果需要支持多语言,或者想让代码更易维护,推荐用这种方式:

  1. 创建取值翻译文件
    在resources/lang/你的语言目录(比如zh-CN)下新建type_values.php文件,用来映射type字段的取值和自定义翻译:
<?php
return [
    'left' => '左侧', // 这里换成你需要的自定义词汇
    // 以后如果还有其他type取值需要翻译,直接在这里加就行
];
  1. 添加验证规则替换器
    打开app/Providers/AppServiceProvider.php,在boot()方法里添加替换器逻辑,自动把验证消息里的left替换成翻译后的内容:
use Illuminate\Support\Facades\Validator;

public function boot()
{
    Validator::replacer('required_if', function ($message, $attribute, $rule, $parameters) {
        // $parameters里存着验证规则的参数,比如['type', 'left']
        $value = $parameters[1];
        // 从翻译文件里取出对应的自定义词汇
        $translatedValue = trans('type_values.' . $value);
        // 替换消息里的:value占位符
        return str_replace(':value', $translatedValue, $message);
    });
}
  1. 确保验证消息配置正确
    在对应语言的validation.php(比如resources/lang/zh-CN/validation.php)里,required_if的消息保持默认或者自定义格式都可以,比如:
'required_if' => ':attribute 必须填写,当 :other 为 :value',

这样以后不管type有多少种取值需要翻译,只需要在type_values.php里添加对应的映射就行,非常灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:42:06