• Час читання ~18 хв
  • 22.06.2022

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

Що, якби ми сказали вам, що ви можете повністю автоматизувати процес локалізації за допомогою дій Localazy та GitHub? І під повністю, ми маємо на увазі повністю.

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

Ви дізнаєтеся, як: 

  • встановити Laravel Framework і запустити свій перший додаток,
  • налаштуйте ваш Git-репозиторій,
  • підготувати проект Laravel до локалізації,
  • з'єднати його з Localazy і перекласти на кілька мов,
  • автоматизуйте завантаження рядків і завантаження перекладів за допомогою GitHub Actions.

Встановити фреймворк

Laravel Є пара способів установки Laravel (вибирайте той, який підходить вам і вашої ОС). Як правило, ви, ймовірно, використовуєте композитор для встановлення фреймворка. Але оскільки я використовую macOS і хочу зберегти свій ноутбук якомога чистішим, я вирішив встановити Laravel через curl, який завантажує контейнеризовану програму.

Це величезна перевага, якщо ви розробляєте на Mac і запускаєте Docker Desktop - і ми знаємо переваги докеризованих додатків (для всіх зацікавлених я рекомендую прочитати Docker Deep Dive: Zero to Docker в одній книзі).

Давайте встановимо додаток. Я ввів laravel-i18n-gh-actions-example назву свого додатка.

curl -s "https://laravel.build/laravel-i18n-gh-actions-example" | bash

Встановлення Laravel через curl

Додаток поставляється з Laravel Sail, який був представлений з Laravel 8. Це інтерфейс командного рядка для взаємодії з середовищем розробки Docker за замовчуванням Laravel. Sail забезпечує спосіб створення програми Laravel, не вимагаючи попереднього досвіду Docker.


Запустіть додаток

Laravel Гаразд, проект створено. Прийшов час запустити додаток. Перейдіть до каталогу програми та запустіть Laravel Sail.

cd laravel-i18n-gh-actions-example && ./vendor/bin/sail up

Running the Laravel Sail

Цей процес запускає програму. Вперше це може зайняти деякий час, оскільки потрібно побудувати контейнери для застосування, тому наберіться терпіння. Варто зазначити - якщо ви експерт Docker - все про Sail можна налаштувати за допомогою файлу, docker-compose.yml що входить до складу Laravel.

Після запуску контейнерів Docker програми ви можете отримати доступ до програми у своєму веб-браузері за адресою: http://localhost. Ви повинні побачити екран, подібний до наведеного нижче.

Запуск


програми LaravelSetup Git - чого ми хочемо досягти?

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

Я хотів би показати вам відносно простий приклад, щоб ви могли зрозуміти дії GitHub. Наступні кроки не матимуть особливого сенсу, якщо ви не знаєте, чого я хочу досягти. Так що ж це таке?

Уявіть собі такий робочий процес:

  • У нас є дві основні гілки, і master, develop
  • Потім для кожного завдання, над яким ми працюємо, ми створюємо нову гілку (залежно від назви завдання - назвіть її foo для нашого простого завдання),
  • у foo гілці визначаємо нові вихідні ключі під час роботи над завданням,
  • Коли він буде готовий, ми створюємо pull request to develop,
  • на цьому етапі ми хочемо, щоб вихідні ключі були завантажені та синхронізовані з Localazy для перекладу,
  • Тим часом перекладачі можуть працювати над перекладами,
  • Потім, коли настане час випустити додаток, ми створимо pull request від develop to ,master
  • тепер, коли ми приймаємо PR і, отже, рухаємося до гілки, ми хочемо завантажити переклади (у файлах локалізації) і підштовхнути їх до master освоєння з кодом, і, швидше за все, запустити деякі інші завдання (наприклад, протестувати додаток, побудувати/відправити додаток, ...) - залежно від ваших потреб,
  • Потім, все готово.

Створення та ініціалізація Git-репозиторію

Тепер нам потрібно налаштувати Git. Перейдіть на свій GitHub і створіть порожнє сховище. Скопіюйте віддалену адресу та ініціюйте git у нашому проекті Laravel.

git init

Then, add a new remote and paste the copied address.

git remote add origin [email protected]:localazy/laravel-i18n-gh-actions-example.git

Let's push the project to master branch. I use VSCode, so I've done it all in the user interface as it's more convenient, at least for me.

