0

Метод Illuminate\Translation\Translator::getFromJson не существует

11

После обновления с Laravel 5.8 до Laravel 6.0 я столкнулся с следующей ошибкой:

Метод Illuminate\Translation\Translator::getFromJson не существует

Кто-нибудь знает, как можно обойти эту проблему?

Судя по всему, проблема возникает из-за использования директивы @lang для вывода сообщений перевода в моем blade-шаблоне.

4 ответ(ов)

1

Привет, Prasanth!

Методы Lang::get и Lang::getFromJson были объединены в Laravel. Теперь следует обновить вызовы метода Lang::getFromJson на Lang::get.

Кроме того, рекомендуется выполнить команду php artisan view:clear, чтобы избежать ошибок Blade, связанных с удалением методов Lang::transChoice, Lang::trans и Lang::getFromJson.

Спасибо!

0

Попробуйте выполнить команду php artisan view:clear.

Проблема заключается в том, что ваши файлы представлений были скомпилированы в версии 5.8, и здесь конструкция @lang была преобразована в Lang::getFromJson, который теперь удален.

0

Если команда php artisan view:clear не работает на сервере Debian, возможно, проблема связана с недостаточными правами доступа.

Попробуйте выполнить следующую команду:

sudo rm storage/framework/views/*

Эта команда удалит все файлы в каталоге views, что может помочь очистить кеш представлений. Не забудьте проверить права на каталог storage и его подкаталоги, чтобы убедиться, что ваш веб-сервер имеет необходимые разрешения для записи.

0

В Laravel 6 вы можете использовать функцию Lang::get() для получения перевода строки из языкового файла. Предположим, у вас есть файл перевода, который называется messages.php и находится в директории resources/lang/ru/. Чтобы получить перевод для ключа your name, выполните следующие шаги:

  1. Убедитесь, что у вас есть файл перевода messages.php в директории resources/lang/ru/ с содержимым, например:
return [
    'your name' => 'Ваше имя',
];
  1. В вашем коде вы можете использовать следующий синтаксис для получения перевода:
use Illuminate\Support\Facades\Lang;

$nameTranslation = Lang::get('messages.your name');

Это создаст переменную $nameTranslation, содержащую переведенное значение. Если ключ не найден, то будет возвращена строка с ключом (в данном случае, 'your name').

Также можно использовать хелпер __() для получения того же результата:

$nameTranslation = __('messages.your name');

Таким образом, вам не нужно беспокоиться о использовании Lang::get(), если вам удобнее использовать хелперы.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь