Laravel — это мощный инструмент, позволяющий разработчикам создавать многоязычные веб-сайты. Внедрив веб-локализацию в ваши проекты Laravel , вы сможете обеспечить персонализированный пользовательский опыт для посетителей с разными языковыми背景, что в конечном итоге расширит ваш охват и повысит вовлеченность пользователей.
Мы поможем вам внедрить локализацию в ваше приложение Laravel и познакомим вас с инструментом, который может упростить и улучшить ваши усилия по локализации!
Зачем локализовать сайт на Laravel ?

Вот несколько важных причин, по которым вам следует локализовать ваш сайт Laravel .
- Охватите глобальную аудиторию: Локализуя свой сайт на Laravel , вы можете расширить охват вашего приложения до международной аудитории. Это позволяет пользователям из разных стран и с разным языковым фоном понимать ваш контент и взаимодействовать с ним.
- Улучшает пользовательский опыт: Локализация позволяет пользователям взаимодействовать с приложением на их родном языке, что значительно улучшает пользовательский опыт. Это может повысить показатели вовлеченности, снизить показатели отказов и увеличить конверсии.
- Конкурентное преимущество: На конкурентном глобальном рынке предложение приложений на нескольких языках может дать значительное преимущество перед конкурентами. Это демонстрирует вашу приверженность международным рынкам и может помочь вам более эффективно выходить на новые рынки.
- Улучшает SEO: Хорошо локализованные сайты, как правило, лучше ранжируются в поисковых системах по запросам на определенном языке. Это может увеличить трафик вашего блога и онлайн-видимость на различных рынках с помощью многоязычного перевода.
Требования для многоязычной локализации Laravel

Существует несколько требований и шагов, которые следует учитывать при внедрении многоязычной локализации в Laravel.
- Чтобы получить новейшие функции локализации, убедитесь, что вы используете последнюю версию Laravel (например, версию 10.x).
- Базовое понимание PHP и фреймворка Laravel будет полезно в процессе внедрения.
- Настройте локальную среду разработки или сервер, поддерживающий Laravel, включая веб-сервер и базу данных.
- Определите языки, которые ваше приложение будет поддерживать с самого начала.
Простые переводы Laravel

После понимания того, какие требования должны быть выполнены перед переводом приложения или веб-сайта Laravel , мы предоставим несколько шагов для простого перевода Laravel .
Для этого откройте файл представления, который вы хотите локализовать, например, resources/views/welcome.blade.php. Затем замените тег body следующим кодом.
Welcome to Linguise website!
Как видите, текст выше сейчас написан непосредственно в коде. Это менее эффективно и затрудняет перевод сайтов на разные языки (интернационализацию).
Мы собираемся сделать приведенный выше текст более гибким, чтобы его можно было легко адаптировать к разным языкам. Laravel предоставляет для этого очень полезную функцию — систему локализации. В качестве первого шага замените существующий текст следующим кодом.
{{ __('Welcome to Linguise website!') }}
Laravel по умолчанию отобразит вышеуказанный текст и выполнит поиск перевода, если пользователь выберет язык, отличный от английского. В этом случае английский будет использоваться в качестве языка приложения по умолчанию.
Настройка локалей в многоязычном веб-проекте Laravel

Но как Laravel определяет текущий язык или узнаёт, какие языки доступны в приложении? Он проверяет настройки локали в файле config/app.php. Откройте этот файл и найдите следующие два ключа.
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
Объяснение выше ключей должно быть понятным. Вкратце, ключ locale содержит локаль по умолчанию для вашего приложения (если в коде не указана другая локаль). Параметр fallback_locale активируется, если в вашем приложении запрашивается несуществующая локаль.
Теперь давайте добавим новый ключ в этот файл, чтобы предоставить список всех поддерживаемых локалей.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
На данный момент мы попробовали Laravel веб для поддержки трех языков, а именно английского, итальянского и французского.
Обзор файлов перевода Laravel

