Laravel — это мощный инструмент, позволяющий разработчикам создавать многоязычные веб-сайты. Внедряя веб-локацию в свои Laravel , вы можете предоставить персонализированный пользовательский интерфейс для посетителей с разным языковым опытом, что в конечном итоге расширит ваш охват и улучшит взаимодействие с пользователями.
Мы покажем вам, как реализовать локализацию в вашем приложении Laravel , и познакомим вас с инструментом, который может упростить и улучшить ваши усилия по локализации!
Вот несколько важных причин, почему вам следует локализовать свой веб-сайт Laravel .
Есть несколько требований и шагов, которые следует учитывать при реализации многоязычной локализации в Laravel .
Поняв, какие требования должны быть выполнены перед переводом приложения или веб-сайта Laravel , мы предоставим несколько шагов для простого перевода Laravel .
Для этого откройте файл представления, которое вы хотите локализовать, например resources/views/welcome.blade.php. Затем замените тег body следующим кодом.
Welcome to Linguise website!
Как видите, текст выше в настоящее время написан прямо в коде. Это менее эффективно и затрудняет перевод веб-сайтов на разные языки (интернационализация).
Мы собираемся сделать приведенный выше текст более гибким, чтобы его можно было легко адаптировать к различным языкам. Laravel предоставляет для этого очень полезную функцию; система локализации. В качестве первого шага замените существующий текст следующим кодом.
{{ __('Welcome to Linguise website!') }}
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 , как и во многих других фреймворках, переводы для разных языков хранятся в отдельных файлах. Для организации этих файлов перевода используются два метода.
Старый метод сохраняет файлы в следующей структуре: resources/lang/{en,fr,it}/{myfile.php}. Новый метод использует файлы JSON, такие как resources/lang/{fr.json, it.json}. В этой статье основное внимание будет уделено новому методу, хотя его принципы аналогичны старому методу, за исключением различий в именах ключей перевода и доступе к ним.
Для языков с региональными различиями следует называть языковые каталоги или файлы в соответствии со стандартом ISO 15897. Например, британский английский будет называться en_GB вместо en-gb.
В Laravel , как и во многих фреймворках, переводы для разных языков хранятся в отдельных файлах. Существует два основных метода организации файлов перевода Laravel .
В этой статье основное внимание будет уделено второму методу, хотя принципы применимы к обоим (с разными именами и доступом к ключам перевода).
Для языков, которые различаются в зависимости от региона, рекомендуется присваивать языковым каталогам/файлам имена в соответствии со стандартами ISO 15897. Например, британский английский будет обозначаться как en_GB, а не en-gb.
Настроив локали для нашего приложения, мы можем приступить к переводу приветственного сообщения по умолчанию.
Начнем с создания новых файлов локализации в формате 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 еще не настроен для переопределения местного языка, поэтому на данный момент мы будем обрабатывать перевод непосредственно внутри маршрута. Измените маршрут приветствия по умолчанию в файле маршруты/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).
Включение локали в каждый 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 использует 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 }}
В разных странах существуют разные способы форматирования чисел. Например.
Чтобы учесть эти варианты в вашем приложении Laravel , вы можете использовать NumberFormatter.
Вы также можете писать числа на определенном языке.
Вот валюты. Для французского языка (`fr`) валюта будет отображаться в евро (€), а для американского языка (`en_US`) — в долларах США ($).
После понимания этапов локализации Laravel , описанных в статье, этот процесс включает в себя множество шагов, которые требуют от пользователей глубокого понимания программного кода Laravel .
Это, безусловно, может затруднить работу начинающих пользователей, желающих локализовать свои приложения. Следовательно, необходимо более инновационное решение, способное к быстрому переводу, поддерживающее локализацию и требующее всего лишь нескольких простых шагов для реализации.
Одним из многообещающих решений является Linguise . Linguise предлагает более простой и эффективный подход к локализации Laravel без необходимости глубоких знаний программирования. Ключевые особенности Linguise включают в себя.
Шаги по установке Linguise на веб-сайты Laravel также можно легко выполнить. Вот краткое объяснение.
Как? С Linguise вам нужно только зарегистрироваться и активировать, и появится переключатель языка. После этого вы можете свободно локализовать, например, через живой редактор, переводить медиа, изображения и т. д.
Локализация Laravel — мощная функция, позволяющая разработчикам создавать многоязычные веб-сайты и приложения. Как мы видели, встроенный процесс локализации Laravel включает в себя несколько этапов и требует хорошего понимания структуры. Это может быть сложно для новичков или тех, кто ищет более быстрое решение.
Такие инструменты, как Linguise предоставляют инновационную альтернативу для тех, кто ищет более рациональный подход. Эти решения предлагают возможности быстрого перевода, простую интеграцию и удобные функции, такие как настраиваемые переключатели языков и перевод изображений. Теперь создайте свою учетную запись Linguise и наслаждайтесь нашей функцией локализации вашего Laravel !
Получайте новости об автоматическом переводе веб-сайтов, международном SEO и многом другом!
Не уходите, не поделившись своей электронной почтой!
Мы не можем гарантировать, что вы выиграете в лотерею, но можем обещать интересные информационные новости о переводах и периодические скидки.