4

在翻译文本中使用类似 printf 的格式字符串时,msgfmt --check检查翻译是否仍然包含占位符。例如,xgettext在以下代码上运行

printf( gettext( "string: %s, int: %d" ), str, i )

生成一个标记为的.po文件,其值为. 如果翻译者忘记了其中一个或在翻译中忘记了,那么就会抱怨:msgidc-format"string: %s, int: %d"%s%dmsgfmt

“msgid”和“msgstr”中格式规范的数量不匹配

不幸的是,此检查不适用于使用位置符号的格式字符串,例如

boost::format( gettext( "string: %1%, int %2%" ) ) % str % i

如何验证我的翻译中是否存在位置符号占位符?

4

1 回答 1

0

不是直接回答,但也许以下解决方案可以解决您的问题:

boost::format( gettext( "string: %1$s, int %2$d" ) ) % str % i;

于 2018-04-20T09:27:44.853 回答