2015-04-14 11 views
8

Mam wielojęzyczną stronę internetową w Laravel 4.2 i chciałbym wysłać powiadomienie e-mail do administratorów w określonym języku przy użyciu plików lang.Przetłumacz w wybranym języku w Laravel

Jak mogę zadzwonić pod numer Lang::get('group.key'), podając potrzebny język?

Dziękuję za pomoc!

Edit: istniejący kod: (pozycje lang są opcja1, opcja2, .., 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('/'); 
    } 
} 

Odpowiedz

17

Istnieją 3 sposoby Aby to osiągnąć:

  1. Możesz zmienić domyślny język a t wykonawczego w ten sposób:

App::setLocale('fr'); UWAGA: To nie jest odpowiedni do aktualnej potrzeby, jak to zajmie tylko wpływ na następnej stronie obciążenia.

  1. Można ustawić domyślny język tutaj app/config/app.php

'fallback_locale' => 'fr'

  1. I wziął głębsze spojrzenie na Illuminate \ Translation \ Tłumacz:

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

    Oznacza to, że można zrobić to za pomocą Tłumacz elewacji:

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

    Przykład:

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

NB: Ty struktura folderów powinna wyglądać następująco

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

Dziękuję, to jest podstawowa informacja na temat lokalizacji w Laravel. Jednak szukałem sposobu na użycie określonego języka bez zmiany ustawień regionalnych użytkownika. Okazało się, że tak nie jest. – MPikkle

+0

@MPikkle Okay teraz rozumiem. Jest bardzo możliwe, że musisz po prostu dostarczyć lokalnego jako część argumentacji. Zmienię teraz moją odpowiedź. – Digitlimit

+2

To wygląda bardziej kompleksowo i (jeśli opcja 3 działa - czystsza) niż odpowiedź zaakceptowana. Zwłaszcza jeśli wspomniałby, że opcja 1 zachowuje tylko tę zmianę do momentu załadowania następnej strony - tj.nie zmieni to tego, co widzi użytkownik z powodu przekierowania. – CompuChip

2

Wystarczy ustawić potrzebne locale przed wywołaniem Lang::get():

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

Wouldn czy to zmienia lokalizację dla użytkownika? – MPikkle

+0

Aby odpowiedzieć na to, muszę zobaczyć Twój kod, w którym wysyłasz wiadomość e-mail –

+0

Edytowałem mój oryginalny wpis – MPikkle

Powiązane problemy