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',
Пояснення вище ключів має бути зрозумілим. У підсумку, ключ мови зберігає мову за замовчуванням для вашого застосунку (якщо інша мова не вказана в коді). Резервна мова активується, якщо у вашому застосунку запитується неіснуюча мова.
Тепер давайте додамо новий ключ до цього файлу, щоб надати список усіх підтримуваних локалізацій.
/*
|--------------------------------------------------------------------------
| 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}. Вибрана локаль буде збережена у сесії, і користувачі будуть перенаправлені назад на попередню сторінку (як обробляється проміжним програмним забезпеченням Localization).
Щоб перевірити це, перейдіть до 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.
- Вставте скрипт перемикача мови в заголовок вашого HTML.
- Налаштуйте перемикач мови за потребою
- Перемикач мови з'явиться на веб-сторінці Laravel , і вміст можна буде перекласти автоматично.
Як? З Linguiseвам потрібно лише зареєструватися та активувати, і перемикач мови з'явиться. Після цього ви можете вільно локалізувати, наприклад, через живий редактор, перекладати медіа, зображення тощо.
Висновок
Локалізація Laravel - це потужна функція, яка дозволяє розробникам створювати багатомовні веб-сайти та додатки. Як ми бачили, вбудований процес локалізації Laravel включає кілька етапів і вимагає хорошого розуміння фреймворку. Це може бути складно для початківців або тих, хто шукає швидше рішення.
Інструменти на кшталт Linguise пропонують інноваційну альтернативу для тих, хто шукає більш спрощений підхід. Ці рішення пропонують можливості швидкого перекладу, легку інтеграцію та зручні функції, такі як настроювані перемикачі мови та переклад зображень. Тепер, створіть свій Linguise обліковий запис та скористайтеся нашою функцією для локалізації вашого Laravel



