Symfony翻译:不改配置解决debug:translation报basic.months缺失问题
解决Symfony翻译调试提示数组键缺失的问题
核心原因
debug:translation 命令会检查每个顶层翻译键是否对应可直接翻译的字符串值,而你的 basic.months 是数组节点(用于存储子键的月份名称),并非直接的翻译字符串,因此命令误判为“翻译缺失”。
不修改配置的解决办法
1. 调试命令添加排除参数
执行调试命令时,通过 --exclude 参数跳过对 basic.months 键的检查:
php bin/console debug:translation en --exclude=basic.months
这样命令就不会再提示该键缺失,同时不影响你正常使用 $this->translator->trans('basic.months.'.$month) 获取月份翻译值。
2. 配置全局调试排除规则(可选)
如果不想每次执行命令都手动加参数,可以在 config/packages/translation.yaml 中添加调试排除配置(Symfony 5.4+ 支持):
framework: translator: debug: exclude: - 'basic.months'
之后直接执行 php bin/console debug:translation en 就会自动跳过该键的检查。
为什么 trans('basic.months', ['%count%' => $month]) 无效
这个用法是针对复数翻译场景的,需要你的翻译配置采用复数语法(如 basic.months: 'one: January|other: %count% Month'),但你的配置是数组形式的子键结构,因此不适用这种调用方式,继续使用 trans('basic.months.'.$month) 即可。
内容的提问来源于stack exchange,提问作者talhaamir
相关产品推荐
相关产品推荐

