【问题标题】:How to validate positional notation placeholders in format strings with msgfmt?如何使用 msgfmt 验证格式字符串中的位置符号占位符?
【发布时间】:2017-03-31 07:19:22
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: c++ c msgfmt


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      相关资源
      最近更新 更多