Вывод текста на разных языках

Файлы с поддерживаемыми языками находятся в папке resources/lang/.

  • resources/lang/ru/
  • resources/lang/en/

Laravel подключает файлы из папки текущего языка, который указывается в файле config/app.php.

# config/app.php

return [
    // …
    'locale' => 'ru',
    'fallback_locale' => 'ru', // подключается, если не найден перевод для текущего языка
];

Для вывода текста на текущем языке, в контроллере используется команда __(), а в шаблоне используется {{ __() }} или @lang.

# контроллер
echo __('messages.Hello')

# шаблон
{{ __('messages.Hello') }} <!-- 1-ый способ -->
@lang('messages.Hello')    <!-- 2-ой способ -->

Примеры выше не экранируют HTML-код, за исключением {{ __() }}, т.к. для переменных внутри {{ }} применяется функция htmlspecialchars().

Строка «messages.Hello» означает, что надо подключить файл «messages.php» и найти параметр «Hello».

# resources/lang/ru/messages.php

return [
    'Hello' => 'Привет',
];

При необходимости, текущий язык можно указать в контроллере через метод App::setLocale().

public function index()
{
    \App::setLocale('ru');
    // …
}

Вывод текста с параметрами

В языковых файлах можно передавать параметры, как на примере ниже. 

# resources/lang/ru/messages.php

return [
    'Hello' => 'Привет :name',
];

Указывается следующим образом:

@lang('messages.Hello', ['name' => 'John'])

В итоге на странице сгенерируется текст «Привет John».