• Czas czytania ~18 min
  • 22.06.2022

Każdy programista, który przynajmniej raz spotkał się z wyzwaniem lokalizacji, powie Ci, że jest to żmudna praca. Myślę, że możemy się zgodzić, że dbanie o wiele wersji językowych nie jest tak zabawne, jak wprowadzanie nowych funkcji do produktu, który kochasz. I nie mówimy tylko o internacjonalizacji, ale także o zarządzaniu tłumaczami, obsłudze różnych wersji, ping-pongu tłumaczeniowym i niezliczonych poprawkach. Dlatego lokalizacja jest często zaniedbywana i zakopywana głęboko w zaległościach.

Co by było, gdybyśmy powiedzieli Ci, że możesz całkowicie zautomatyzować proces lokalizacji za pomocą Localazy i GitHub Actions? I przez całkowicie, mamy na myśli całkowicie.

Co to jest Localazy? Localazy to kompletny pakiet lokalizacyjny zbudowany z myślą o programistach. Localazy pozwala w pełni zautomatyzować lokalizację projektów Laravel. Skonfiguruj go raz i zapomnij o kłopotach na zawsze.

Dowiesz się, jak: 

  • zainstaluj Laravel Framework i uruchom swoją pierwszą aplikację,
  • skonfiguruj swoje repozytorium Git,
  • przygotować swój projekt Laravel do lokalizacji,
  • połączyć go z Localazy i przetłumaczyć na wiele języków,
  • zautomatyzuj przekazywanie ciągów i pobieranie tłumaczeń za pomocą akcji GitHub.automate string uploads and translation downloads with GitHub Actions.

Zainstaluj framework

Laravela Istnieje kilka sposobów instalacji Laravel (wybierz ten, który pasuje do Ciebie i Twojego systemu operacyjnego). Zazwyczaj prawdopodobnie użyjesz kompozytora do zainstalowania frameworka. Ale ponieważ używam macOS i chcę, aby mój laptop był tak czysty, jak to możliwe, zdecydowałem się zainstalować Laravel przez curl, który pobiera skonteneryzowaną aplikację.

Jest to ogromna zaleta, jeśli programujesz na Macu i masz uruchomiony Docker Desktop - a znamy zalety aplikacji dockerized (dla wszystkich zainteresowanych polecam przeczytanie Docker Deep Dive: Zero to Docker w jednej książce).

Załóżmy aplikację. Wpisałem laravel-i18n-gh-actions-example nazwę mojej aplikacji.

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

Instalowanie Laravel przez curl

Aplikacja jest dostarczana z Laravel Sail, który został wprowadzony wraz z Laravel 8. Jest to interfejs wiersza polecenia do interakcji z domyślnym środowiskiem programistycznym Docker firmy Laravel. Sail zapewnia sposób na zbudowanie aplikacji Laravel bez konieczności wcześniejszego doświadczenia Docker.


Uruchom aplikację

Laravel W porządku, projekt jest tworzony. Czas uruchomić aplikację. Przejdź do katalogu aplikacji i uruchom Laravel Sail.

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

Running the Laravel Sail

Ten proces uruchamia aplikację. Po raz pierwszy może to trochę potrwać, ponieważ kontenery aplikacji muszą zostać zbudowane, więc bądź cierpliwy. Warto zauważyć - jeśli jesteś ekspertem Docker - wszystko w Sail można dostosować za pomocą pliku dołączonego docker-compose.yml do Laravel.

Po uruchomieniu kontenerów Docker aplikacji możesz uzyskać dostęp do aplikacji w przeglądarce internetowej pod adresem: http://localhost. Powinieneś zobaczyć ekran podobny do poniższego.

Aplikacja Laravel uruchomiona i uruchomiona


Setup Git - co chcemy osiągnąć?

W poniższych krokach przygotujemy nasze repozytorium git dla przepływu pracy, który skonfigurujemy później. Jak możesz sobie wyobrazić, istnieją dziesiątki przepływów pracy odpowiednich dla różnych typów aplikacji - wszystko zależy od Twoich potrzeb.

Chciałbym pokazać ci stosunkowo prosty przykład, abyś mógł zrozumieć działania GitHub. Poniższe kroki nie będą miały większego sensu, jeśli nie wiesz, co chcę osiągnąć. Więc co to jest?

