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',
Объяснение над клавишами должно быть ясным. Таким образом, ключ локали содержит локаль по умолчанию для вашего приложения (если в коде не указана другая локаль). 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 еще не настроен для переопределения местного языка, поэтому на данный момент мы будем обрабатывать перевод непосредственно внутри маршрута. Измените маршрут приветствия по умолчанию в файле маршруты/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
],
Изменение маршрутов
Затем определите маршрут для изменения локали в файле маршруты/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.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.
- Вставьте скрипт переключения языка в заголовок вашего HTML.
- Настройте переключатель языка по мере необходимости
- Переключатель языка появится в сети Laravel , и контент можно будет перевести автоматически.
Как? С Linguise вам нужно только зарегистрироваться и активировать, и появится переключатель языка. После этого вы можете свободно локализовать, например, через живой редактор, переводить медиа, изображения и т. д.
Вывод
Локализация Laravel — мощная функция, позволяющая разработчикам создавать многоязычные веб-сайты и приложения. Как мы видели, встроенный процесс локализации Laravel включает в себя несколько этапов и требует хорошего понимания структуры. Это может быть сложно для новичков или тех, кто ищет более быстрое решение.
Такие инструменты, как Linguise предоставляют инновационную альтернативу для тех, кто ищет более рациональный подход. Эти решения предлагают возможности быстрого перевода, простую интеграцию и удобные функции, такие как настраиваемые переключатели языков и перевод изображений. Теперь создайте свою учетную запись Linguise и наслаждайтесь нашей функцией локализации вашего Laravel !