如何在Poedit等翻译工具中调整sprintf字符串翻译的占位符顺序
多语言场景占位符语序错位解决方案
核心原理
PHP 内置的sprintf函数支持位置占位符语法,允许你在翻译时自定义占位符的调用顺序,不需要修改原有业务代码。
原代码传入参数的顺序对应占位符序号如下(序号从1开始计数):
- 序号1:
$commentAuthor(评论作者) - 序号2:
$commentLink(评论链接) - 序号3:
$postAuthor(文章作者) - 序号4:
$postLink(文章链接)
法语翻译修正写法
你需要的法语语序是「1→2→4→3」,直接在Poedit的翻译框中将原翻译替换为如下内容即可:%1$s a laissé un %2$s sur la %4$s de %3$s
Poedit操作步骤
- 打开对应项目的
.po语言文件,定位到原英文语句%s left a %s on %s\'s %s.的翻译条目 - 直接将翻译内容替换为上面带序号的占位符格式,Poedit原生支持该语法无需额外配置
- 保存修改后编译生成
.mo文件,替换站点原有语言文件即可生效
修正后输出结果会完全匹配法语语序要求,不会再出现参数错位的问题。
内容的提问来源于stack exchange,提问作者Scotty
相关产品推荐
相关产品推荐

