2016-08-01 41 views
4

我想知道是否可以在Laravel 5.2中重新使用本地化翻譯。因此,像這樣的東西,或更好的真正的全球可訪問密鑰,以直接使用brand,而不是輸入文件夾或文件名(在這個例子中global)。在Laravel 5.2中重用翻譯

// resources/lang/en/global.php 
return [ 
'brand' => 'Stackoverflow', 
'my' => 'My :attribute', 
'my_brand' => trans('global.my', ['attribute' => trans('global.brand')]) 
]; 

希望他們能夠重用翻譯與Laravel的方式。

回答

0

您應該可以使用View Composer將您的翻譯全局注入到應用程序的所有視圖中。你應該遵循的步驟如下。

  • 創建一個View Composer
  • 註冊的View Composer向服務供應商
  • 注入你翻譯成作曲,並將其綁定使用通配符的所有意見。

作曲家類應該是這樣的,它的命名空間應該是應用程序\ HTTP \ ViewComposers(應用程序可以根據您的應用程序的命名空間是不同的)

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); 
     } 
    } 

你可以使用一個循環來獲得翻譯,但這只是一個簡單的例子,只是爲了說明方式。

現在的服務提供商,你應該使用這樣的

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() 
    { 
     // 
    } 
} 

這樣做之後,你應該能夠使用這些變量如{{translations.brand}}在刀片模板。

您可以在官方Laravel文檔 https://laravel.com/docs/5.1/views

+0

這聽起來像一個想法,但我想說它像'trans('品牌')'。我不知道這是否也可以提供重用翻譯文件中翻譯的方式。 –

0

您可以創建自己的幫助文件,以解決lang變量找到更多關於視圖的作曲家。

步驟1:在App \ Helpers中創建一個擴展名爲.php的文件。任何文件名(帶.php擴展名)都應該由Helper ServiceProvider自動加載。在你HelperServiceProvider你應該找到如下的一些代碼:

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

    } 

第2步:

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]; 
    } 
} 

第3步:在下面的新助手文件創建功能與您的刀片鍵通話功能文件如下:

{{my_trans('key2')}} 

這是一個工作示例,應該可以幫助您擴展您的想法。