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 ще не налаштовано на заміну місцевої мови, тому наразі ми будемо виконувати переклад безпосередньо в маршруті. Змініть стандартний маршрут привітання у файлі 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.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 !