2016-12-02 59 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。