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
domaster
, - 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.json
pliku . 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 -> Actions
pozycji . Nazwałem tajemnice LOCALAZY_READ_KEY
i LOCALAZY_WRITE_KEY
odpowiednio. Przypisujemy zarówno jego readKey
/writeKey
wartość, 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,
- kontrolki
on
, kiedy przepływ pracy będzie uruchamiany, - chcemy uruchomić workflow na
push
lubpull_request
dodevelop
gałęzi (podane przezbranches: [ 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
ilocalazy-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
, -
job
skł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ę zlocalazy.json
i przetwarza przesyłanie zawith
pomocąread_key
iwrite_key
, -
read_key
i wartości są odczytywane odpowiednio zsecrets.LOCALAZY_READ_KEY
iwrite_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:
- 💪🏻 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.
- 🦾 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.
- 🚩 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,
- kontrolki
on
, kiedy przepływ pracy będzie uruchamiany, - chcemy wyzwolić przepływ pracy na
push
master
rozgałęzieniu (podane przezbranches: [ 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
ilocalazy-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
, -
job
skł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
odczytujedownload
konfigurację z i przetwarza pobieranie zlocalazy.json
Localazywith
za pomocąread_key
iwrite_key
, -
read_key
awrite_key
wartości są odczytywane odpowiednio zsecrets.LOCALAZY_READ_KEY
isecrets.LOCALAZY_WRITE_KEY
zmienne, - trzeci krok można pominąć, ale chciałem tylko pokazać listę plików, które zostały pobrane (
ls lang/**/.php
polecenie), - 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życiusecrets.GITHUB_TOKEN
zmiennej (więcej informacji o wpisieGITHUB_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:
-
localhost/en
(lub po prostulocalhost
)
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!