Покрокова локалізація Laravel [Посібник]

Виведіть свій бізнес на новий рівень завдяки глобальній експансії. Зростання та розвиток бізнесу.
Table of Contents

Laravel локалізація — це потужний інструмент, який дає змогу розробникам створювати багатомовні вебсайти. Впровадивши веблокалізацію у своїх проєктах Laravel , ви можете забезпечити персоналізований досвід для відвідувачів із різним мовним походженням, що зрештою розширить вашу аудиторію та підвищить залученість користувачів.

Ми проведемо вас через впровадження локалізації у вашому застосунку Laravel та познайомимо з інструментом, який може спростити й покращити ваші зусилля з локалізації!

Чому варто локалізувати вебсайт на Laravel ?

Чоловік у помаранчевому жилеті тримає планшет із картою світу. Показано прапори різних країн.

Ось кілька важливих причин, чому вам варто локалізувати ваш вебсайт Laravel .

  • Охопіть глобальну аудиторію: Локалізувавши свій вебсайт на Laravel , ви можете розширити охоплення свого застосунку до міжнародної аудиторії. Це дозволяє користувачам з різних країн та мовних середовищ розуміти ваш контент і взаємодіяти з ним.
  • Покращує досвід користувача: Локалізація дозволяє користувачам взаємодіяти з додатком рідною мовою, що значно покращує досвід користувача. Це може підвищити рівень залученості, зменшити показник відмов і збільшити конверсії.
  • Конкурентна перевага: На конкурентному глобальному ринку пропонування застосунків кількома мовами може дати значну перевагу над конкурентами. Це демонструє вашу відданість міжнародним ринкам і може допомогти вам ефективніше виходити на нові ринки.
  • Покращує SEO: Добре локалізовані вебсайти, як правило, краще ранжуються в пошукових системах для запитів певною мовою. Це може збільшити трафік вашого блогу та онлайн-видимість на різних ринках завдяки багатомовному перекладу.

Вимоги для багатомовної локалізації Laravel

Двоє людей спільно працюють за великим екраном комп’ютера з різними додатками. Схоже, вони працюють разом.

Існує кілька вимог і кроків, які слід врахувати під час впровадження багатомовної локалізації в Laravel.

  • Щоб отримати найновіші функції локалізації, переконайтеся, що ви використовуєте найновішу версію Laravel (наприклад, версію 10.x).
  • Базове розуміння PHP та фреймворку Laravel буде корисним у процесі впровадження.
  • Налаштуйте локальне середовище розробки або сервер, який підтримує Laravel, включно з вебсервером і базою даних.
  • Визначте мови, які ваш застосунок підтримуватиме, ще на початку.

Прості переклади Laravel

Чоловік працює за ноутбуком. Перегляд вебсторінок на екрані.

Після розуміння того, які вимоги мають бути виконані перед перекладом застосунку Laravel або вебсайту, ми наведемо кілька кроків для простого перекладу Laravel .

Щоб зробити це, відкрийте файл подання, який потрібно локалізувати, наприклад, resources/views/welcome.blade.php. Потім замініть тег body на наступний код.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                Welcome to Linguise website!
            </div>
        </div>
    </div>
</body>
				
			

Як бачите, текст вище наразі написано безпосередньо в коді. Це менш ефективно та ускладнює переклад вебсайтів різними мовами (інтернаціоналізацію). 

Ми зробимо наведений вище текст більш гнучким, щоб його можна було легко адаптувати до різних мов. 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',

				
			

Пояснення над ключами має бути зрозумілим. Підсумовуючи, ключ locale зберігає мову за замовчуванням для вашого застосунку (якщо в коді не вказано іншої мови). Параметр 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 .

  1. Застарілий підхід передбачає зберігання файлів за шляхом: resources/lang/{en,fr,it}/{myfile.php}.
  2. Сучасний підхід використовує файли 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.

Потім додайте всередину наступний код.

				
					<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Session;

class Localization
{
    /**
    * Handle an incoming request.
    *
    * @param  \Illuminate\Http\Request  $request
    * @param  \Closure  $next
    * @return mixed
    */
    public function handle(Request $request, Closure $next)
    {
        if (Session::has('locale')) {
            App::setLocale(Session::get('locale'));
        }
        return $next($request);
    }
}


				
			

Це проміжне програмне забезпечення вкаже Laravel використовувати місце, вибране користувачем, якщо цей параметр присутній у сесії.

Оскільки нам потрібно, щоб операція виконувалася під час кожного запиту, додайте її до стандартного стеку проміжного програмного забезпечення в app/Http/Kernel.php для групи проміжного програмного забезпечення web.

				
					/**
* The application's route middleware groups.
*
* @var array<string, array<int, class-string|string>>
*/
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 і вставте наступний код.

				
					<div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
    @foreach($available_locales as $locale_name => $available_locale)
        @if($available_locale === $current_locale)
            <span class="ml-2 mr-2 text-gray-700">{{ $locale_name }}</span>
        @else
            <a class="ml-1 underline ml-2 mr-2" href="language/{{ $available_locale }}">
                <span>{{ $locale_name }}</span>
            </a>
        @endif
    @endforeach
</div>


				
			