Потім створіть гілку develop та перейдіть до неї. Опублікувати відділення на віддалений.

git switch -c develop

Now, create a foo branch and switch there. Our Laravel-related code things will be happening here. We'll get there in a moment.

git switch -c foo

Prepare Blade templates & source translation file(s)

Ми у foo відділенні, настав час підготувати шаблон Blade до локалізації. Існує два основних підходи до локалізації додатків Laravel. Один використовує файли PHP, а другий - файли JSON. Ви також можете об'єднати їх обидва, що також може бути варіантом використання у вашому проекті.

У будь-якому випадку, у цьому прикладі ми будемо використовувати php файли. Файли перекладів розташовуються в каталозі в lang корені програми. Оскільки наша вихідна мова англійська, створіть новий файл у en каталозі під назвою welcome.php.

return [
    'laravel' => 'Laravel',
    'home' => 'Home',
    'log_in' => 'Log in',
    'register' => 'Register',
    'documentation' => 'Documentation',
    'documentation_text' => 'Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.',
    'laracasts' => 'Laracasts',
    'laracasts_text' => 'Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.',
    'laravel_news' => 'Laravel News',
    'laravel_news_text' => 'Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.',
    'vibrant_ecosystem' => 'Vibrant Ecosystem',
    'vibrant_ecosystem_text' => 'Laravel\'s robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline">Forge</a>, <a href="https://vapor.laravel.com" class="underline">Vapor</a>, <a href="https://nova.laravel.com" class="underline">Nova</a>, and <a href="https://envoyer.io" class="underline">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline">Telescope</a>, and more.',
    'shop' => 'Shop',
    'sponsor' => 'Sponsor',
    'laravel_version' => 'Laravel v:version',
    'php_version' => '(PHP v:version)',
];

lang/en/welcome.php

Для конкретності, ми можемо ігнорувати json файли перекладів, тому створіть a .gitignore в lang каталозі.

# ignore json files
*.json

lang/.gitignore

Як ви можете помітити, welcome.php файл тепер містить ключові тексти з шаблонуwelcome.blade.php. Тепер замініть рядки в шаблоні для ключів, які ми щойно визначили. Наведу кілька прикладів:

  • <title>Laravel</title>-> <title>{{ __('welcome.laravel') }},
  • <div ...><a ...>Documentation</a></div>-> <div ...><a ...{{ __('welcome.documentation') }}</a></div>,
  • <div ...>Laravel's robust library of...</div>-> <div ...>{!! __('welcome.vibrant_ecosystem_text') !!}</div>,
  • <div ...>Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }})</div>-> <div ...>{ __('welcome.laravel_version', ['version' => Illuminate\Foundation\Application::VERSION]) }} {{ __('welcome.php_version', ['version' => PHP_VERSION]) }}</div>.

Перші два приклади досить прості; Це стандартний синтаксис для відображення рядка перекладу.

У третьому прикладі ми повинні сказати Блейду, щоб він не вислизав від даних. Хоча ви повинні бути обережними, повторюючи вміст, який не втік, оскільки ваш додаток може бути вразливим до атак XSS.

Четвертий приклад замінює заповнювачі, які ми використовуємо у файлі вихідної welcome.php мови (:version). Щоб замінити покажчик місця заповнення в шаблоні Blade, передайте функцію

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

Просто для того, щоб це перевірити, якщо ми оновимо нашу сторінку зараз - вона повинна виглядати точно так само, як і до екстерналізації.

Підключення додатку Laravel до проекту

Localazy Перейдіть на сторінку реєстрації Localazy та створіть безкоштовний обліковий запис або увійдіть (якщо ви вже приєдналися до нашої спільноти). Потім назвіть свою організацію та створіть новий проект.

Виберіть англійську мову як вихідну мову. Крім того, ви можете ввімкнути опцію Використовувати переклади спільноти (ShareTM), щоб деякі рядки автоматично перекладалися Localazy.

На сторінці інтеграції виберіть інтеграцію Laravel. Скопіюйте фрагмент коду в буфер обміну.

Localazy.com - Laravel integration page

У корені проекту створіть файл з назвою localazy.json. Цей файл служить конфігураційним файлом для Localazy CLI. Наведений вище приклад (який ми змінимо відповідно до наших потреб) є однією з найпростіших форм конфігурації. Існує безліч способів, як налаштувати localazy.json файл під свої потреби, все докладно описано в нашій документації.

