Laravel Lokalisierung ist eine leistungsstarke Lösung, mit der Entwickler mehrsprachige Websites erstellen können. Durch die Implementierung der Weblokalisierung in Ihren Laravel -Projekten können Sie Besuchern mit unterschiedlichem Sprachhintergrund ein personalisiertes Benutzererlebnis bieten und so letztendlich Ihre Reichweite vergrößern und das Benutzerengagement verbessern.
Wir begleiten Sie durch die Implementierung der Lokalisierung in Ihrer Laravel -Anwendung und stellen Ihnen ein Tool vor, das Ihre Lokalisierungsbemühungen vereinfachen und verbessern kann!
Hier sind einige wichtige Gründe, warum Sie Ihre Laravel -Website lokalisieren sollten.
Bei der Implementierung der mehrsprachigen Lokalisierung in Laravel sind einige Anforderungen und Schritte zu berücksichtigen.
Nachdem wir verstanden haben, welche Anforderungen vor der Übersetzung einer Laravel -Anwendung oder eines Laravel-Webs erfüllt sein müssen, stellen wir Ihnen einige Schritte zur einfachen Übersetzung Laravel vor.
Öffnen Sie dazu die Ansichtsdatei, die Sie lokalisieren möchten, zum Beispiel resources/views/welcome.blade.php. Ersetzen Sie dann das Body-Tag durch den folgenden Code.
Welcome to Linguise website!
Wie Sie sehen können, ist der obige Text derzeit direkt im Code geschrieben. Dies ist weniger effizient und erschwert die Übersetzung von Websites in verschiedene Sprachen (Internationalisierung).
Wir werden den obigen Text flexibler gestalten, damit er leicht an verschiedene Sprachen angepasst werden kann. Laravel bietet hierfür eine sehr hilfreiche Funktion; das Lokalisierungssystem. Ersetzen Sie als ersten Schritt den vorhandenen Text durch den folgenden Code.
{{ __('Welcome to Linguise website!') }}
Laravel zeigt standardmäßig den obigen Text an und sucht nach der Übersetzung, wenn der Benutzer eine andere Sprache als Englisch auswählt. In diesem Fall wird Englisch als Standardsprache der Anwendung verwendet.
Aber wie ermittelt Laravel die aktuelle Sprache bzw. weiß, welche Sprachen in der Anwendung verfügbar sind? Es überprüft die Gebietsschemaeinstellungen in der Datei config/app.php. Öffnen Sie diese Datei und suchen Sie nach den folgenden zwei Schlüsseln.
/* |-------------------------------------------------------------------------- | 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',
Die Erklärung über den Tasten sollte klar sein. Zusammenfassend enthält der Gebietsschemaschlüssel das Standardgebietsschema für Ihre Anwendung (sofern im Code kein anderes Gebietsschema angegeben ist). Das fallback_locale wird aktiviert, wenn in Ihrer Anwendung ein nicht vorhandenes Gebietsschema angefordert wird.
Fügen wir dieser Datei nun einen neuen Schlüssel hinzu, um eine Liste aller unterstützten Gebietsschemas bereitzustellen.
/* |-------------------------------------------------------------------------- | Available locales |-------------------------------------------------------------------------- | | List all locales that your application works with | */ 'available_locales' => [ 'English' => 'en', 'Italian' => 'it', 'French' => 'fr', ],
Zu diesem Zeitpunkt haben wir versucht, Laravel Web drei Sprachen zu unterstützen, nämlich Englisch, Italienisch und Französisch.
In Laravel werden, wie in vielen anderen Frameworks auch, Übersetzungen für verschiedene Sprachen in separaten Dateien gespeichert. Zum Organisieren dieser Übersetzungsdateien werden zwei Methoden verwendet.
Die ältere Methode speichert Dateien in der folgenden Struktur: resources/lang/{en,fr,it}/{myfile.php}. Die neuere Methode verwendet JSON-Dateien wie resources/lang/{fr.json, it.json}. Dieser Artikel konzentriert sich auf die neuere Methode, obwohl die Prinzipien für die ältere Methode ähnlich sind, abgesehen von Unterschieden bei der Benennung und dem Zugriff auf Übersetzungsschlüssel.
Bei Sprachen mit regionalen Variationen sollten Sie die Sprachverzeichnisse oder Dateien nach dem ISO 15897-Standard benennen. Beispielsweise würde britisches Englisch en_GB statt en-gb heißen.
In Laravel werden, wie bei vielen Frameworks, Übersetzungen für verschiedene Sprachen in separaten Dateien gespeichert. Es gibt zwei Hauptmethoden zum Organisieren Laravel Übersetzungsdateien.
Dieser Artikel konzentriert sich auf die zweite Methode, obwohl die Prinzipien auf beide anwendbar sind (mit Variationen bei der Benennung und dem Zugriff auf Übersetzungsschlüssel).
Für Sprachen, die je nach Region variieren, wird empfohlen, Sprachverzeichnisse/-dateien gemäß den ISO 15897-Standards zu benennen. Britisches Englisch würde beispielsweise als en_GB und nicht als en-gb bezeichnet.
Nachdem wir die Gebietsschemas für unsere Anwendung konfiguriert haben, können wir mit der Übersetzung unserer Standard-Willkommensnachricht fortfahren.
Beginnen wir mit der Erstellung neuer Lokalisierungsdateien im JSON-Format im Verzeichnis resources/lang. Zuerst erstellen wir eine Datei resources/lang/it.json und füllen sie mit den entsprechenden Übersetzungen.
{ "Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!" }
Fügen Sie als Nächstes eine Datei resources/lang/fr.json hinzu.
{ "Welcome to Linguise website!": "Bienvenue sur le site de Linguise" }
Wie Sie sehen können, verweisen wir durchgehend auf die Standardnachricht aus der Datei „welcome.blade.php“ ({{ __('Willkommen auf Linguise Website!') }}). Es ist nicht erforderlich, eine en.json-Datei zu erstellen, da Laravel automatisch erkennt, dass die Standardnachrichten auf Englisch sind.
Darüber hinaus ist Laravel noch nicht so eingerichtet, dass es die lokale Sprache überschreibt, daher werden wir die Übersetzung vorerst direkt innerhalb der Route übernehmen. Ändern Sie die Standard-Willkommensroute in der Datei „routes/web.php“ wie folgt.
Route::get('/{locale?}', function ($locale = null) { if (isset($locale) && in_array($locale, config('app.available_locales'))) { app()->setLocale($locale); } return view('welcome'); });
In diesem Fall erfassen wir einen optionalen GET-Parameter für das Gebietsschema und legen darauf basierend das aktuelle Gebietsschema fest (sofern das angeforderte Gebietsschema unterstützt wird).
Jetzt können Sie Ihre Website besuchen und eine der unterstützten Sprachen als erstes Segment in die URL einfügen. Wenn Sie beispielsweise zu „localhost/it“ oder „localhost/fr“ navigieren, wird der lokalisierte Inhalt angezeigt. Wenn Sie kein Gebietsschema angeben oder eines auswählen, das nicht unterstützt wird, verwendet Laravel standardmäßig Englisch (en).
Die Einbeziehung des Gebietsschemas in jede URL ist möglicherweise nicht ideal und könnte die visuelle Attraktivität der Website beeinträchtigen. Um dieses Problem zu beheben, richten wir einen Sprachumschalter ein und nutzen die Benutzersitzung, um den übersetzten Inhalt anzuzeigen. Sie können neue Middleware in der Datei app/Http/Middleware/Localization.php erstellen oder sie generieren, indem Sie den Befehl artisan make:middleware Localization ausführen.
Fügen Sie dann den folgenden Code hinzu.
Diese Middleware weist Laravel an, den vom Benutzer ausgewählten Speicherort zu verwenden, wenn diese Option in der Sitzung vorhanden ist.
Da der Vorgang bei jeder Anfrage ausgeführt werden muss, fügen Sie ihn dem Standard-Middleware-Stack in app/Http/Kernel.php für die Web-Middleware-Gruppe hinzu.
/** * 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 ],
Definieren Sie als Nächstes eine Route zum Ändern des Gebietsschemas in der Datei „routes/web.php“. Wir verwenden hier eine Abschlussroute, aber Sie können den gleichen Code auch in einen Controller einfügen, wenn Sie möchten.
Route::get('language/{locale}', function ($locale) { app()->setLocale($locale); session()->put('locale', $locale); return redirect()->back(); });
Entfernen Sie außerdem die Gebietsschemaumschaltung, die zuvor zur Standard-Willkommensroute hinzugefügt wurde. Ihre Root-Route sollte nun so aussehen.
Route::get('/', function () { return view('welcome'); });
Sobald dies erledigt ist, kann der Benutzer die aktive Sprache nur noch wechseln, indem er localhost/sprache/{locale} aufruft. Das ausgewählte Gebietsschema wird in der Sitzung gespeichert und Benutzer werden zu ihrer vorherigen Seite zurückgeleitet (wie von der Lokalisierungs-Middleware gehandhabt).
Um es zu testen, gehen Sie zu localhost/Language/it (vorausgesetzt, das Sitzungscookie ist in Ihrem Browser aktiv), und Sie sollten den übersetzten Inhalt sehen. Sie können auf der Website navigieren oder die Seite aktualisieren, die gewählte Sprache bleibt jedoch erhalten.
Jetzt müssen wir dem Benutzer eine anklickbare Option bieten, um den Sprachumschalter Laravel Web , anstatt von ihm die manuelle Eingabe von Gebietsschemacodes in die URL zu verlangen. Erstellen Sie dazu einen einfachen Sprachumschalter. Fügen Sie eine neue Datei unter resources/views/partials/ language_switcher.blade.php hinzu und fügen Sie den folgenden Code ein.
@foreach($available_locales as $locale_name => $available_locale) @if($available_locale === $current_locale) {{ $locale_name }} @else {{ $locale_name }} @endif @endforeach
Um den neu erstellten Sprachumschalter in die „Willkommen“-Ansicht einzuschließen, fügen Sie einfach die folgende Zeile zu Ihrer Datei „welcome.blade.php“ hinzu, wo der Umschalter angezeigt werden soll.
@include('partials/language_switcher') {{ __('Welcome to our website!') }}
Öffnen Sie die Datei app/Providers/AppServiceProvider.php und fügen Sie den folgenden Code in die boot()-Methode ein, um das aktuelle Gebietsschema für alle Ansichten freizugeben, wenn der Sprachumschalter verwendet wird
* 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')); }); }
In dieser Diskussion werden wir uns dann mit anderen Lokalisierungskomponenten befassen, nämlich Datum, Zahl und Währung. Hier sind die Schritte.
Der Umgang mit Datum und Uhrzeit ist im Lokalisierungsprozess von entscheidender Bedeutung. Laravel verwendet Carbon zur Verwaltung von Datum und Uhrzeit. So können Sie mit Carbon ein lokalisiertes Datum anzeigen.
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 ]); });
Dieser Code legt das Carbon-Gebietsschema basierend auf dem aktuellen Gebietsschema der Anwendung fest und formatiert das Datum entsprechend.
So zeigen Sie das lokalisierte Datum in einer Ansicht an:
{{ __('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 }}
Verschiedene Länder haben unterschiedliche Möglichkeiten, Zahlen zu formatieren. Zum Beispiel.
Um diese Variationen in Ihrer Laravel -Anwendung zu berücksichtigen, können Sie NumberFormatter verwenden.
Sie können Zahlen auch in einer bestimmten Sprache buchstabieren.
Hier sind die Währungen. Für das französische Gebietsschema („fr“) wird die Währung in Euro (€) angezeigt, während sie für das US-Gebietsschema („en_US“) in US-Dollar ($) angezeigt wird.
Nachdem Sie die im Artikel beschriebenen Schritte der Laravel Lokalisierung verstanden haben, umfasst dieser Prozess viele Schritte, die von den Benutzern ein gründliches Verständnis des Laravel -Programmcodes erfordern.
Dies kann es für unerfahrene Benutzer, die ihre Anwendungen lokalisieren möchten, sicherlich schwierig machen. Daher ist eine innovativere Lösung erforderlich, die eine schnelle Übersetzung ermöglicht, die Lokalisierung unterstützt und nur wenige einfache Schritte zur Implementierung erfordert.
Eine vielversprechende Lösung ist Linguise . Linguise bietet einen einfacheren und effizienteren Ansatz zur Laravel Lokalisierung, ohne dass tiefgreifende Programmierkenntnisse erforderlich sind. Zu den Hauptfunktionen von Linguise gehören:
Die Schritte zur Installation Linguise auf Laravel -Websites können ebenfalls problemlos durchgeführt werden. Hier eine kurze Erklärung.
Wie? Bei Linguise müssen Sie sich nur registrieren und aktivieren, schon erscheint der Sprachumschalter. Danach können Sie beispielsweise über den Live-Editor lokalisieren, Medien, Bilder usw. übersetzen.
Laravel Lokalisierung ist eine leistungsstarke Funktion, die es Entwicklern ermöglicht, mehrsprachige Websites und Anwendungen zu erstellen. Wie wir gesehen haben, umfasst der integrierte Laravel Lokalisierungsprozess mehrere Schritte und erfordert ein gutes Verständnis des Frameworks. Für Anfänger oder diejenigen, die eine schnellere Lösung suchen, kann es eine Herausforderung sein.
Tools wie Linguise bieten eine innovative Alternative für diejenigen, die einen schlankeren Ansatz suchen. Diese Lösungen bieten schnelle Übersetzungsfunktionen, einfache Integration und benutzerfreundliche Funktionen wie anpassbare Sprachumschalter und Bildübersetzung. jetzt Ihr Linguise Konto und genießen Sie unsere Funktion zur Lokalisierung Ihres Laravel !
Erhalten Sie Neuigkeiten über die automatische Übersetzung von Websites, internationales SEO und mehr!
Gehen Sie nicht, ohne Ihre E-Mail-Adresse mitzuteilen!
Wir können nicht garantieren, dass Sie im Lotto gewinnen, können Ihnen aber einige interessante Neuigkeiten rund um die Übersetzung und gelegentliche Rabatte versprechen.