Laravel to potężne narzędzie, które umożliwia programistom tworzenie wielojęzycznych stron internetowych. Wdrażając lokalizację internetową w swoich Laravel , możesz zapewnić spersonalizowaną obsługę użytkownikom z różnych środowisk językowych, ostatecznie zwiększając swój zasięg i poprawiając zaangażowanie użytkowników.
Przeprowadzimy Cię przez proces wdrażania lokalizacji w Twojej aplikacji Laravel i przedstawimy narzędzie, które może uprościć i usprawnić Twoje wysiłki lokalizacyjne!
Oto kilka ważnych powodów, dla których warto zlokalizować swoją witrynę Laravel .
Istnieje kilka wymagań i kroków, które należy wziąć pod uwagę podczas wdrażania lokalizacji wielojęzycznej w Laravel .
Po zrozumieniu, jakie wymagania należy spełnić przed tłumaczeniem aplikacji lub sieci Laravel , przedstawimy kilka kroków umożliwiających proste tłumaczenie Laravel .
Aby to zrobić, otwórz plik widoku, który chcesz zlokalizować, na przykład Resources/views/welcome.blade.php. Następnie zastąp znacznik treści następującym kodem.
Welcome to Linguise website!
Jak widać, powyższy tekst jest obecnie zapisany bezpośrednio w kodzie. Jest to mniej wydajne i utrudnia tłumaczenie stron internetowych na różne języki (internacjonalizacja).
Zamierzamy uelastycznić powyższy tekst, aby można go było łatwo dostosować do różnych języków. Laravel zapewnia w tym celu bardzo przydatną funkcję; systemu lokalizacji. W pierwszym kroku zastąp istniejący tekst następującym kodem.
{{ __('Welcome to Linguise website!') }}
Laravel domyślnie wyświetli powyższy tekst i sprawdzi tłumaczenie, jeśli użytkownik wybierze język inny niż angielski. W takim przypadku domyślnym językiem aplikacji będzie język angielski.
Ale w jaki sposób Laravel określa aktualny język lub wie, jakie języki są dostępne w aplikacji? Sprawdza ustawienia regionalne w pliku config/app.php. Otwórz ten plik i poszukaj następujących dwóch kluczy.
/* |-------------------------------------------------------------------------- | 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',
Wyjaśnienie nad klawiszami powinno być jasne. Podsumowując, klucz ustawień regionalnych przechowuje domyślne ustawienia regionalne dla Twojej aplikacji (jeśli w kodzie nie określono innych ustawień regionalnych). Fallback_locale jest aktywowane, jeśli w aplikacji zażądano nieistniejących ustawień regionalnych.
Dodajmy teraz nowy klucz do tego pliku, aby wyświetlić listę wszystkich obsługiwanych ustawień regionalnych.
/* |-------------------------------------------------------------------------- | Available locales |-------------------------------------------------------------------------- | | List all locales that your application works with | */ 'available_locales' => [ 'English' => 'en', 'Italian' => 'it', 'French' => 'fr', ],
W tym momencie wypróbowaliśmy Laravel Web obsługującą trzy języki, a mianowicie angielski, włoski i francuski.
W Laravel , podobnie jak w wielu innych frameworkach, tłumaczenia na różne języki przechowywane są w oddzielnych plikach. Do organizowania plików tłumaczeń stosowane są dwie metody.
Starsza metoda przechowuje pliki w następującej strukturze: Resources/lang/{en,fr,it}/{myfile.php}. Nowsza metoda wykorzystuje pliki JSON, takie jak Resources/lang/{fr.json, it.json}. W tym artykule skupimy się na nowszej metodzie, chociaż zasady są podobne w przypadku starszej metody, poza różnicami w sposobie nazywania kluczy tłumaczeniowych i uzyskiwaniu do nich dostępu.
W przypadku języków różniących się regionalnie katalogi lub pliki językowe należy nazwać zgodnie z normą ISO 15897. Na przykład brytyjski angielski miałby nazwę en_GB zamiast en-gb.
W Laravel , podobnie jak w wielu frameworkach, tłumaczenia na różne języki przechowywane są w oddzielnych plikach. Istnieją dwie podstawowe metody porządkowania plików tłumaczeń Laravel .
W tym artykule skoncentrujemy się na drugiej metodzie, chociaż zasady mają zastosowanie do obu (z różnicami w sposobie nazywania kluczy tłumaczeniowych i uzyskiwaniu do nich dostępu).
W przypadku języków różniących się w zależności od regionu zaleca się nadawanie nazw katalogom/plikom językowym zgodnie ze standardami ISO 15897. Na przykład brytyjski angielski będzie oznaczany jako en_GB, a nie en-gb.
Po skonfigurowaniu ustawień regionalnych dla naszej aplikacji możemy przystąpić do tłumaczenia naszej domyślnej wiadomości powitalnej.
Zacznijmy od utworzenia nowych plików lokalizacyjnych w formacie JSON w katalogu Resources/lang. Najpierw utworzymy plik Resources/lang/it.json i wypełnimy go odpowiednimi tłumaczeniami.
{ "Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!" }
Następnie dodaj plik Resources/lang/fr.json.
{ "Welcome to Linguise website!": "Bienvenue sur le site de Linguise" }
Jak widać, konsekwentnie odwołujemy się do domyślnej wiadomości z pliku Welcome.blade.php ({{ __('Witamy w witrynie Linguise !') }}). Nie ma potrzeby tworzenia pliku en.json, ponieważ Laravel automatycznie rozpoznaje, że domyślne wiadomości są w języku angielskim.
Co więcej, Laravel nie jest jeszcze skonfigurowany do zastępowania języka lokalnego, więc na razie zajmiemy się tłumaczeniem bezpośrednio w ramach trasy. Zmodyfikuj domyślną trasę powitalną w pliku Routes/web.php w ten sposób.
Route::get('/{locale?}', function ($locale = null) { if (isset($locale) && in_array($locale, config('app.available_locales'))) { app()->setLocale($locale); } return view('welcome'); });
W tym przypadku przechwytujemy opcjonalny parametr GET ustawień regionalnych i na jego podstawie ustawiamy bieżące ustawienia regionalne (jeśli obsługiwane są żądane ustawienia regionalne).
Teraz możesz odwiedzić swoją witrynę i dodać dowolny z obsługiwanych języków jako pierwszy segment adresu URL. Na przykład przejście do localhost/it lub localhost/fr spowoduje wyświetlenie zlokalizowanej zawartości. Jeśli nie określisz ustawień regionalnych lub wybierzesz takie, które nie jest obsługiwane, Laravel domyślnie ustawi język angielski (en).
Uwzględnianie ustawień regionalnych w każdym adresie URL może nie być idealnym rozwiązaniem i może zaburzyć atrakcyjność wizualną witryny. Aby rozwiązać ten problem, skonfigurujemy przełącznik języka i wykorzystamy sesję użytkownika do wyświetlenia przetłumaczonej treści. Możesz utworzyć nowe oprogramowanie pośrednie w pliku app/Http/Middleware/Localization.php lub wygenerować je, uruchamiając polecenie rzemieślnika make:middleware Localization.
Następnie dodaj w środku następujący kod.
To oprogramowanie pośredniczące pokieruje Laravel do użycia lokalizacji wybranej przez użytkownika, jeśli ta opcja jest dostępna w sesji.
Ponieważ operacja musi być wykonywana przy każdym żądaniu, dodaj ją do domyślnego stosu oprogramowania pośredniego w pliku app/Http/Kernel.php dla grupy oprogramowania pośredniego sieci Web.
/** * The application's route middleware groups. * * @var array> */ 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 ],
Następnie zdefiniuj trasę do zmiany ustawień regionalnych w pliku Routes/web.php. Używamy tutaj trasy zamknięcia, ale jeśli wolisz, możesz umieścić ten sam kod w kontrolerze.
Route::get('language/{locale}', function ($locale) { app()->setLocale($locale); session()->put('locale', $locale); return redirect()->back(); });
Ponadto usuń zmianę ustawień regionalnych, która została wcześniej dodana do domyślnej trasy powitalnej. Twoja trasa główna powinna teraz wyglądać tak.
Route::get('/', function () { return view('welcome'); });
Po wykonaniu tej czynności użytkownik może zmienić aktywny język jedynie odwiedzając localhost/language/{locale}. Wybrane ustawienia regionalne zostaną zapisane w sesji, a użytkownicy zostaną przekierowani z powrotem na poprzednią stronę (zgodnie z obsługą oprogramowania pośredniczącego lokalizacji).
Aby to przetestować, przejdź do localhost/language/it (zakładając, że plik cookie sesji jest aktywny w Twojej przeglądarce) i powinieneś zobaczyć przetłumaczoną treść. Możesz poruszać się po witrynie lub odświeżyć stronę, a wybrany język pozostanie ważny.
Teraz musimy zapewnić użytkownikowi klikalną opcję zmiany przełącznika języka Laravel web, zamiast wymagać od niego ręcznego wprowadzania kodów regionalnych w adresie URL. Aby to osiągnąć, utwórz prosty przełącznik języków. Dodaj nowy plik pod adresem Resources/views/partials/language_switcher.blade.php i wstaw następujący kod.
@foreach($available_locales as $locale_name => $available_locale) @if($available_locale === $current_locale) {{ $locale_name }} @else {{ $locale_name }} @endif @endforeach
Aby uwzględnić nowo utworzony przełącznik języka w widoku „powitalnym”, po prostu dodaj następujący wiersz do pliku powitalnego.blade.php, w którym chcesz, aby przełącznik się pojawił.
@include('partials/language_switcher') {{ __('Welcome to our website!') }}
Otwórz plik app/Providers/AppServiceProvider.php i dodaj następujący kod w metodzie boot(), aby udostępnić bieżące ustawienia regionalne wszystkim widokom, gdy używany jest przełącznik języka
* 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')); }); }
W tej dyskusji zajmiemy się następnie innymi składnikami lokalizacji, a mianowicie datą, liczbą i walutą. Oto kroki.
Obsługa dat i godzin ma kluczowe znaczenie w procesie lokalizacji. Laravel wykorzystuje Carbon do zarządzania datami i godzinami. Oto, jak możesz użyć Carbon do wyświetlenia zlokalizowanej daty.
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 ]); });
Ten kod ustawia ustawienia regionalne Carbon na podstawie bieżących ustawień regionalnych aplikacji i odpowiednio formatuje datę.
Aby wyświetlić zlokalizowaną datę w widoku:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }} {{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }} {{ $date_message }}
W różnych krajach obowiązują różne sposoby formatowania liczb. Na przykład.
Aby uwzględnić te różnice w aplikacji Laravel , możesz użyć NumberFormatter.
Możesz także przeliterować liczby w określonym języku.
Oto waluty. W przypadku ustawień regionalnych francuskich („fr”) waluta będzie wyświetlana w euro (€), natomiast w przypadku ustawień regionalnych amerykańskich („en_US”) będzie wyświetlana w dolarach amerykańskich ($).
Po zrozumieniu etapów lokalizacji Laravel opisanych w artykule, proces ten obejmuje wiele kroków, które wymagają od użytkowników dogłębnego zrozumienia kodu programu Laravel .
Z pewnością może to utrudnić początkującym użytkownikom chcącym zlokalizować swoje aplikacje. Dlatego potrzebne jest bardziej innowacyjne rozwiązanie, które umożliwia szybkie tłumaczenie, wspiera lokalizację, a jego wdrożenie wymaga tylko kilku prostych kroków.
Jednym z obiecujących rozwiązań jest Linguise . Linguise oferuje łatwiejsze i bardziej wydajne podejście do lokalizacji Laravel bez konieczności posiadania dogłębnej wiedzy na temat kodowania. Kluczowe funkcje Linguise obejmują.
Kroki instalacji Linguise na stronach Laravel można również łatwo wykonać. Oto krótkie wyjaśnienie.
Jak? W Linguise wystarczy się zarejestrować i aktywować, a pojawi się przełącznik języka. Następnie możesz swobodnie lokalizować, na przykład za pomocą edytora na żywo, tłumaczyć multimedia, obrazy itp.
Lokalizacja Laravel to potężna funkcja, która umożliwia programistom tworzenie wielojęzycznych witryn i aplikacji. Jak widzieliśmy, wbudowany proces lokalizacji Laravel obejmuje wiele kroków i wymaga dobrego zrozumienia frameworka. Może to stanowić wyzwanie dla początkujących lub osób poszukujących szybszego rozwiązania.
Narzędzia takie jak Linguise stanowią innowacyjną alternatywę dla osób poszukujących bardziej usprawnionego podejścia. Rozwiązania te oferują możliwości szybkiego tłumaczenia, łatwą integrację i przyjazne dla użytkownika funkcje, takie jak konfigurowalne przełączniki języków i tłumaczenie obrazów. Teraz utwórz swoje konto Linguise i skorzystaj z naszej funkcji lokalizowania Laravel !
Otrzymuj informacje o automatycznym tłumaczeniu stron internetowych, międzynarodowym SEO i nie tylko!
Nie wychodź bez udostępnienia swojego e-maila!
Nie możemy zagwarantować, że wygrasz na loterii, ale możemy obiecać kilka interesujących wiadomości informacyjnych dotyczących tłumaczeń i okazjonalnych rabatów.