Laravel получает локализацию через переменную / значение

#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. Приятно, всегда пожалуйста! Хорошее решение, это упрощает задачу.