В Laravel, как и во многих других фреймворках, переводы для разных языков хранятся в отдельных файлах. Для организации этих файлов перевода используются два метода.
Старый метод хранит файлы в следующей структуре: resources/lang/{en,fr,it}/{myfile.php}. Новый метод использует файлы JSON, такие как resources/lang/{fr.json, it.json}. Эта статья будет посвящена новому методу, хотя принципы аналогичны для старого метода, за исключением различий в том, как называются и доступны ключи перевода.
Для языков с региональными вариациями следует называть каталоги или файлы языков в соответствии со стандартом ISO 15897. Например, британский английский должен называться en_GB, а не en-gb.
Общая информация
В Laravel, как и во многих фреймворках, переводы для разных языков хранятся в отдельных файлах. Существует два основных метода организации файлов перевода Laravel .
- Устаревший подход предполагает хранение файлов по пути: resources/lang/{en,fr,it}/{myfile.php}.
- Современный подход использует файлы resources/lang/{fr.json, it.json}.
Эта статья будет посвящена второму методу, хотя принципы применимы к обоим (с различиями в том, как называются и используются ключи перевода).
Для языков, которые различаются в зависимости от региона, рекомендуется называть каталоги и файлы языков в соответствии со стандартами ISO 15897. Например, британский английский следует обозначать как en_GB, а не en-gb.
Создание файлов перевода Laravel
Настроив локали для нашего приложения, мы можем приступить к переводу нашего стандартного приветственного сообщения.
Давайте начнем с создания новых файлов локализации в формате JSON в каталоге resources/lang. Сначала мы создадим файл resources/lang/it.json и заполним его соответствующими переводами.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Затем добавьте файл resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Как вы можете заметить, мы постоянно ссылаемся на сообщение по умолчанию из файла welcome.blade.php ({{ __(‘Добро пожаловать на сайт Linguise !’) }}). Нет необходимости создавать файл en.json, так как Laravel автоматически распознает, что сообщения по умолчанию на английском языке.
Настройка переключателя языков в многоязычном приложении Laravel