Щоб додати щойно створений перемикач мов у поданні «welcome», просто додайте наведений нижче рядок до файлу welcome.blade.php у тому місці, де ви хочете, щоб з’явився перемикач.

				
					<body class="antialiased">
    <div class="relative flex items-top justify-center min-h-screen bg-gray-100 sm:items-center py-4 sm:pt-0">
        <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
            @include('partials/language_switcher')

            <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
                {{ __('Welcome to our website!') }}
            </div>
        </div>
    </div>
</body>


				
			

Відкрийте файл 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 для відображення локалізованої дати.

				
					<?php
Route::get('/', function () {
    $today = \Carbon\Carbon::now()
        ->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’]) }}
<br>
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
<br>
{{ $date_message }}


				
			

Форматування чисел і валют

У різних країнах існують різні способи форматування чисел. Наприклад.

  • Франція → 123 123,12
  • Німеччина → 123,123,12
  • Японія → 123 123

Щоб врахувати ці варіації у вашому застосунку Laravel , ви можете використовувати NumberFormatter.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::DECIMAL);

$num2 = NumberFormatter::create('fr', NumberFormatter::DECIMAL);
				
			

Ви також можете записувати числа словами певною мовою.

				
					<?php
$num = NumberFormatter::create('en_US', NumberFormatter::SPELLOUT);

$num2 = NumberFormatter::create('it', NumberFormatter::SPELLOUT);
				
			

Ось валюти. Для французького регіону (`fr`) валюта відображатиметься в євро (€), а для американського регіону (`en_US`) — у доларах США ($).

				
					<?php
$currency1 = NumberFormatter::create('it', NumberFormatter::CURRENCY);

$currency2 = NumberFormatter::create('en_US', NumberFormatter::CURRENCY);
				
			
Break Language Barriers
Попрощайтеся з мовними бар'єрами та привітайте безмежне зростання! Спробуйте наш сервіс автоматичного перекладу вже сьогодні.

Альтернативне рішення для локалізації Laravel за допомогою Linguise

Команда, яка працює разом над цифровим проєктом. Їх оточують різноманітні цифрові інструменти та символи.

Після розуміння кроків локалізації Laravel , описаних у статті, цей процес включає багато кроків, які вимагають від користувачів глибокого розуміння програмного коду Laravel .

Це, безумовно, може ускладнити роботу для новачків, які хочуть локалізувати свої застосунки. Тому потрібне більш інноваційне рішення, здатне забезпечити швидкий переклад, підтримує локалізацію та вимагає лише кількох простих кроків для впровадження.

Одним із перспективних рішень є Linguise. Linguise пропонує простіший і ефективніший підхід до локалізації Laravel без потреби в глибоких знаннях програмування. Ключові функції Linguise включають.

  • Проста інтеграція з Laravel
  • Налаштуйте перемикач мови без кодування
  • Переклад зображень
  • Живий редактор для налаштування перекладів відповідно до місцевого контексту
  • Динамічний переклад для динамічно згенерованого вмісту
  • SEO-оптимізація для багатомовних версій

Кроки для встановлення Linguise на Laravel вебсайтах також можна виконати легко. Ось коротке пояснення.

  1. Створіть обліковий запис Linguise (скористайтеся 30-денною безкоштовною пробною версією)
  2. Зареєструйте свій вебдомен Laravel і введіть деяку інформацію. Ви отримаєте ключ API.
  3. Завантажте та підключіть скрипт перекладу Linguise до папки Laravel , яку ви отримали.
  4. Налаштуйте URL-адреси мов у файлі htaccess.
  5. Вставте скрипт перемикача мов у розділ head вашого HTML.
  6. Налаштуйте перемикач мови за потреби
  7. Перемикач мов з’явиться на вебсайті Laravel , а вміст можна перекладати автоматично.

Як? З Linguiseвам потрібно лише зареєструватися та активувати, і перемикач мов з’явиться. Після цього ви можете вільно локалізувати, наприклад, через живий редактор, перекладати медіа, зображення тощо.

Готові вийти на нові ринки? Спробуйте наш сервіс автоматичного перекладу безкоштовно протягом 1 місяця без ризику. Кредитна картка не потрібна!

Conclusion

Локалізація Laravel — це потужна функція, яка дозволяє розробникам створювати багатомовні вебсайти та застосунки. Як ми бачили, вбудований процес локалізації Laravel включає кілька кроків і вимагає доброго розуміння фреймворку. Це може бути складним для початківців або тих, хто шукає швидше рішення.

Інструменти, як-от Linguise , пропонують інноваційну альтернативу для тих, хто шукає більш оптимізований підхід. Ці рішення забезпечують швидкий переклад, легку інтеграцію та зручні функції, як-от настроювані перемикачі мов і переклад зображень. Тепер створіть свій обліковий запис Linguise і скористайтеся нашою функцією для локалізації вашого Laravel!

Вам також може бути цікаво прочитати

Don't miss out!
订阅我们的新闻通讯

Отримуйте новини про автоматичний переклад вебсайтів, міжнародне SEO та багато іншого!

Invalid email address
Спробуйте. Один раз на місяць, і ви можете відписатися в будь-який час.

Не йдіть, не поділившись своєю електронною поштою!

Ми не можемо гарантувати, що ви виграєте в лотерею, але можемо пообіцяти цікаві інформаційні новини про переклад та періодичні знижки.

Don't miss out!
Invalid email address