Вставте код у localazy.jsonфайл . Цей файл слід надіслати до сховища Git. Хоча, не варто просувати секрети як writeKey і readKey. Що ми робимо? Створіть ще один файл у корені проекту з ім'ям localazy.keys.json, а потім виріжте та вставте в нього ключі. Після цього додайте останній файл до .gitignore, також розташованого в корені проекту.

# other .gitignore contents...

# Localazy keys
localazy.keys.json

.gitignore

Оновіть localazy.json відповідно до нашої програми

Далі нам доведеться трохи налаштувати файл, localazy.json щоб все працювало правильно. Ось останній погляд:Дозвольте мені пояснити:

{
    "upload": {
      "type": "php",
      "files": "lang/en/**.php"
    },
    "download": {
      "files": "lang/${lang}/${file}"
    }
}

localazy.json

Як я вже згадував, я перемістив writeKey і readKey в окремий файл, тому його більше немає тут. Змінилася властивість викликуupload.files. Значення говорить, що ми хочемо завантажити всі файли з lang/en каталогуphp. Файли служать файлами вихідної мови. Детальне пояснення можна знайти в посиланні на завантаження.

Аналогічна зміна є і в розділіdownload.files. Значення цієї властивості наказує командному рядку завантажувати файли з таким самим іменем, що й завантажений файл (заповнювач${file}). Також файли повинні бути згруповані в папки за мовою (заповнювач${lang}). Всі можливі варіанти, детально описані в довіднику Завантажити.

Гаразд, здійснюйте і підштовхуйте наш прогрес; Настав час для наступного кроку.

Необов'язково: локальне

тестове завантаження Нагадуємо, що ми хочемо автоматизувати наш робочий процес за допомогою GitHub Actions. Якщо ви не хочете тестувати його локально, перейдіть до наступного розділу. Але іноді розробники хотіли б протестувати переклади під час розробки (я також хотів переконатися, що я все правильно налаштував, перш ніж приступати до дій GitHub). Отже, якщо вам цікаво, я покажу вам, як.

Існує багато способів установки командного рядка Localazy (в залежності від декількох факторів). Я хотів використовувати образ Docker, щоб перевірити його, але, на жаль, чіпи Apple Silicon ще не підтримуються, тому я використовував установку через NPM.

Localazy радить встановити пакет в систему глобально, хоча я встановив його в папку проекту.

npm install @localazy/cli

After that, to test the upload, use:

npx localazy upload -s

The parameter -s stands for simulate. It won't actually upload the strings to Localazy, but CLI will certainly tell you if anything possibly went wrong. All good, everything is set up correctly! We can proceed to GitHub Actions.

Додайте секрети до нашого сховища   

Щоб GitHub Actions працювали, нам потрібно створити секрети в нашому сховищі. Чому? Пізніше, коли ми будемо використовувати Localazy Upload і Localazy Download Actions, нам потрібно, щоб вони читалися writeKey і readKey звідкись (щоб належним чином отримати доступ до нашого проекту Localazy). А оскільки ми не хочемо, щоб їх заштовхували в сховище (причини, описані раніше в статті), додамо їх як секрети.

У репо перейдіть до Settings -> Secrets -> Actions. Я назвав секрети LOCALAZY_READ_KEY і LOCALAZY_WRITE_KEY відповідно. Призначимо обидва його readKey/writeKey значення, наша конфігурація повинна виглядати так.

laravel-i18n-gh-actions-приклад секретів сховища

Автоматизуйте завантаження за допомогою GitHub Actions

У нашій IDE створіть .github/workflows/upload.yml файл. Крім того, ви можете зробити все це зі сховища, перейдіть до Actions -> New workflow -> Setup a workflow yourself. Назвіть його, додайте код робочого циклу нижче та просто натисніть йогоupload.yml.

Ось як повинен виглядати код:

name: Localazy Upload

