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», просто додайте наступний рядок до вашого файлу 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



