Laravel 5.6本地化复数化失效问题咨询
解决Laravel复数化翻译不生效的问题
哦,我明白你碰到的问题了!你现在的核心问题是用错了翻译函数,Laravel的复数化规则需要专门的函数来解析,而不是普通的__()函数。
问题根源
你在视图里用了{{__('store.cartitems')}},这个__()(也就是trans()函数)只是做简单的文本提取和变量替换,它不会识别你语言文件里的{1}Item|[2,*]Items这种复数规则。所以它直接把整个规则字符串输出了,再加上你手动拼接了数字3,就出现了Cart 3 {1}Item|[2,*]Items的结果。
正确的实现方式
Laravel专门提供了trans_choice()函数来处理复数化翻译,你只需要把视图里的代码改成这样:
{{ trans_choice('store.cartitems', 3) }}
如果要和"Cart"一起显示,就写成:
Cart {{ trans_choice('store.cartitems', 3) }}
如果你的数量是动态的(比如从购物车模型获取),直接传变量就行:
Cart {{ trans_choice('store.cartitems', $cart->item_count) }}
验证你的语言文件配置
你的语言文件配置是没问题的:
// 比如 resources/lang/en/store.php return [ 'cartitems' => '{1}Item|[2,*]Items', ];
只要文件路径正确,配合trans_choice()函数就能正常输出3 Items或者1 Item了。
内容的提问来源于stack exchange,提问作者mafortis
相关产品推荐
相关产品推荐

