在Laravel本地化函数

时间:2018-03-27 08:19:07

标签: laravel utf-8

我有一个奇怪的BOM字符案例(%EF%BB%BF)在Laravel 5.5中加入了本地化函数__($ key)的输出

奇怪的是,在同一个函数的两个后续调用中,一个将产生正确的结果,而另一个将不会..我已经在Notepad ++中打开了所有文件,显示所有字符,没有什么突出的。我确实已经复制第二行(正确)行而粘贴代替第一行(不正确)行 - 结果仍然相同!

我基本上尝试本地化正在使用的路由($ uLng是'fr'或'en') - 并且一些链接指向页面上的特定锚点,我使用__()<本地化/ p>

以下是我的观点代码:

<a class="floatingMenuLink" href="{{ route('public_features.' . $uLng) }}#{{ __('pub_how_it_works.routeIdSecurity') }}">{{ __('global.publicMenuSecurity') }}</a>
<a class="floatingMenuLink" href="{{ route('public_features.' . $uLng) }}#{{ __('pub_how_it_works.routeIdSecurity') }}">{{ __('global.publicMenuSecurity') }}</a>

非常相似吗?

生成的第一个链接是:http://localhost/fonctionnement#%EF%BB%BFsecurite

生成的第二个链接是:http://localhost/fonctionnement#securite

进一步测试表明:

  • 使用不同的密钥(即'pub_how_it_works.foo'而不是'pub_how_it_works.routeIdSecurity')为第一个链接产生相同的问题
  • 用静态文本替换__()函数可以解决问题

所以..我真的认为问题来自本地化,但我不知道如何解决它..

1 个答案:

答案 0 :(得分:0)

经过更多的轰炸和调查之后 - 问题来自语言文件,这些文件以带有BOM的UTF8编码。

我使用Excel维护我的翻译库并有一个小宏来生成'lang'文件 - 并且默认情况下它以UTF8 BOM写入。我使用this solution来解决问题。