2015-04-14 5 views
8

Ich habe eine mehrsprachige Website in Laravel 4.2, und möchte eine E-Mail-Benachrichtigung an die Administratoren in einer bestimmten Sprache mit den Lang-Dateien senden.Übersetzen in einer bestimmten Sprache in Laravel

Wie kann ich anrufen Lang::get('group.key') mit Angabe der benötigten Sprache?

Vielen Dank für Ihre Hilfe!

Edit: vorhandenen Code: (die lang Artikel sind option1, option2, .., Option6)

class EmailController extends BaseController { 
    public static function contact(){ 
     $rules = [ 
      'name' => 'required', 
      'email' => 'required|email', 
      'subject' => 'required|digits_between:1,6', 
      'message' => 'required' 
     ]; 
     $validator = Validator::make(Input::all(), $rules); 
     if (!$validator->fails()){ 
      $data = ['subject' => Input::get('subject'), 
       'email' => Input::get('email'), 
       'content' => Input::get('message')]; 
      Mail::send('emails.contact', $data, function($message){ 
       $message->from(Input::get('email'), Input::get('name')); 
       $message->to('[email protected]', 'Admin'); 
       $message->subject(Lang::get('contact.option'.Input::get('subject'))); 
      }); 
     } 
     return Redirect::to('/'); 
    } 
} 

Antwort

17

Es gibt 3 Möglichkeiten Um dies zu erreichen:

  1. Sie können die Standardsprache ändern a t Laufzeit durch dies zu tun:

App::setLocale('fr'); NB: Dies ist nicht geeignet für den aktuellen Bedarf, da es nur Auswirkungen auf die nächste Seite zu laden statt.

  1. Sie Standardsprache hier einstellen app/config/app.php

'fallback_locale' => 'fr'

  1. I nahm einen tieferen Blick auf Illuminate \ Translation \ Übersetzer:

    get($key, array $replace = array(), $locale = null)

    Dies bedeutet, dass Sie dies mit Translator Fassade tun können:

    Lang::get($key, array $replace = array(), $locale = null);

    Beispiel:

    Lang::get('group.key',[],'fr');

NB: Sie Ordnerstruktur wie folgt

/app 
    /lang 
     /en 
      messages.php 
     /fr 
      messages.php 
+0

Vielen Dank, dies sind grundlegende Informationen zur Lokalisierung in Laravel. Ich suchte jedoch nach einer Möglichkeit, eine bestimmte Sprache zu verwenden, ohne das Gebietsschema des Benutzers zu ändern. Es stellte sich heraus, dass es nicht so ist. – MPikkle

+0

@MPikkle Okay jetzt verstehe ich. Es ist sehr möglich, dass Sie nur das lokale als Teil des Arguments liefern. Ich werde jetzt meine Antwort ändern. – Digitlimit

+2

Dies scheint eine umfassendere und (wenn Option 3 funktioniert - sauberer) Antwort als die akzeptierte. Besonders wenn es erwähnen würde, dass Option 1 nur die Änderung bis zur nächsten Seitenladung fortsetzt - d. H.Es wird nicht das ändern, was der Benutzer aufgrund der Weiterleitung sieht. – CompuChip

2

einfach eingestellt benötigt locale vor Lang::get() Aufruf:

App::setLocale('es'); 
+0

Wouldn aussehen sollte ändere das Gebietsschema für den Benutzer nicht? – MPikkle

+0

um dies zu beantworten, muss ich Ihren Code sehen, wo Sie E-Mail senden –

+0

Ich habe meinen ursprünglichen Post bearbeitet – MPikkle

Verwandte Themen