2016-12-02 3 views
0

Laravel 5.3(php 7)でローカライズに少し苦労しています。 Laravel 5.3のデフォルトlocalizaitonファイル形式は、この例のように、ブラケットを使用している:Laravelローカリゼーションファイル形式エラー:array()と[] format

私は私のアプリで使用していると、それが正常に動作しているものだ
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', 

は例えば、私は私の元のlangファイルにこれらを得た

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

あなたが見ることができるように、生成されたファイルはテキストfooter.subscribeの値を削除し、この場合は子要素、イントロ、プライバシー、トーとタスだけを保持していました。したがって、trans('footer.subscribe')の要求は、配列ではなくテキストを返します。

私はこれを知ったので、元の翻訳ファイルのフォーマットを変更します!

c。