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!

Laravel - Localization

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:

  1. Eine globale Zielgruppe zu erreichen
  2. Das Benutzererlebnis zu verbessern
  3. 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!

  1. Gehe zum resources/lang-Verzeichnis in deinem Laravel-Projekt.
  2. Erstelle einen neuen Ordner für jede Sprache, die du unterstützen möchtest. Zum Beispiel en für Englisch, es für Spanisch.
  3. 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