2016-01-22 59 views
2

我正嘗試在自定義包中使用語言文件。 我遵循這個文檔:https://laravel.com/docs/master/packages#translations,但它不工作,只輸出命名空間:: file.key作爲字符串。包翻譯文件無法正常工作 - Laravel 5.2

沒有錯誤。我可以做錯什麼?

加載:

$this->loadTranslationsFrom(__DIR__.'/resources/lang', 'TranslatableRoute'); 

用作:

trans('TranslatableRoute::routes.create') 

我的路徑結構如下:

packages - doitonlinemedia - - translatableroutes - - - src - - - - TranslatableRoute.php - - - - TranslatableRoutesServiceProvider.php - - - - resources - - - - - lang - - - - - - en - - - - - - - routes.php

routes.php文件包含:

return [ 
    'create' => 'new', 
    'edit' => 'edit' 
]; 

發現了一些奇怪的東西。當我傾倒$this->app['translator']它包含:

array:1 [ 
    "TranslatableRoute" => array:1 [ 
     "routes" => array:1 [ 
     "en" => [] 
     ] 
    ] 
    ] 

但它不應該是:

array:1 [ 
    "TranslatableRoute" => array:1 [ 
     "en" => array:1 [ 
     "routes" => [] 
     ] 
    ] 
    ] 

編輯

當我加入與loadTranslationFrom語言文件,它調用addNamespace供應商/ laravel /翻譯/ FileLoader.php之後,$this->hints被填充。但是,只要我想調用它在同一個文件中的這個函數是觸發器:loadNamespaced()在這個函數中$this->hint s是空的。看起來像一些錯誤。

+0

你的目錄結構是什麼? 「resources/lang」目錄是否與您要加載翻譯的服務提供商相關? – Bogdan

回答

0

找到了解決方案,但我認爲我對這個問題採用了錯誤的方法,但目前它已修復。

我正在製作一個在routes.php文件中調用的包。用一些靜態函數。看來這是在它啓動包之前加載的。它已註冊,但尚未啓動。於是,我只好在一邊調用封裝代碼手動添加的語言文件:

\App::make('translator')->addNamespace('TranslatableRoute', __DIR__.'/resources/lang'); 

我想我需要裝載我的包是某種門面控制器。不知道如何。

0

我有同樣的問題,無法弄清楚。我最終改變了我分配給翻譯的命名空間,現在它可以工作。我不知道爲什麼,也許它是覆蓋命名空間到我的意見,但有一個獨特的命名空間它似乎工作。