Метод setLocale
Метод setLocale класса Lang устанавливает текущую локаль приложения.
Первым и единственным параметром передаётся строка с кодом локали
(например, 'en', 'ru', 'es').
После вызова этого метода все последующие переводы будут выполняться
с использованием указанной локали.
Синтаксис
<?php
Lang::setLocale($locale);
?>
Пример
Давайте установим русскую локаль для всего приложения:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Lang;
class ArticleController extends Controller
{
public function index()
{
Lang::setLocale('ru');
$message = Lang::get('messages.welcome');
echo $message;
}
}
?>
Результат выполнения кода:
"Добро пожаловать"
Пример
Установим локаль на основе параметра из сессии пользователя:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\Session;
class UserController extends Controller
{
public function setLanguage($locale)
{
Session::put('locale', $locale);
Lang::setLocale($locale);
echo "Locale set to: " . Lang::getLocale();
}
}
?>
Результат выполнения кода при вызове с параметром 'fr':
"Locale set to: fr"
Пример
Метод setLocale также можно использовать в middleware для автоматического определения языка по заголовкам запроса:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Lang;
class LocalizationMiddleware
{
public function handle($request, Closure $next)
{
$locale = $request->getPreferredLanguage(['en', 'ru', 'es']);
if ($locale) {
Lang::setLocale($locale);
}
return $next($request);
}
}
?>
Результат выполнения кода при запросе с предпочтением русского языка:
"Locale automatically set to: ru"
Пример
Использование setLocale с проверкой существования локали:
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Lang;
class LocaleController extends Controller
{
public function switchLocale($locale)
{
$availableLocales = ['en', 'ru', 'es', 'de'];
if (in_array($locale, $availableLocales)) {
Lang::setLocale($locale);
$res = "Locale switched to: " . $locale;
} else {
$res = "Locale " . $locale . " is not available";
}
echo $res;
}
}
?>
Результат выполнения кода при попытке установить недоступную локаль:
"Locale it is not available"