Wyobraź sobie ten przepływ pracy:

  • Mamy dwie główne gałęzie, i master, develop
  • następnie dla każdego zadania, nad którym pracujemy, tworzymy nową gałąź (w zależności od tytułu zadania - nazwij ją foo dla naszego foo simple task),
  • w foo gałęzi definiujemy nowe klucze źródłowe podczas pracy nad zadaniem,
  • Gdy jest gotowy, tworzymy żądanie ściągnięcia do develop,
  • w tym momencie chcemy, aby klucze źródłowe zostały przesłane i zsynchronizowane z Localazy w celu tłumaczenia,
  • Tymczasem tłumacze mogą pracować nad tłumaczeniami,
  • Następnie, gdy nadejdzie czas wydania aplikacji, utworzymy żądanie ściągnięcia od develop do master,
  • teraz, gdy akceptujemy PR i dlatego naciskamy do gałęzi, chcemy pobrać tłumaczenia (w plikach lokalizacyjnych) i popchnąć je do master opanowania z kodem, a najprawdopodobniej uruchomić inne zadania (takie jak testowanie aplikacji, budowanie / wysyłanie aplikacji, ...) - w zależności od potrzeb,
  • Wtedy wszystko jest gotowe.

Tworzenie i inicjowanie repozytorium

Git Teraz musimy skonfigurować Git. Przejdź do usługi GitHub i utwórz puste repozytorium. Skopiuj zdalny adres i init git w naszym projekcie 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.

Następnie utwórz develop gałąź i przełącz się na nią. Opublikuj gałąź jako zdalną.

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)

Jesteśmy w foo oddziale, czas przygotować szablon Blade do lokalizacji. Istnieją dwa główne podejścia do lokalizacji aplikacji Laravel. Jeden używa plików PHP, a drugi używa plików JSON. Można również połączyć je ze sobą, co może być również przypadkiem użycia w projekcie.

W każdym razie, w tym przykładzie użyjemy php plików. Pliki tłumaczeń znajdują się w lang katalogu głównym aplikacji. Ponieważ naszym językiem źródłowym jest angielski, utwórz nowy plik w en katalogu o nazwie 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

Ze względu na szczegółowość możemy zignorować json pliki tłumaczeń, więc utwórz je .gitignore w lang katalogu.

# ignore json files
*.json

lang/.gitignore

Jak widać, welcome.php plik zawiera teraz wpisane teksty z szablonuwelcome.blade.php. Teraz zastąp ciągi w szablonie dla kluczy, które właśnie zdefiniowaliśmy. Pozwólcie, że przytoczę kilka przykładów:

  • <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>.

Pierwsze dwa przykłady są dość proste; Jest to standardowa składnia wyświetlania ciągu translacji.

W trzecim przykładzie musimy powiedzieć Blade'owi, aby nie uciekał przed danymi. Należy jednak zachować ostrożność podczas powtarzania niezmienionej zawartości, ponieważ aplikacja może być podatna na ataki XSS.

Czwarty przykład zastępuje symbole zastępcze używane w pliku języka źródłowego welcome.php (:version). Aby zastąpić symbol zastępczy w szablonie bloku, przekaż tablicę zastąpień jako drugi argument __ funkcji.

Możesz znaleźć jeszcze więcej przykładów, w tym liczbę mnogą, tworzenie przełącznika języka (i bardziej szczegółowe wyjaśnienie) w świetnym artykule o tym, jak zbudować wielojęzyczną aplikację PHP z Localazy i Laravelnapisanym przezFrancisco Melo, który był moim punktem wyjścia i inspiracją do skomponowania tego posta.

Żeby to przetestować, jeśli odświeżymy teraz naszą stronę - powinna wyglądać dokładnie tak samo jak przed eksternalizacją.

Połącz aplikację Laravel z projektem

Localazy Przejdź do strony rejestracji Localazy i utwórz darmowe konto lub zaloguj się (jeśli już dołączyłeś do naszej społeczności). Następnie nadaj nazwę organizacji i utwórz nowy projekt.

Wybierz angielski jako język źródłowy. Możesz także włączyć opcję Użyj tłumaczeń społeczności (ShareTM), aby niektóre ciągi zostały przetłumaczone automatycznie przez Localazy.