Кроме того, Laravel еще не настроен для переопределения локального языка, поэтому пока мы будем обрабатывать перевод непосредственно в маршруте. Измените маршрут приветствия по умолчанию в файле routes/web.php следующим образом.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
В этом случае мы захватываем необязательный GET-параметр локали и устанавливаем текущую локаль на его основе (если запрошенная локаль поддерживается).
Теперь вы можете посетить свой сайт и добавить любой из поддерживаемых языков в качестве первого сегмента URL-адреса. Например, переход по адресу localhost/it или localhost/fr отобразит локализованный контент. Если вы не укажете локаль или выберете неподдерживаемую, Laravel по умолчанию будет использовать английский (en).
Промежуточное ПО локализации для Laravel
Включение локали в каждый URL может быть не идеальным решением и способно нарушить визуальную привлекательность сайта. Чтобы решить эту проблему, мы настроим переключатель языков и будем использовать пользовательскую сессию для отображения переведённого контента. Вы можете создать новое промежуточное программное обеспечение в файле app/Http/Middleware/Localization.php или сгенерировать его, выполнив команду artisan make:middleware Localization.
Затем добавьте следующий код внутрь.
Это промежуточное программное обеспечение направит Laravel использовать местоположение, выбранное пользователем, если эта опция присутствует в сессии.
Поскольку нам нужно, чтобы операция выполнялась при каждом запросе, добавьте её в стандартный стек промежуточного программного обеспечения в app/Http/Kernel.php для группы веб-промежуточного программного обеспечения.
/**
* The application's route middleware groups.
*
* @var array>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
Изменение маршрутов
Затем определите маршрут для изменения локали в файле routes/web.php. Здесь мы используем замыкающий маршрут, но вы можете разместить тот же код внутри контроллера, если предпочитаете.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Кроме того, удалите переключение локали, которое ранее было добавлено в маршрут приветствия по умолчанию. Теперь ваш корневой маршрут должен выглядеть так.
Route::get('/', function () {
return view('welcome');
});
После этого пользователь может переключить активный язык только путем перехода по адресу localhost/language/{locale}. Выбранная локаль будет сохранена в сессии, а пользователи будут перенаправлены обратно на предыдущую страницу (как это реализовано в промежуточном программном обеспечении локализации).
Чтобы проверить это, перейдите по адресу localhost/language/it (при условии, что сессионный файл cookie активен в вашем браузере), и вы должны увидеть переведённый контент. Вы можете перемещаться по сайту или обновить страницу, и выбранный язык останется активным.
Реализация переключателя языков
Теперь нам нужно предоставить пользователю кликабельную опцию для изменения переключателя языков Laravel веб , вместо того чтобы требовать от него вручную вводить коды локалей в URL. Для этого создайте простой переключатель языков. Добавьте новый файл по пути resources/views/partials/language_switcher.blade.php и вставьте следующий код.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Чтобы включить только что созданный переключатель языка в представление “welcome”, просто добавьте следующую строку в ваш файл welcome.blade.php в том месте, где вы хотите, чтобы появился переключатель.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Откройте файл app/Providers/AppServiceProvider.php и добавьте следующий код в метод boot(), чтобы передавать текущую локаль во все представления при использовании переключателя языков
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
Расширенные возможности перевода в Laravel PHP

В этом обсуждении мы затем рассмотрим другие компоненты локализации, а именно дату, число и валюту. Вот шаги.
Локализованные даты в Laravel
Обработка дат и времени имеет решающее значение в процессе локализации. Laravel использует Carbon для управления датами и временем. Вот как можно использовать Carbon для отображения локализованной даты.
settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
Этот код устанавливает локаль Carbon на основе текущей локали приложения и соответствующим образом форматирует дату.
Чтобы отобразить локализованную дату в представлении:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
Форматирование чисел и валют
В разных странах существуют различные способы форматирования чисел. Например.
- Франция → 123 123,12
- Германия → 123.123,12
- Япония → 123,123
Чтобы учесть эти вариации в вашем приложении Laravel , вы можете использовать NumberFormatter.
Вы также можете записывать числа словами на определенном языке.
Вот валюты. Для французской локали (`fr`) валюта будет отображаться в евро (€), а для американской локали (`en_US`) — в долларах США ($).
Альтернативное решение Laravel локализация с Linguise

После ознакомления с этапами локализации Laravel , описанными в статье, становится ясно, что этот процесс включает множество шагов, требующих от пользователей глубокого понимания программного кода Laravel .
Это, безусловно, может создать трудности для начинающих пользователей, которые хотят локализовать свои приложения. Поэтому необходимо более инновационное решение, способное обеспечить быстрый перевод, поддерживающее локализацию и требующее всего нескольких простых шагов для внедрения.
Одним из перспективных решений является Linguise. Linguise предлагает более простой и эффективный подход к локализации Laravel без необходимости глубоких знаний программирования. Ключевые особенности Linguise включают.
- Простая интеграция с Laravel
- Настройте переключатель языка без программирования
- Перевод изображений
- Живой редактор для настройки переводов под местный контекст
- Динамический перевод для динамически генерируемого контента
- SEO-оптимизация для многоязычных версий
Шаги по установке Linguise на Laravel сайты также можно выполнить легко. Вот краткое объяснение.
- Создайте аккаунт Linguise (используйте 30-дневную бесплатную пробную версию)
- Зарегистрируйте ваш веб-домен Laravel и введите некоторую информацию. Вы получите API-ключ.
- Загрузите и подключите скрипт перевода Linguise к полученной папке Laravel .
- Настройте языковые URL-адреса в файле htaccess.
- Вставьте скрипт переключателя языка в раздел head вашего HTML.
- Настройте переключатель языка по мере необходимости
- Переключатель языка появится на веб-сайте Laravel , и содержимое может быть переведено автоматически.
Как? С Linguiseвам нужно только зарегистрироваться и активировать, и переключатель языков появится. После этого вы можете свободно локализовать, например, через live-редактор, переводить медиа, изображения и т. д.
Заключение
Локализация Laravel — это мощная функция, которая позволяет разработчикам создавать многоязычные веб-сайты и приложения. Как мы видели, встроенный процесс локализации Laravel включает несколько шагов и требует хорошего понимания фреймворка. Это может быть сложно для новичков или тех, кто ищет более быстрое решение.
Такие инструменты, как Linguise , предлагают инновационную альтернативу для тех, кто ищет более упрощённый подход. Эти решения обеспечивают быстрый перевод, лёгкую интеграцию и удобные функции, такие как настраиваемые переключатели языков и перевод изображений. Теперь создайте свою учётную запись Linguise и воспользуйтесь нашей функцией локализации вашего Laravel!



