#laravel #localization
#laravel #локализация
Вопрос:
В lang/en/messages.php
у меня есть следующий ключ / значение:
"producer" => "Producer",
A $user->role
хранит значение Producer
в базе данных.
Например, {{ __($user->role) }}
не работает. Возможно ли выполнить перевод на основе значения, а не ключа?
Я знаю, что это {{ __("messages.producer") }}
сработает, но это не то, что мне нужно.
Комментарии:
1. Вы можете использовать
{{ __("messages.{$user->role}") }}
или написать пользовательский помощник
Ответ №1:
Вы можете получить массив языкового файла следующим образом:
$messages = Lang::get('messages')
После этого вы можете выполнить поиск ключа по значению с помощью array_search
:
$key = array_search($user->role, $messages);
Затем вы можете использовать ключ для перевода:
{{ __("messages." . $key) }}
Возможно, вы захотите создать помощник для реализации этого :).
Комментарии:
1. Спасибо, ваш ответ отлично работает! Однако я решил изменить свою базу данных и сохранить ключ, а не значение…
2. Приятно, всегда пожалуйста! Хорошее решение, это упрощает задачу.