You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel本地化调用__('Products')翻译触发htmlspecialchars()错误问题

错误触发原因说明
  • Laravel 内置的__()翻译函数存在优先级匹配规则:
    1. 优先匹配数组翻译文件:如果lang/当前语言目录下存在和翻译键小写后同名的PHP翻译文件,例如存在products.php翻译文件,调用__('Products')时,函数会直接返回该文件导出的整个翻译数组,而非字符串。
    2. 没有匹配到对应数组文件时,才会去JSON翻译文件中查找对应键,找不到则直接返回翻译键本身的字符串。
  • 报错的根本原因是:{{ }} Blade输出语法默认会对内容调用htmlspecialchars()做安全转义,这个函数只能处理字符串类型输入,拿到__('Products')返回的数组就会抛出类型错误。
  • 你观察到的两个现象完全符合这个逻辑:
    • 把翻译键改成{{ __('Products page') }}后错误消失:不存在和products page同名的数组翻译文件,函数返回字符串,转义正常执行
    • 新增en.json配置Products翻译后错误消失:JSON翻译的匹配优先级高于数组翻译的文件名匹配,此时函数返回JSON中配置的字符串,不会再加载整个翻译数组

内容的提问来源于stack exchange,提问作者Domantas Šlaičiūnas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:36:01