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

Laravel本地化使用翻译字符串作为键时复数翻译功能失效如何解决

问题解决方法

问题根源

你遇到的问题有两个核心原因:

  • 调用翻译时使用了普通翻译函数__(),该函数不支持复数翻译逻辑
  • JSON翻译文件中定义的键是完整的复数分隔字符串,但调用时仅传入了单数分支的内容,无法匹配到对应的翻译条目

解决步骤

  1. 更换复数翻译专用的调用方法
    Laravel中复数翻译需要使用trans_choice()辅助函数,或者Blade的@choice指令,同时需要传入完整的翻译键以及用于判断复数形式的数量参数:
// 显示单数翻译(1个苹果)
{{ trans_choice('There is one apple|There are many apples', 1) }}

// 显示复数翻译(比如5个苹果)
{{ trans_choice('There is one apple|There are many apples', 5) }}

Blade中也可以直接使用指令:

@choice('There is one apple|There are many apples', 1)

调用后即可输出预期的Hay una manzana内容。

  1. (可选)优化翻译键写法
    如果不想每次调用都写完整的长字符串,可调整JSON翻译文件使用短键:
{
    "message.apples": "Hay una manzana|Hay muchas manzanas"
}

调用时更简洁:

{{ trans_choice('message.apples', $count) }}
  1. 确认语言配置生效
    检查config/app.php中的locale参数是否设置为对应语言标识fr,如果是动态切换语言的场景,确保调用翻译前已经执行App::setLocale('fr')设置正确的当前语言。

内容的提问来源于stack exchange,提问作者abhishekvbajaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:27:00