2017-10-20 4 views
1

Ich entwickle eine Multi-Tenant-Anwendung, in der ich dieselbe Codebasis für zwei verschiedene Websites verwende, die jeweils in zwei Sprachen verfügbar sind.Verschiedene Übersetzungen für Multi-Tenant-Anwendungen

  • Webseite A FR
  • Webseite A EN
  • Webseite B FR
  • Webseite B EN

Laravel können Sie die Lokalisierung Übersetzungen im resources/lang Verzeichnis speichern, unter einem anderen Ordner für jede Sprache (in diesem Fall einen Ordner fr und einen Ordner en).

Dies funktioniert gut, aber es gibt einige Zeichenfolgen, die abhängig vom aktuellen Mandanten unterschiedlich übersetzt werden müssen. Auf der Website A könnte der Home-Button Link "Home" heißen und auf der Website B würde er "Go to Home" heißen.

Wie kann ich verschiedene Übersetzungsdateien für verschiedene Mandanten angeben?

Ich habe versucht, so etwas wie dies zu tun:

/ ressources 
/lang 
    /fr 
    /tenantA 
     - messages.php 
    /tenantB 
     - messages.php 
    /en 
     /tenantA 
     - messages.php 
     /tenantB 
     - messages.php 

Dann stelle ich die locale global in einem Service-Provider:

App::setLocale('en'); 

ich dann versuchen, die richtige Übersetzung aus meiner Sicht zu laden:

{{ __('tenantA.messages.home') }} 

Dies funktioniert jedoch nicht, es ist nur Echo aus tenantA.messages.home (die wörtliche Strin g) anstelle der Übersetzung, die in der messages.php Datei enthalten ist, unter dem Schlüssel home.

Wie kann ich das beheben? Gibt es einen besseren Weg, dies zu tun?

Antwort

1

Es funktioniert nicht mit sub-directories. verwenden, aber es wird mit einem / arbeiten, so dass es zum Beispiel können Sie versuchen die folgende Art und Weise (getestet auf v-5.4):

{{ __('tenantA/messages.home') }}