Search code examples
phpformslaravellaravelcollective

Laravel Collective Formbuilder label localization


I just started using the Laravel Collective Form Service Provider/FormBuilder.

I use this custom component for rendering a text field with label. The problem is that I am trying to translate it's label with the __() function but the $name variable gets tansformed from first_name to First Name in a really late stage.

<div class="control-group">
    {{ Form::label($name, null, ['class' => 'group__label']) }}
    {{ Form::text($name, $value, array_merge(['class' => 'control-
    group__control'], $attributes)) }}
</div>

I can't simply do this:

{{ Form::label(__($name), null, ['class' => 'group__label']) }}

Again, because it gets first_name and later transforms it into First Name. My nl.json file contains a translation for First Name, not first_name.

If I add the _() translate function to the last rule of the label method in FormBuilder is, then it solves my problem. But ofcourse, I don't want to modify vendor code!

 return $this->toHtmlString('<label for="' . $name . '"' . $options . '>' . __($value) . '</label>');

So. How to solve this issue? Do I, somehow, need to create a custom FormBuilder->label() method?


Solution

  • Use trans() helper:

    {{ Form::label(trans($name), null, ['class' => 'group__label']) }}