Метод setLocale
Метод setLocale класса App позволяет программно
установить язык, который будет использоваться приложением
для перевода сообщений и форматирования данных. В качестве
первого и единственного параметра метод принимает строку
с кодом языка (например, 'en', 'ru', 'fr').
После вызова этого метода все последующие вызовы
функции trans будут возвращать переводы на указанном языке.
Синтаксис
<?php
app()->setLocale($locale);
?>
Пример
Давайте установим русский язык для текущего запроса и получим перевод приветствия:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function index()
{
// Устанавливаем русский язык
app()->setLocale('ru');
// Получаем перевод
$greeting = trans('messages.welcome');
echo $greeting;
}
}
?>
Результат выполнения кода:
"Добро пожаловать"
Пример
Установим английский язык и получим перевод сообщения об ошибке:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
public function index()
{
// Устанавливаем английский язык
app()->setLocale('en');
// Получаем перевод
$error = trans('auth.failed');
echo $error;
}
}
?>
Результат выполнения кода:
"These credentials do not match our records."
Пример
В маршруте можно установить язык на основе параметра запроса:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/{locale}/home', function ($locale) {
// Устанавливаем язык из параметра маршрута
app()->setLocale($locale);
// Проверяем текущий язык
$current = app()->getLocale();
return view('home', ['lang' => $current]);
});
?>
Смотрите также
-
метод
getLocale,
который возвращает текущий установленный язык -
метод
currentLocale,
который возвращает текущий язык в формате локали -
метод
isLocale,
который проверяет, соответствует ли текущий язык заданному -
метод
setFallbackLocale,
который устанавливает язык, используемый по умолчанию