Kontaktformular in Laravel

Problemstellung in unserer Internet Agentur: Das Kontaktformular ist zweisprachig verfügbar auf unserer Website mit dem PHP-Framework Laravel, einmal Deutsch, einmal Englisch. Durch das Absenden des deutschen Kontaktformular auf der Website erhält der Administrator eine Mail auf Deutsch und kann diese Mail auch problemlos beim Antworten oder Weiterleiten anhängen. Nach dem Absenden des Kontaktformulars auf der Website in englischer Sprache erhält der Admin die Mail jedoch auch auf Deutsch.

 

 

Die Vermutung, dass hier die Blade-Datei keine Übersetzungen, sondern nur deutsche Texte enthält, führt uns zur Datei 

 

/resources/views/layouts/emails/contact/contact.blade.php

 

In dieser ersetzen wir also alle deutschen Texte mit 

 

@lang('main.IDENTIFIER'),

 

wobei main hier natürlich durch eine beliebige Section wie "layouts", etc. ersetzt werden kann.

 

Dann noch evtl. fehlende Texte ergänzen in korrespondierender Sprachdatei (hier: Englisch):

 

/resources/lang/en/main.php

 

Und, geht's jetzt? Nein. Aber die deutschen Übersetzungen werden jetzt angezogen / ausgegeben bei Absenden des englischen Kontaktformulars. @lang-Tags sind also richtig eingebaut. Ist also vielleicht die falsche Sprache beim Versenden der Mail ausgewählt? Schauen wir hierzu in der Datei

 

/app/Http/Controllers/ContactController.php

 

nach. Lassen wir uns hier die aktuelle Sprache mit

 

echo \App::getLocale();

 

ausgeben, erhalten wir 'de'. Also schalten wir dem Mailversand folgende Anweisungen vor:

 

$lang = substr(explode($request->header('host'), $request->header('referer'))[1], 1, 2) === 'en' ? 'en' : 'de';

\App::setLocale($lang);

 

Damit klappt dann alles!

 

Gesehen in unserer Agentur bei einer Website mit Laravel 6.0.4.