Jak spolszczyć aplikację napisaną w Laravelu

Paweł Mysior
21 marca 2019

Laravel oferuje bardzo dobry system tworzenia aplikacji wielojęzykowych. Opiera się on na pobieraniu tłumaczeń z plików umieszczonych w katalogu resources/lang. Dzięki wsparciu wielojęzykowości, przetłumaczenie aplikacji napisanej w Laravelu z domyślnego języka angielskiego na język polski jest zadaniem dosyć łatwym. Właśnie tym tematem zajmiemy się w tym wpisie.

Zacznijmy od zrozumienia tego jak w Laravelu możemy tworzyć i używać plików z tłumaczeniami. Są na to dwa sposoby.

Sposób pierwszy: tablice asocjacyjne w plikach php

Spójrzmy do katalogu resources/lang/en, znajdziemy tam cztery pliki:

  • auth.php
  • pagination.php
  • passwords.php
  • validation.php

W tych plikach znajdują się tłumaczenia, których używają wbudowane komponenty Laravela. Na przykład te odpowiedzialne za wyświetlanie linków paginacji lub błędów walidacji. Każdy z plików w tym katalogu zwraca tablicę asocjacyjną. Przykładowo plik auth.php wygląda tak:

<?php

return [

    'failed' => 'These credentials do not match our records.',
    'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',

];

Jeśli chcemy uzyskać dostęp do tłumaczenia w naszej aplikacji, powinniśmy użyć funkcji globalnej __() (nazwa funkcji to dwa znaki podkreślenia). Jako parametr przekazujemy najpierw nazwę pliku, następnie klucz z tablicy, oddzielone kropką. Przykładowo, żeby uzyskać tłumaczenie These credentials do not match our records. użyjemy __('auth.failed').

Sposób drugi: plik json

Drugim sposobem jest definiowanie tłumaczeń za pomocą domyślnego tłumaczenia jako klucza w pliku json. W praktyce wygląda to tak: dla polskiego tłumaczenia dodajemy plik resources/lang/pl.json:

{
    "Hello World": "Witaj Świecie"
}

Teraz możemy, na przykład w pliku blade, odwołać się do tego tłumaczenia w następujący sposób:

// resources/views/index.blade.php

<p>
    {{ __('Hello World') }}
</p>

// lub używając dyrektywy Blade @lang:

<p>
    @lang('Hello World')
</p>

Jeśli Laravel nie znajdzie pliku resources/lang/pl.json lub w tym pliku nie znajdzie klucza Hello World, wyświetli klucz w niezmienionej postaci.

Z tej metody korzystają, między innymi, domyślne widoki uwierzytelniania, które framework generuje przy użyciu komendy php artisan make:auth. Na przykład w wygenerowanym pliku resources/views/auth/login.blade.php znajdziemy:

<a class="btn btn-link" href="{{ route('password.request') }}">
    {{ __('Forgot Your Password?') }}
</a>

Jeśli framework nie znajdzie tłumaczenia dla stringa Forgot Your Password? to po prostu wyświetli ten string.

Tłumaczenie na język polski

Teraz wiemy już jak działa funkcja globalna __() oraz gdzie i w jaki sposób definiować pliki z tłumaczeniami. Pozostaje nam poinformować Laravel jakiego języka chcemy używać. Najłatwiej jest to zrobić w pliku konfiguracyjnym config/app.php. Znajdziemy tam klucz locale:

