2016-08-01 15 views
4

Ich frage mich, ob es möglich ist, Lokalisierung Übersetzungen in Laravel 5.2 zu verwenden. So etwas wie dieses oder besser echte globale accesable Schlüssel zur direkten Verwendung brand, anstatt den Ordner oder den Dateinamen einzugeben (In diesem Beispiel global).Wiederverwendung von Übersetzungen in Laravel 5.2

Ich hoffe, es ist eine Möglichkeit, Übersetzungen mit Laravel wiederzuverwenden.

Antwort

0

Sie können einen View Composer verwenden, um Ihre Übersetzungen global in alle Ansichten der Anwendung zu übertragen. Die Schritte, denen Sie folgen sollten, sind die folgenden.

  • einen Komponisten Ansicht Erstellen Sie die Ansicht Komponist an einen Service Provider
  • spritzen Sie Ihre Übersetzungen in den Komponisten
  • registrieren und binden Sie es an allen Ansichten die Wildcard-Operator.

sollte der Komponist Klasse wie folgt aussehen und es ist Namespace-App \ \ ViewComposers Http sein sollte (App kann auf der Grundlage der Namensraum der Anwendung unterschiedlich sein)

class TranslationsComposer 
    { 
     protected $translations; 

     public function __construct() 
     { 
      $this->translations = [ 
       'brand' => trans('global.brand'), 
       'my' => trans('global.my'), 
      ]; 
     } 

     public function compose(View $view) 
     { 
      $view->with('translations', $this->translations); 
     } 
    } 

Sie eine Schleife verwenden könnte zu erhalten die Übersetzungen, aber dies ist ein einfaches Beispiel, nur um den Weg zu demonstrieren.

Jetzt für den Service Provider sollten Sie so etwas wie diese

namespace App\Http\ViewComposers; 

use Illuminate\Contracts\View\View; 
use Illuminate\Users\Repository as UserRepository; 
class ComposerServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     view()->composer(
      '*','App\Http\ViewComposers\TranslationsComposer' 
     ); 
    } 

    public function register() 
    { 
     // 
    } 
} 

Nach Dabei sollten Sie in der Lage sein zu verwenden, um diese Variablen als {{translations.brand}} in den Blade-Vorlagen verwenden.

Sie können https://laravel.com/docs/5.1/views

+0

Das klingt wie eine Idee, aber ich möchte es sagen wie 'trans ('Marke')'. Ich weiß nicht, ob dies auch eine Möglichkeit bietet, die Übersetzung in den Übersetzungsdateien wiederzuverwenden. –

0

Sie können Ihre eigene Helfer-Datei erstellen auf der offiziellen Laravel Dokumentation mehr über Ansicht Komponisten finden, um die lang Variable zu lösen.

Schritt 1: Erstellen Sie eine Datei mit der Erweiterung .php in App \ Helpers. Jeder Dateiname (mit Erweiterung .php) sollte automatisch von Helper ServiceProvider geladen werden. In Ihrem HelperServiceProvider sollten Sie einige Code wie unten finden:

public function register() 
    { 
     foreach (glob(app_path().'/Helpers/*.php') as $filename){ 
      require_once($filename); 
     } 

    } 

Schritt 2: Erstellen Sie eine Funktion in Ihrem neuen Helfer-Datei wie folgt:

if(! function_exists('my_trans')){ 
    function my_trans($key){ 
     // load all the lang variable as an array here which should look like as below 
     $lang = [ 
      'key1'=>'value1', 
      'key2'=>'value2', 
      'key3'=>'value3', 
      'key4'=>'value4', 
      'key5'=>'value5' 
     ]; 

     return $lang[$key]; 
    } 
} 

Schritt 3: Rufen Sie die Funktion mit Schlüssel aus der Klinge Datei wie folgt:

Dies ist Arbeitsbeispiel und sollte Ihnen helfen, Ihre Idee zu erweitern.