on:
  push:
    branches: [ develop ]
    paths: [ lang/en/**.php ]

  pull_request:
    branches: [ develop ]
    paths: [ lang/en/**.php ]

  workflow_dispatch:

jobs:
  localazy-upload:
    name: Upload source language strings to Localazy
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: localazy/upload@v1
        with:
          read_key: ${{ secrets.LOCALAZY_READ_KEY }}
          write_key: ${{ secrets.LOCALAZY_WRITE_KEY }}

.github/workflows/upload.yml

Давайте покопаємося в файлі і пояснимо його. Нагадаю, що загальною метою цієї дії є завантаження нових рядків вихідної мови до Localazy у push гілці або pull_request в(до). develop

Факти:

  • Дії ми присвоїли зрозумілу людині назву Localazy Upload,
  • on елементи керування під час виконання робочого процесу,
  • ми хочемо запустити робочий процес на push pull_request або в develop гілку (задано ),branches: [ develop ]
  • У той же час, ми хочемо запустити робочий процес тільки в тому випадку, якщо будь-який з вихідних мовних файлів змінений (заданий paths: [ lang/en/**.php ]),
  • ми також хотіли б дозволити запуск робочого процесу вручну з вкладки Дії (),workflow_dispatch:
  • ми визначили один job (робочий процес складається з одного або декількох завдань, які можуть виконуватися послідовно або паралельно),
  • це job називається localazy-upload і має зрозумілу людині назву Завантажити рядки вихідної мови в Localazy (яка потім відображається в робочому процесі дій GitHub),
  • Ми вказали, що тип бігуна, на якому буде виконуватися завдання, - це ,ubuntu-latest
  • jobскладається з двох кроків - послідовності завдань, які будуть виконуватися в рамках роботи,
  • Перший крок actions/checkout@v3 перевіряє ваш репозиторій у розділі $GITHUB_WORKSPACE, щоб ваша робота могла отримати до нього доступ (документація тут)
  • Другий крок localazy/upload@v1 зчитує конфігурацію з localazy.json і обробляє завантаження with за допомогою read_key і write_key,
  • read_keyі значення читаються з secrets.LOCALAZY_READ_KEY і secrets.LOCALAZY_WRITE_KEY write_key змінні відповідно.

Давайте зараз протестуємо робочий процес. У нашому foo відділенні фіксуйте та просувайте всі зміни, які ми зробили. Перейдіть на GitHub і зробіть pull request на develop.

Create pull request develop <- foo

Як тільки створюється pull request, запускається наш робочий процес. Ви можете сказати, що деякі перевірки ще не завершені. Крім того, поруч із робочим циклом Localazy Upload є помаранчеве коло, що означає, що він працює.

Pull request with running workflow

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

Upload workflow result

Все оброблено правильно! Ви також можете натиснути на стрілку поруч із кожним кроком, щоб переглянути його деталі. Наприклад, якщо ми натиснемо на Виконати localazy/upload@v1 action output.

Localazy CLI, v1.6.0
Command-line tool for the Localazy platform.

Read more information at https://localazy.com/docs/cli

Parameters:
  - deprecate missing: no
  - import as new: false
  - force current: false
  - filter source: true
  - app version: 0
  - groups: (default only)
  - folder: .

Processing files...

lang/en/welcome.php
(file: welcome.php, lang: inherited, type: php)

lang/en/validation.php
(file: validation.php, lang: inherited, type: php)

lang/en/auth.php
(file: auth.php, lang: inherited, type: php)

lang/en/passwords.php
(file: passwords.php, lang: inherited, type: php)

lang/en/pagination.php
(file: pagination.php, lang: inherited, type: php)

Verifying...

Validating...

Uploading 3 kB...

Upload results: 126 added, 0 updated, 0 deprecated
Using 397 out of 45000 source keys

Your app on Localazy: https://localazy.com/p/laravel-i18n-gh-action-example

Done.

localazy/upload@v1 action output

Чудово, зайдемо в додаток в Localazy і перевіримо розділ Управління файлами. Як ми могли бачити, всі файли там доступні.

Localazy - File management

Перекладайте тексти мовою Localazy

Тепер додайте пару мов, перекладіть і затвердіть деякі фрази.

Localazy пропонує три підходи на вибір та комбінацію для перекладу вашого проекту:

  1. 💪🏻 Translate on your own or invite contributors - You can start translating on your own and use our built-in suggestion system. Suggestions are drawn from the most popular machine translation engines and the ShareTM mentioned above. To get some additional help as your project grows, you can invite volunteers or translators you already know.
  2. 🦾 Translate everything in bulk via machine translation - With the Localazy Autopilot plan, you can translate whole files instantly by running a machine translation over the content. This is great for the first iteration and localization testing.
  3. 🚩 Fully automate the translation process with the Continuous Localization services - Once your Localazy integration is set up, you can order translations from our vetted translators and get your project translated by professionals automatically. The service is also proactive, so you don't have to micromanage translators, and you can visit Localazy only once in a while to check the progress.

Для наших цілей я переклав welcome.php його чеською, німецькою та іспанською мовами. Ви можете побачити все це на наступних двох скріншотах.

Localazy - Список мов

Localazy - Список

мовних фраз Підводячи підсумок, відтепер, за кожним запитом pull або push для розробки, всі нові або оновлені початкові ключі будуть завантажуватися в Localazy готовими до перекладу.

Тепер ми можемо об'єднати pull request і закрити гілкуfoo. Потім у нашій IDE поверніться до develop гілки та pull оновлень.

git switch develop && git pull

Automate Download with GitHub Actions

Аналогічно для завантаження, нам потрібно створити інший робочий процес. Зайдіть в проект IDE і створіть download.yml файл в .github/workflows каталозі.

name: Localazy Download
on:
  push:
    branches: [ master ]

  workflow_dispatch:

jobs:
  localazy-download:
    name: Download strings from Localazy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - uses: localazy/download@v1
        with:
          read_key: ${{ secrets.LOCALAZY_READ_KEY }}
          write_key: ${{ secrets.LOCALAZY_WRITE_KEY }}
      - run: |
          ls lang/**/**.php
      - run: |
          git config --local user.email "[email protected]"
          git config --local user.name "david-vaclavek[bot]"
          git add lang
          git commit -m "Add locale files" -a
      - uses: ad-m/github-push-action@master
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: master

.github/workflows/download.yml

Щоб робочі процеси були в нашій крові, давайте ще раз пройдемося по файлу:

  • Дії ми присвоїли зрозуміле людині ім'я Localazy Download,
  • on елементи керування під час виконання робочого процесу,
  • ми хочемо запустити робочий процес на push master гілку (задається ),branches: [ master ]
  • нам подобається дозволяти запускати робочий процес вручну з вкладки Дії (),workflow_dispatch:
  • ми визначили один job (робочий процес складається з одного або декількох завдань, які можуть виконуватися послідовно або паралельно),
  • це job називається localazy-download і має свою зрозумілу людині назву Download strings from Localazy (яка потім відображається в GitHub Actions Workflow),
  • Ми вказали, що тип бігуна, на якому буде виконуватися завдання, - це ,ubuntu-latest
  • jobскладається з п'яти кроків - послідовності завдань, які будуть виконуватися в рамках роботи,
  • Перший крок actions/checkout@v3 перевіряє ваш репозиторій у розділі $GITHUB_WORKSPACE, щоб ваша робота могла отримати до нього доступ (документація тут)
  • оскільки ми будемо штовхати в інший репозиторій, нам потрібно використовувати йогоwith fetch-depth: 0, щоб запобігти помилкам, що виштовхують посилання до цільового репозиторію (більше інформації про це можна знайти в документації дій GitHub Push),
  • другий крок localazy/download@v1 читає конфігурацію з і обробляє download завантаження з localazy.json Localazy with за допомогою read_key і write_key,
  • read_keyі значення читаються з secrets.LOCALAZY_READ_KEY і secrets.LOCALAZY_WRITE_KEY write_key змінні відповідно,
  • третій крок можна пропустити, але я просто хотів показати вам список файлів, які були завантажені (ls lang/**/.php команда),
  • четвертий крок налаштовує конфігурацію git (user.email, user.name),
  • Він також додає всі (нові) файли зі lang сховища в проміжну область (git add lang),
  • потім він фіксує всі додані файли,
  • п'ятий крок використовує дію під назвою ad-m/github-push-action@master, яку я знайшов у GitHub Actions Marketplace і задокументована тут,
  • Ця дія виштовхує раніше здійснені файли у master гілку за допомогою secrets.GITHUB_TOKEN змінної (докладніше про GITHUB_TOKEN Secret).

Взагалі кажучи, секрет тут з міркувань безпеки і створюється на початку кожного робочого процесу, GITHUB_TOKEN запущеного GitHub. Його можна використовувати для автентифікації під час виконання робочого процесу. Коли закінчується, він закінчуєтьсяjob.

Гаразд, тепер настав час протестувати наш робочий процес. Спочатку виштовхніть новостворений файл download.yml на віддалений режим. Давайте створимо ще один pull request, на цей раз до master. Цього разу не запускається робочий процес, коли ми створюємо pull request - це саме те, що ми хотіли.

Але як тільки ми об'єднаємо pull request, наш робочий процес буде запущений. Коли він закінчиться, ми зможемо ознайомитися з деталями кожного кроку. Наприклад, ми можемо побачити, які файли ми завантажили за дієюlocalazy/download@v1.

Download workflow result

Коли ми перевіряємо наш репозиторій, то бачимо, що master гілка була оновлена новими файлами локалізації, залишивши гілку develop без них. І це саме те, що ми хотіли зробити в цьому прикладі.

Папка lang у гілці

MasterБільшість кроків щодо дій GitHub були зроблені зстатті Automated Localization: GitHub Actions ❤ Localazy,зробленоїВацлавом Годеком - дякую за натхнення.

Останній крок - дивіться наш перекладений додаток

Ми дійшли до кінця цієї статті. Але це не буде завершено, не показавши вам результат. Нам потрібно трохи налаштувати веб-маршрутизацію Laravel, щоб вона враховувала передану мову. Зазвичай ви працюєте в окремій гілці (можливоfoo2?), об'єднуєте її в develop, тестуєте, а потім об'єднуєте в master або близько того... Але для наших цілей давайте просто швидко його протестуємо.

Давайте перейдемо до master вашої IDE та git pull змін.. Перейдіть до routes/web.php. У цьому файлі можна прописати веб-маршрути для програми. Оновіть код:

<?php
 
use Illuminate\Support\Facades\Route;
 
Route::get('/{locale?}', function ($locale = null) {
    if (isset($locale)) {
        app()->setLocale($locale);
    }
 
    return view('welcome');
});

routes/web.php

За допомогою коду вище ми кажемо програмі встановити локалізацію, якщо на шляху є параметр.locale Все, решта це робиться автоматично. Спробуйте деякі з цих URL-адрес:    

Наш додаток англійською мовою, мовою оригіналу

Наш додаток іспанською, переклад Localazy

Наш додаток німецькою мовою, перекладено Localazy

Наш додаток чеською мовою, перекладено Localazy

  • localhost/pl- На жаль, є запасний варіант до англійської мови, який встановлений як мова за замовчуванням (докладніше про це тут)

Щоб перевірити, чи відсутні деякі переклади без відвідування Localazy, ви можете скористатися засобом перевірки перекладів Laravel. Таким чином, ви можете бути зручно заправлені у свою IDE і повністю зосередитися на створенні свого проекту Laravel. Але ми сподіваємося, що ви час від часу привітаєтеся і побачите, що нового всередині Localazy.

Вихідний код

Вихідний код цього демо-проекту доступний на GitHub. Не забудьте вивчити вміст папки.github/workflows!

Отримайте 25% знижку на плани

Localazy Вітаємо, що ви досягли цього далеко! Ви повинні по-справжньому любити Ларавель! Ми це робимо, тому ми хотіли б запропонувати знижку 25% кожному, хто читає це.

🏷️ Використовуйте код "laravelnews" для придбання плану Localazy та отримайте знижку 25% на будь-який план Localazy на 1 рік. ⭐

Локалізуйте свій проект Laravel і отримуйте винагороду!

Якщо ви шукали спосіб нарешті локалізувати свій проект Laravel і надихнулися цією статтею, ми хотіли б почути вашу історію та представити ваш продукт у нашому блозі. Додайте цю статтю в закладки та заповніть форму інтерв'ю, як тільки ви запустите Localazy.

💰 Пропозиція Bounty: Якщо ви вважаєте, що можете знайти кращий спосіб інтеграції Localazy з Laravel Framework і хочете розробити власну інтеграцію, бібліотеку або утиліту, повідомте нам!

Висновок

Сподіваємося, вам сподобалася ця стаття, в якій показані можливості дій Localazy і GitHub для локалізації Laravel. Ми вважаємо, що все, що можна автоматизувати, має бути автоматизовано, і локалізація — одна з таких речей.

Не соромтеся звертатися до нас за адресою [email protected], якщо у вас виникнуть запитання щодо цього підручника або Localazy загалом.

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

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297