Laravel本地化字符串中变量调用问题求助
问题原因与解决方案
嗨,这个问题其实是因为你没搞清楚Laravel翻译函数__()里字符串的解析规则~
当你写{{ __('permission.$permissions[13]') }}的时候,Laravel会把整个permission.$permissions[13]当成字面量的翻译键去查找,它不会自动解析里面的$permissions[13]变量。因为单引号包裹的字符串里,PHP是不会解析变量的,所以翻译系统找不到对应的键,就直接返回了键本身。
正确的做法有两种:
字符串拼接法:先把前缀
permission.和变量值拼接成完整的翻译键,再传给__()函数:{{ __('permission.' . $permissions[13]) }}这样就会生成
permission.addUser这个正确的键,自然就能拿到Add new user的翻译结果了。双引号解析变量:用双引号包裹字符串,同时用大括号把变量包起来确保正确解析:
{{ __("permission.{$permissions[13]}") }}这种写法PHP会解析
{$permissions[13]}的值,同样能生成正确的翻译键。
简单来说,你需要先让PHP解析变量得到addUser,再和permission.组合成完整的键,而不是让翻译函数去处理未解析的变量字符串~
内容的提问来源于stack exchange,提问作者Feralheart
相关产品推荐
相关产品推荐

