2016-12-02 58 views
0

我在Laravel 5.3中使用本地化掙扎了一點(使用php 7)。在Laravel 5.3的默認localizaiton文件格式是使用括號,如下面的例子:Laravel本地化文件格式錯誤:數組()與[]格式

return [ 
'footer.contact.email' => 'Email:', 
] 

這就是我一直在用我的應用程序是什麼,它的工作的罰款。但現在我想用一些包的工作,以幫助翻譯,例如:

但在「老」 laravel 4這兩個的生成本地化文件。 x數組格式。例如

return array(
    'footer' => array(
    'contact' => array(
     'email' => 'Email:', 
    ), 
    ), 
); 

據我瞭解,我應該有我的laravel 5.3應用此本地化文件格式沒有問題,但是它總是拋出一個異常:

[2016-12-02 13:26:01] local.ERROR: ErrorException: htmlspecialchars() expects parameter 1 to be string, array given in C:\100_source_code\consulting_platform_laravel\maingig\vendor\laravel\framework\src\Illuminate\Support\helpers.php:519 
Stack trace: 
#0 C:\100_source_code\consulting_platform_laravel\maingig\vendor\sentry\sentry\lib\Raven\Breadcrumbs\ErrorHandler.php(36): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'htmlspecialchar...', 'C:\\100_source_c...', 519, Array) 

我真的不能明白爲什麼這個格式不適用於我的應用程序。我敢打賭,這是微不足道的,我失蹤了,但任何幫助將非常歡迎!

感謝,

基督教

回答

1

逐步執行代碼的多出幾個小時後,我發現了問題的根源。

例如,我在原朗文件有這些:

'footer.subscribe' => 'SUBSCRIBE TO OUR NEWSLETTER', 
'footer.subscribe.intro' => 'Be the first to know about our latest news...', 
'footer.subscribe.privacy' => 'Privacy Policy', 
'footer.subscribe.tos' => 'Terms of Service', 
'footer.subscribe.tac' => 'Terms and Conditions', 

當我試圖用這兩個在我原來的問題中提到的包,他們產生了以下的輸出:

'footer' => 
    array (
    'subscribe' => 
    array (
     'intro' => 'TODO: intro', 
     'privacy' => 'TODO: privacy', 
     'tos' => 'TODO: tos', 
     'tac' => 'TODO: tac', 
    ), 
), 

正如你所看到的,生成的文件刪除了footer.subscribe文本的值,並且在這種情況下只保留子元素,介紹,隱私,tos和tas。因此trans('footer.subscribe')的請求返回一個數組而不是文本。

現在,我知道這一點,我將改變我原來的翻譯文件的格式!

c。