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

如何使用laravelcollective/html实现本地化并完成表单标签翻译

当然有办法用laravelcollective/html直接实现表单标签的翻译,不用退回到原生<label>标签~这里有两种实用方案:

方案1:直接传递翻译后的文本作为标签内容

Laravel的翻译辅助函数__()或者Lang::get()可以直接在Form::label()的第二个参数里使用,和你用Blade的@lang()效果完全一致:

// 使用翻译辅助函数(推荐,更简洁)
{{ Form::label('name', __('messages.name')) }}

// 或者使用Lang门面
{{ Form::label('name', Lang::get('messages.name')) }}

只要你的语言文件(比如resources/lang/en/messages.php)里已经定义了对应的键值,这个写法就能直接输出翻译后的标签文本。

方案2:自定义Form宏(适合频繁使用的场景)

如果你的项目里大量需要翻译表单标签,可以自定义一个Form宏,让调用更简洁。在App\Providers\AppServiceProvider的boot()方法里添加以下代码:

use Illuminate\Support\Facades\Form;

public function boot()
{
    Form::macro('transLabel', function ($name, $translationKey = null, $options = []) {
        // 如果没传翻译键,默认用 "messages.$name" 作为键
        $key = $translationKey ?? "messages.$name";
        // 调用原生的label方法,传入翻译后的文本
        return Form::label($name, __($key), $options);
    });
}

之后你就可以这样调用:

// 默认使用messages.name作为翻译键
{{ Form::transLabel('name') }}

// 自定义翻译键
{{ Form::transLabel('email', 'forms.user_email') }}

// 还可以添加标签属性
{{ Form::transLabel('name', null, ['class' => 'form-label']) }}

补充说明

Laravel Collective的Form组件本身并没有内置专门的翻译参数,但通过上面两种方式,你完全可以保持使用Form类的写法,同时实现和原生@lang一样的翻译效果。记得提前在对应的语言文件中配置好翻译内容哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:37:40