Laravel - Lokalisierung: Ein Anfängerleitfaden
Hallo, ambitionierte Entwickler! Heute machen wir uns auf eine aufregende Reise in die Welt der Laravel-Lokalisierung. Keine Sorge, wenn du neu im Programmieren bist – ich werde dein freundlicher Guide sein und alles Schritt für Schritt erklären. Am Ende dieses Tutorials wirst du in der Lage sein, deine Laravel-Anwendungen in mehrere Sprachen sprechen zu lassen! Los geht's!
Was ist Lokalisierung?
Bevor wir uns in den Code stürzen, lassen wir uns mal anschauen, was Lokalisierung bedeutet. Stell dir vor, du hast eine großartige Website erstellt, aber alle deine Benutzer sprechen nicht dieselbe Sprache. Wär's nicht toll, wenn deine Seite automatisch die Sprache basierend auf den Präferenzen des Benutzers wechseln könnte? Genau das macht die Lokalisierung!
Lokalisierung ist der Prozess der Anpassung deiner Anwendung an verschiedene Sprachen und Regionen. Es ist, als ob du deiner App beibringst, mehrsprachig zu sein!
Warum ist Lokalisierung wichtig?
Lass mich eine kurze Geschichte teilen. Vor ein paar Jahren hat einer meiner Schüler eine großartige E-Commerce-Site erstellt. Es war perfekt... nur war es nur auf Englisch. Als er versuchte, sich auf den spanischsprachigen Markt zu erweitern, realized er, dass er fast alles neu aufbauen musste! Hätte er von Anfang an Lokalisierung verwendet, wäre es viel einfacher gewesen.
Lokalisierung hilft dir:
- Eine globale Zielgruppe zu erreichen
- Das Benutzererlebnis zu verbessern
- Die Benutzerbeteiligung und -bindung zu erhöhen
Nun sehen wir, wie Laravel diesen Prozess zum Kinderspiel macht!
Lokalisierung in Laravel einrichten
Schritt 1: Erstellen von Sprachdateien
Zuerst müssen wir Sprachdateien erstellen. Laravel macht das super einfach!
- Gehe zum
resources/lang
-Verzeichnis in deinem Laravel-Projekt. - Erstelle einen neuen Ordner für jede Sprache, die du unterstützen möchtest. Zum Beispiel
en
für Englisch,es
für Spanisch. - In jedem Ordner erstelle eine PHP-Datei mit dem Namen der Funktion, die du übersetzen möchtest. Fangen wir mit
messages.php
an.
Hier könnte deine Verzeichnisstruktur so aussehen:
resources/
lang/
en/
messages.php
es/
messages.php
Nun fügen wir einige Übersetzungen in diese Dateien ein:
// resources/lang/en/messages.php
return [
'welcome' => 'Willkommen auf unserer Website!',
'goodbye' => 'Auf Wiedersehen, bis bald!',
];
// resources/lang/es/messages.php
return [
'welcome' => '¡Bienvenido a nuestro sitio web!',
'goodbye' => '¡Adiós, hasta pronto!',
];
Schritt 2: Übersetzungen im Code verwenden
Nun haben wir unsere Übersetzungen, lassen uns sie im Code verwenden. Laravel bietet mehrere Möglichkeiten dazu:
Methode 1: Verwendung der __()
-Hilfsfunktion
echo __('messages.welcome');
Dies gibt "Willkommen auf unserer Website!" aus, wenn die App auf Englisch eingestellt ist, oder "¡Bienvenido a nuestro sitio web!" wenn sie auf Spanisch eingestellt ist.
Methode 2: Verwendung der trans()
-Hilfsfunktion
echo trans('messages.goodbye');
Dies macht dasselbe wie `__()``, aber einige Entwickler bevorzugen diese Syntax.
Methode 3: Verwendung der @lang
-Direktive in Blade-Vorlagen
In deinen Blade-Vorlagen kannst du die @lang
-Direktive verwenden:
<h1>@lang('messages.welcome')</h1>
Dies ist besonders nützlich, wenn du mit HTML-Vorlagen arbeitest.
Schritt 3: Ändern der Anwendungssprache
Nun, wie sagen wir Laravel, welche Sprache es verwenden soll? Es gibt einige Möglichkeiten:
Methode 1: Einstellen der Standardsprache
In deiner config/app.php
-Datei kannst du die Standardsprache einstellen:
'locale' => 'en',
Methode 2: Ändern der Sprache zur Laufzeit
Du kannst die Sprache dynamisch in deinem Code ändern:
App::setLocale('es');
Dies ist nützlich, wenn du die Sprache basierend auf Benutzerpräferenzen oder Einstellungen ändern möchtest.
Methode 3: Verwenden von Middleware für die Sprache
Für eine fortgeschrittene Kontrolle kannst du ein Middleware erstellen, um die Sprache basierend auf verschiedenen Faktoren zu setzen. Hier ist ein einfaches Beispiel:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
class SetLocale
{
public function handle($request, Closure $next)
{
if ($request->session()->has('locale')) {
App::setLocale($request->session()->get('locale'));
}
return $next($request);
}
}
Dann registriere dieses Middleware in deinem app/Http/Kernel.php
:
protected $middlewareGroups = [
'web' => [
// ... andere Middleware
\App\Http\Middleware\SetLocale::class,
],
];
Fortgeschrittene Lokalisierungstechniken
Pluralisierung
Laravel kann die Pluralisierung für dich erledigen! Hier ist, wie man das macht:
// In deiner Sprachdatei
'apples' => '{0} Keine Äpfel|{1} Ein Apfel|[2,*] :count Äpfel',
// In deinem Code
echo trans_choice('apples', 0); // Ausgabe: Keine Äpfel
echo trans_choice('apples', 1); // Ausgabe: Ein Apfel
echo trans_choice('apples', 5); // Ausgabe: 5 Äpfel
Lokalisierung mit Parametern
Du kannst auch Parameter in deinen Übersetzungen verwenden:
// In deiner Sprachdatei
'welcome_name' => 'Willkommen, :name!',
// In deinem Code
echo __('messages.welcome_name', ['name' => 'John']); // Ausgabe: Willkommen, John!
Fazit
Herzlichen Glückwunsch! Du hast gerade deine ersten Schritte in die Welt der Laravel-Lokalisierung gemacht. Mit diesen Werkzeugen kannst du jetzt Anwendungen erstellen, die in der Sprache der Benutzer sprechen, egal wo sie sich auf der Welt befinden.
Denke daran, der Schlüssel zum Beherrschen der Lokalisierung (und des Programmierens im Allgemeinen) ist die Übung. Versuche, ein kleines Projekt zu erstellen und von Anfang an Lokalisierung zu implementieren. Du wirst erstaunt sein, wie schnell es zur zweiten Natur wird!
Frohes Coden und möge deine Apps viele Sprachen sprechen! ??️?
Methode | Beschreibung | Beispiel |
---|---|---|
__() |
Hilfsfunktion für Übersetzung | __('messages.welcome') |
trans() |
Eine andere Hilfsfunktion für Übersetzung | trans('messages.goodbye') |
@lang |
Blade-Direktive für Übersetzung | @lang('messages.welcome') |
App::setLocale() |
Setzen der Anwendungssprache | App::setLocale('es') |
trans_choice() |
Übersetzung mit Pluralisierung | trans_choice('apples', 5) |
Credits: Image by storyset