Wie Laravel Eloquent Mehrsprachigkeit lernen kann

11. Januar 2017 von Dirk Helbert in Laravel
Laravel Eloquent Mehrsprachigkeit

Ich habe die ganze Zeit überlegt, wie ich Laravel Eloquent Mehrsprachigkeit beibringen kann. Wer mit Laravel eine internationale Seite umsetzen will, der kennt das Problem. In der Datenbank sind Informationen, die noch zu übersetzen sind. Doch wie funktioniert das eigentlich? Muss ich für jeden Eintrag in der Datenbank auch einen Eintrag in einer Übersetzungsdatei eintragen?

Nein, mit einem Trait für Laravel von Spatie, einer Agentur in Belgien, wird das total einfach. Dabei werden die Übersetzungen als Json gespeichert und zwar ohne zusätzliche Tabelle oder Tabellenfelder.

Hol dir jetzt mein kostenloses E-Book
Geben Sie Ihre Email Adresse ein und klicken Sie auf den Knopf "Sofort Zugang erhalten".
Ich hasse Spam. Deine E-Mail wird nicht an Dritte weitergegeben oder verkauft.

Laravel Eloquent Mehrsprachigkeit in wenigen einfachen Schritten

Ich benutze dazu Laravel 5.3.16 und erstelle ein neues Projekt

Jetzt den Provider registrieren:

Und die Fallback Sprach Konfiguration kopieren:

Dort steht dann 'fallback_locale' => 'en', drin. Wenn du als Ausgangssprache Deutsch benutzt, dann kannst du hier auch de eintragen. Grundsätzlich ist es bei mehrsprachigen Anwendungen aber wohl besser Englisch als Hauptsprache zu nutzen. Schliesslich versteht das dann auch so ziemlich jeder. Auch ohne Übersetzung.

Da ich gerade selbst einen WordPress Clone für mich entwickle, passt das Thema eigentlich ganz gut.

Ich erstelle jetzt eine Post Model mit:

Jetzt habe ich das Model und die Datenbank Migration. In der .env setze ich die Datenbank Verbindung auf sqlite.

Den Rest der DB_ Einträge entferne ich. Dann noch die /database/database.sqlite anlegen. Und mit php artisan migrate die Datenbank und alle Tabellen erstellen.

Ich öffne das Model unter /app/Post.php und füge den Trait ein

Der title soll in meinem Fall übersetzbar sein.

In die Migrationsdatei des Post Models das title Feld hinzufügen.

Die Magie beginnt

Jetzt kommen wir langsam zur Magie dieser Komponente.

Zu Testzwecken erstelle ich in /routes/web.php eine Dummy Route um die erste Übersetzung einzufügen.

Ich rufe das Projekt jetzt mit http://localhost:8000/preparetranslation auf und bekomme eine weiße Seite. Das ist so gewollt.

Jetzt passe ich noch die andere Route an.

Jetzt http://localhost:8000/ aufrufen und es erscheint:

Laravel Beginner Tutorial

Wenn ich jetzt in der /config/app.php die locale ändere

und die Seite noch mal aufrufe, erhalte ich

Laravel Anfänger Tutorial

Wie geil und einfach ist das denn?

Ich werde diese Komponente auf jeden Fall mal näher anschauen. Das ist echt cool. Und diese Laravel Eloquent Mehrsprachigkeit hat mir noch bei meinem Blog Projekt gefehlt.

Danke an Freek Van der Herten und seinen Twitter Post.

Wenn dir dieser kleine Tipp gefallen hat, dann hinterlass doch einfach einen Kommentar. Ich freue mich. Hast du noch nicht so viel mit Laravel gemacht? Vielleicht kann ich dich für mein Laravel 5 Anfänger Tutorial begeistern.

3 Kommentare zu “Wie Laravel Eloquent Mehrsprachigkeit lernen kann”

    1. Ich benutze gerne die SQLite Datenbank, weil es für Tutorials einfacher ist. Da brauche ich nur eine Datei anlegen und kann direkt loslegen. Nicht immer ist lokal ein MySQL Server vorhanden. Im Produktivsystem setze ich allerdings dann auch auf MySQL.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.