/*
|--------------------------------------------------------------------------
| 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',

Ustawmy jego wartość na pl.

Następnym krokiem jest dodanie polskich plików z tłumaczeniami. Stwórzmy katalog resources/lang/pl i w nim pliki:

  • auth.php
  • pagination.php
  • passwords.php
  • validation.php

oraz plik resources/lang/pl.json. W tych plikach powinniśmy przetłumaczyć wszystkie klucze, których używa framework. W przypadku plików php z powyższej listy, jest to łatwe, gdyż mamy angielskie odpowiedniki. Stworzenie odpowiedniego pliku json jest nieco trudniejsze. Musimy bowiem wiedzieć jakie klucze są tam potrzebne. Jak wspomniałem wcześniej, framework używa tłumaczeń z tego pliku w widokach wygenerowanych przez komendę php artisan make:auth. Oprócz tego, używa ich też w dwóch notifykacjach wysyłanych do użytkownika: ResetPasswordVerifyEmail oraz w layoutach mailinotifykacji właśnie. Odnalezienie wszystkich kluczy w tych plikach to sporo roboty. Na szczęście nie musimy tego robić sami. Możemy posłużyć się gotowymi plikami z tłumaczeniami ze świetnego repozytorium caouecs/Laravel-lang.

Użycie paczki laravel-localize

Jeśli często tworzymy nowe aplikacje Laravela, kopiowanie odpowiednich plików z tego repozytorium może być nieco uciążliwe. Dlatego stworzyłem paczkę, która instaluje globalną komendę laravel-localize, która sama automatycznie ściągnie pliki z tłumaczeniami. By ją zainstalować wpiszmy w terminalu:

composer global require pawelmysior/laravel-localize

Potem należy przejść do katalog z naszą aplikacją opartą na Laravelu i wpisać:

laravel-localize pl

I to tyle! Komenda ściągnie z repozytorium caouecs/Laravel-lang wszystkie odpowiednie pliki php oraz plik json. Jedyną rzeczą, którą musimy zrobić sami to zmiana klucza locale w pliku config/app.php.

Wygodny hosting zapewnia duet DigitalOceanLaravel Forge.
Copyright © laravelpolska.com

Drogi Użytkowniku!

Dalsze korzystanie z serwisu bez zmiany ustawień dotyczących cookies w przeglądarce oznacza akceptację plików cookies, co będzie skutkowało zapisywaniem ich na Twoich urządzeniach przez serwis internetowy laravelpolska.com. Jeśli nie wyrażasz zgody na przyjmowanie cookies, prosimy o zmianę ustawień w przeglądarce lub o opuszczenie serwisu. więcej

Stosujemy pliki cookies (tzw. ciasteczka) i inne pokrewne technologie, które mają na celu:

  • dostosowanie zawartości stron internetowych Serwisu do Twoich preferencji oraz optymalizacji korzystania ze stron internetowych; w szczególności pliki te pozwalają rozpoznać Twoje urządzenie i odpowiednio wyświetlić stronę internetową, dostosowaną do Twoich indywidualnych potrzeb;
  • utrzymanie Twojej sesji w Serwisie (po zalogowaniu), dzięki czemu nie musisz na każdej podstronie Serwisu ponownie wpisywać loginu i hasła,
  • zapewnienie bezpieczeństwa podczas korzystania z Serwisu,
  • ulepszenie świadczonych przez nas usług poprzez wykorzystanie danych w celach analitycznych i statystycznych,
  • poznanie Twoich preferencji na podstawie sposobu korzystania z naszych serwisów.

Wykorzystanie cookies pozwala nam zapewnić maksymalną wygodę przy korzystaniu z naszego Serwisu poprzez zapamiętanie Waszych preferencji i ustawień na naszych stronach. Więcej informacji o zamieszczanych plikach cookie oraz o możliwości zmiany ustawień przeglądarki oraz polityce przetwarzania danych znajdziesz w polityce prywatności.

Masz możliwość samodzielnej zmiany ustawień dotyczących cookies w swojej przeglądarce internetowej. Z poziomu przeglądarki internetowej, z której korzystasz, możliwe jest zarządzanie plikami cookies. W najpopularniejszych przeglądarkach istnieje m.in. możliwość:

  • zaakceptowania obsługi cookies, co pozwala na pełne korzystanie z opcji oferowanych przez witryny internetowe;
  • zarządzania plikami cookies na poziomie pojedynczych, wybranych przez użytkownika witryn;
  • określania ustawień dla różnych typów plików cookies, na przykład akceptowania plików stałych, jako sesyjnych itp.;
  • blokowania lub usuwania cookies.

Akceptuję pliki cookies