Na stronie integracji wybierz pozycję Integracja Laravel.On the integrations page, select Laravel integration. Skopiuj fragment kodu do schowka.

Localazy.com - Laravel integration page

W katalogu głównym projektu utwórz plik o nazwie localazy.json. Ten plik służy jako plik konfiguracyjny dla Localazy CLI. Powyższy przykład (który zmodyfikujemy do naszych potrzeb) jest jedną z najprostszych form konfiguracji. Istnieje wiele sposobów na dostosowanie localazy.json pliku do swoich potrzeb, wszystko jest szczegółowo opisane w naszej dokumentacji.

Wklej kod do localazy.jsonpliku . Ten plik powinien zostać wypchnięty do repozytorium Git. Chociaż nie powinniśmy wciskać tajemnic takich jak writeKey i readKey. Czym się zajmujemy? Utwórz jeszcze jeden plik w katalogu głównym projektu o nazwie localazy.keys.json, a następnie wytnij i wklej do niego klucze. Następnie dodaj ten ostatni plik do .gitignore, również znajdującego się w katalogu głównym projektu.

# other .gitignore contents...

# Localazy keys
localazy.keys.json

.gitignore

Zaktualizuj localazy.json, aby pasował do naszej aplikacji

Następnie musimy nieco zmodyfikować localazy.json plik, aby wszystko działało poprawnie. Oto ostateczne spojrzenie:Pozwólcie, że wyjaśnię:

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

localazy.json

Jak już wspomniałem, przeniosłem writeKey i readKey do osobnego pliku, więc już go tu nie ma. Właściwość o nazwie uległa upload.files zmianie. Wartość mówi, że chcemy przesłać wszystkie php pliki z lang/en katalogu. Pliki służą jako pliki języka źródłowego. Szczegółowe wyjaśnienie można znaleźć w dokumencie referencyjnym przesyłania.

Podobna zmiana jest również w download.files sekcji. Wartość tej właściwości instruuje interfejs wiersza polecenia, aby pobierał pliki o tej samej nazwie, co przekazany plik (symbol zastępczy${file}). Ponadto pliki powinny być pogrupowane w foldery według języka (symbol zastępczy${lang}). Wszystkie możliwe opcje opisane szczegółowo można znaleźć w dokumentacji pobierania.

W porządku, angażuj się i popychaj nasz postęp; Czas na kolejny krok.

Opcjonalnie: prześlij lokalnie

test Przypominamy - chcemy zautomatyzować nasz przepływ pracy za pomocą GitHub Actions. Jeśli nie chcesz testować go lokalnie, przejdź do następnej sekcji. Ale czasami programiści chcieliby przetestować tłumaczenia podczas programowania (chciałem również upewnić się, że wszystko poprawnie skonfigurowałem przed przejściem do działań GitHub). Więc jeśli jesteś zainteresowany, pokażę ci, jak to zrobić.

Istnieje wiele sposobów instalacji Localazy CLI (w zależności od kilku czynników). Chciałem użyć obrazu Docker, aby go przetestować, ale niestety układy Apple Silicon nie są jeszcze obsługiwane, dlatego użyłem instalacji przez NPM.

Localazy radzi zainstalować pakiet do systemu globalnie, chociaż zainstalowałem go w folderze projektu.

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.

Dodaj sekrety do naszego repozytorium   

Aby działania GitHub działały, musimy utworzyć sekrety w naszym repozytorium. Dlaczego? Później, kiedy będziemy używać Localazy Upload i Localazy Download Actions, potrzebujemy ich do odczytu i readKey skądś (aby uzyskać dostęp do writeKey naszego projektu Localazy poprawnie). A ponieważ nie chcemy, aby zostały one wepchnięte do repozytorium (powody opisane wcześniej w artykule), dodamy je jako sekrety.

W repozytorium przejdź do Settings -> Secrets -> Actionspozycji . Nazwałem tajemnice LOCALAZY_READ_KEY i LOCALAZY_WRITE_KEY odpowiednio. Przypisujemy zarówno jego readKey/writeKeywartość, nasza konfiguracja powinna wyglądać tak.

laravel-i18n-gh-actions-example Sekrety

repozytoriumAutomatyzacja przekazywania za pomocą akcji

GitHub W naszym IDE utwórz .github/workflows/upload.yml plik. Alternatywnie możesz zrobić to wszystko z repozytorium, przejdź do Actions -> New workflow -> Setup a workflow yourself. Nazwij goupload.yml, dodaj poniższy kod przepływu pracy i po prostu go wypchnij.

Tak powinien wyglądać kod:

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

Zagłębmy się w plik i wyjaśnijmy go. Dla przypomnienia, ogólnym celem tej akcji jest przesłanie nowych ciągów znaków języka źródłowego do Localazy w push gałęzi

lub pull_request in(to). develop Fakty:

  • Do akcji przypisaliśmy czytelną dla człowieka nazwę Localazy Upload,
  • kontrolkion, kiedy przepływ pracy będzie uruchamiany,
  • chcemy uruchomić workflow na push lub pull_request do develop gałęzi (podane przez branches: [ develop ]),
  • Jednocześnie chcemy uruchomić przepływ pracy tylko wtedy, gdy którykolwiek z plików języka źródłowego ulegnie zmianie (podany przez paths: [ lang/en/**.php ]),
  • chcielibyśmy również umożliwić ręczne uruchamianie przepływu pracy z zakładki Akcje (workflow_dispatch:),
  • zdefiniowaliśmy jeden job (przebieg przepływu pracy składa się z jednego lub więcej zadań, które mogą być uruchamiane sekwencyjnie lub równolegle),
  • nazywa się to job i localazy-upload ma swoją czytelną dla człowieka nazwę Prześlij ciągi języka źródłowego do Localazy (która jest następnie wyświetlana w GitHub Actions Workflow),
  • Określiliśmy, że typ biegacza, na którym będzie przebiegać zadanie, to ubuntu-latest,
  • jobskłada się z dwóch kroków - sekwencji zadań, które będą wykonywane w ramach zadania,
  • Pierwszy krok actions/checkout@v3 sprawdza repozytorium w obszarze $GITHUB_WORKSPACE, aby Twoje zadanie mogło uzyskać do niego dostęp (dokumentacja tutaj)
  • Drugi krok localazy/upload@v1 odczytuje konfigurację z localazy.json i przetwarza przesyłanie za with pomocą read_key i write_key,
  • read_keyi wartości są odczytywane odpowiednio z secrets.LOCALAZY_READ_KEY i write_key secrets.LOCALAZY_WRITE_KEY zmienne.

Przetestujmy teraz przepływ pracy. W naszej foo branży zaangażuj się i przepchnij wszystkie zmiany, które wprowadziliśmy. Przejdź do usługi GitHub i wyślij żądanie ściągnięcia do develop.

Create pull request develop <- foo

Gdy tylko zostanie utworzone żądanie ściągnięcia, nasz przepływ pracy zostanie uruchomiony. Możesz to stwierdzić po Niektóre kontrole nie zostały jeszcze zakończone. Ponadto obok przepływu pracy Localazy Upload znajduje się pomarańczowe kółko, co oznacza, że jest uruchomiony.

Pull request with running workflow

Klikając Szczegóły, możemy wyświetlić szczegóły kroków przepływu pracy, który jest obecnie uruchomiony.

Upload workflow result

Wszystko przetworzone poprawnie! Możesz także kliknąć strzałkę obok każdego kroku, aby zobaczyć jego szczegóły. Na przykład, jeśli klikniemy Uruchom lokalnie / upload@v1 wyjście akcji.

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

Świetnie, przejdźmy do aplikacji w Localazy i sprawdźmy sekcję Zarządzanie plikami. Jak mogliśmy zobaczyć, wszystkie pliki są tam dostępne.

Localazy - File management

Przetłumacz swoje teksty w Localazy

Teraz dodaj kilka języków i przetłumacz i zatwierdź niektóre zwroty.

Localazy oferuje trzy podejścia do wyboru i połączenia w celu przetłumaczenia projektu:

  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.

Dla naszych celów przetłumaczyłem welcome.php go na czeski, niemiecki i hiszpański. Możesz zobaczyć to wszystko na poniższych dwóch zrzutach ekranu.

Localazy - Lista języków

Localazy - Lista

fraz językowych Podsumowując, od teraz, przy każdym pull request lub push to develop, wszystkie nowe lub zaktualizowane klucze źródłowe będą przesyłane do Localazy gotowe do tłumaczenia.

Teraz możemy scalić żądanie ściągnięcia i zamknąć foo gałąź. Następnie w naszym IDE przełącz się z powrotem na develop gałąź i pull aktualizacje.

git switch develop && git pull

Automate Download with GitHub Actions

Podobnie jak w przypadku przesyłania, musimy utworzyć kolejny przepływ pracy. Przejdź do IDE projektu i utwórz download.yml plik w .github/workflows katalogu.

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

Aby mieć przepływy pracy we krwi, przejdźmy do pliku jeszcze raz:

  • Do akcji przypisaliśmy czytelną dla człowieka nazwę Localazy Download,
  • kontrolkion, kiedy przepływ pracy będzie uruchamiany,
  • chcemy wyzwolić przepływ pracy na push master rozgałęzieniu (podane przez branches: [ master ]),
  • chcemy zezwolić na ręczne uruchomienie workflow z zakładki Akcje (workflow_dispatch:),
  • zdefiniowaliśmy jeden job (przebieg przepływu pracy składa się z jednego lub więcej zadań, które mogą być uruchamiane sekwencyjnie lub równolegle),
  • nazywa się to job i localazy-download ma swoją czytelną dla człowieka nazwę Pobierz ciągi z Localazy (które następnie są wyświetlane w GitHub Actions Workflow),
  • Określiliśmy, że typ biegacza, na którym będzie przebiegać zadanie, to ubuntu-latest,
  • jobskłada się z pięciu kroków - sekwencji zadań, które będą wykonywane w ramach zadania,
  • Pierwszy krok actions/checkout@v3 sprawdza repozytorium w obszarze $GITHUB_WORKSPACE, aby Twoje zadanie mogło uzyskać do niego dostęp (dokumentacja tutaj)
  • ponieważ będziemy pchać do innego repozytorium, musimy go with fetch-depth: 0 użyć, aby zapobiec błędom wypychającym refy do repozytorium docelowego (więcej informacji na ten temat można znaleźć w dokumentacji akcji GitHub Push),
  • drugi krok localazy/download@v1 odczytuje download konfigurację z i przetwarza pobieranie z localazy.json Localazy with za pomocą read_key i write_key,
  • read_keya write_key wartości są odczytywane odpowiednio z secrets.LOCALAZY_READ_KEY i secrets.LOCALAZY_WRITE_KEY zmienne,
  • trzeci krok można pominąć, ale chciałem tylko pokazać listę plików, które zostały pobrane (ls lang/**/.phppolecenie),
  • Czwarty krok konfiguruje konfigurację Git (user.email, user.name),
  • dodaje również wszystkie (nowe) pliki z lang repozytorium do obszaru przemieszczania (git add lang),
  • następnie zatwierdza wszystkie dodane pliki,
  • piąty krok wykorzystuje akcję o nazwie ad-m/github-push-action@master, którą znalazłem przeglądając GitHub Actions Marketplace i jest udokumentowana tutaj,
  • Ta akcja wypycha wcześniej zatwierdzone pliki do master gałęzi przy użyciu secrets.GITHUB_TOKEN zmiennej (więcej informacji o wpisie GITHUB_TOKEN tajnym).

Ogólnie rzecz biorąc, GITHUB_TOKEN tajny jest tutaj ze względów bezpieczeństwa i jest tworzony na początku każdego przepływu pracy uruchamianego przez GitHub. Może służyć do uwierzytelniania w przebiegu przepływu pracy. job Po zakończeniu wygasa.

Dobra, teraz czas na przetestowanie naszego przepływu pracy. Najpierw wypchnij nowo utworzony plik download.yml do trybu zdalnego. Utwórzmy kolejne żądanie ściągnięcia, tym razem do master. Tym razem nie ma uruchomionego przepływu pracy, gdy tworzymy żądanie ściągnięcia - dokładnie tego chcieliśmy.

Ale gdy tylko połączymy żądanie ściągnięcia, nasz przepływ pracy zostanie uruchomiony. Po jego zakończeniu możemy przejść przez szczegóły każdego kroku. Na przykład możemy zobaczyć, jakie pliki pobraliśmy przez localazy/download@v1 działanie.

Download workflow result

Kiedy sprawdzamy nasze repozytorium, widzimy, że master gałąź została zaktualizowana o nowe pliki lokalizacyjne, pozostawiając develop gałąź bez nich. I to jest dokładnie to, co chcieliśmy zrobić w tym przykładzie.

Folder lang w gałęzi

głównejWiększość kroków dotyczących działań GitHub została podjęta zAutomated Localization: GitHub Actions ❤ Artykuł LocalazyautorstwaVáclava Hodka - dziękuję za inspirację.

Ostatni krok - zobacz naszą przetłumaczoną aplikację

Dotarliśmy do końca tego artykułu. Ale nie zostałby ukończony bez pokazania wyniku. Musimy nieco poprawić routing sieci Laravel, aby uwzględniał przekazany język. Normalnie pracowałbyś w oddzielnej gałęzi (może foo2?), scaliłbyś ją z develop, testował, a następnie scalał do master lub tak... Ale dla naszych celów po prostu szybko to przetestujmy.

Przełączmy się na master IDE i git pull zmiany.. Przejdź do routes/web.php. W tym pliku można zarejestrować trasy internetowe dla aplikacji. Zaktualizuj kod:

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

routes/web.php

za pomocą powyższego kodu mówimy aplikacji, aby ustawiła ustawienia regionalne, jeśli w ścieżce znajduje się locale parametr. To wszystko, reszta odbywa się automatycznie. Wypróbuj niektóre z tych adresów URL:    

Nasza aplikacja w języku angielskim, języku źródłowym

Nasza aplikacja w języku hiszpańskim, przetłumaczona przez Localazy

Nasza aplikacja w języku niemieckim, przetłumaczona przez Localazy

Nasza aplikacja w języku czeskim, przetłumaczona przez Localazy

  • localhost/pl- ups, istnieje powrót do angielskiego, który jest ustawiony jako domyślny język (więcej na ten temat tutaj)

Aby sprawdzić, czy brakuje niektórych tłumaczeń bez odwiedzania Localazy, możesz użyć Laravel Translation Checker. W ten sposób możesz wygodnie schować się w swoim IDE i w pełni skupić się na budowaniu projektu Laravel. Ale mamy nadzieję, że od czasu do czasu przywitacie się i zobaczycie, co nowego w Localazy.

Kod źródłowy

Kod źródłowy tego projektu demonstracyjnego jest dostępny na GitHub. Nie zapomnij zapoznać się z zawartością folderu.github/workflows!

Uzyskaj 25% zniżki na plany

lokalne Gratulujemy dotarcia tak daleko! Musisz naprawdę kochać Laravel! Tak, więc chcielibyśmy zaoferować 25% zniżki każdemu, kto to czyta.

🏷️ Użyj kodu "laravelnews" przy zakupie planu Localazy i uzyskaj 25% zniżki na dowolny plan Localazy przez 1 rok. ⭐

Zlokalizuj swój projekt Laravel i zdobądź nagrodę!

Jeśli szukasz sposobu, aby w końcu zlokalizować swój projekt Laravel i zainspirowałeś się tym artykułem, chcielibyśmy usłyszeć Twoją historię i zaprezentować Twój produkt na naszym blogu. Dodaj ten artykuł do zakładek i wypełnij formularz rozmowy kwalifikacyjnej, gdy uruchomisz Localazy.

💰 Oferta nagród: Jeśli uważasz, że możesz znaleźć lepszy sposób na integrację Localazy z Laravel Framework i chciałbyś rozwinąć własną integrację, bibliotekę lub narzędzie, daj nam znać!

Konkluzja

Mamy nadzieję, że spodobał Ci się ten artykuł pokazujący moc Localazy i GitHub Actions dla lokalizacji Laravel. Wierzymy, że wszystko, co można zautomatyzować, powinno być zautomatyzowane, a lokalizacja jest jedną z tych rzeczy.

Skontaktuj się z nami pod adresem [email protected], jeśli masz jakiekolwiek pytania dotyczące tego samouczka lub Localazy w ogóle.

Możesz także dołączyć do Localazy Discord, aby zobaczyć, co robią inni programiści korzystający z Localazy lub zaakceptować nasze zaproszenie do społeczności Localazy na GitHub, gdzie znajdziesz więcej zasobów społecznościowych dla swoich projektów Laravel, do których możesz się przyczynić. Czekamy na Ciebie!

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

O

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...

O autorze CrazyBoy49z
WORK EXPERIENCE
Kontakt
Ukraine, Lutsk
+380979856297