【问题标题】:Issue with translation string and Poedit翻译字符串和 Poedit 的问题
【发布时间】:2015-02-09 09:37:14
【问题描述】:

我遇到了给定来源的翻译问题;

<?php
$this->messageAdd($this->_("Ett okänt fel uppstod när %0 skulle skapas!", $term2), "error");
return $this->setResultCode(self::RESULT_ERROR);
?>

如果我不是盲人,这是一个完全正常的字符串,我在其他源文件中有很多类似的字符串,但是这个特定的会导致 po 文件中出现这些行;

#: ../../../../path/to/source_file.php:552
#, php-format
msgid "Ett okänt fel uppstod när %0 skulle skapas!"
msgstr "An unknown error occurred while creating the %0!"

出现错误

错误:与“msgid”不同,“msgstr”不是有效的 PHP 格式字符串。原因:在指令编号 1 中,字符“w”不是有效的对话说明符。

问题是什么,为什么只有这个字符串会导致错误?如果我从源文件中删除字符串,poedit 中不会产生错误。

编辑#1;经过进一步研究,我找到了this issue,发现在源文件中的翻译字符串之前添加注释/* xgettext:no-php-format */可以解决问题。很高兴知道为什么这只发生在指定的字符串上而不是我的 5k+ 字符串中的任何其他字符串。

【问题讨论】:

  • 因为xgettext 使用 启发式 可能是由在字符串中使用 % 触发的(你可能不会在所有 5k+字符串)。启发式(根据定义)偶尔会失败,这就是 gettext 内置支持手动更正它们的原因。
  • @VáclavSlavík 好的,谢谢。没错,我没有在所有字符串中使用 %,但我做了一个脚本计数,并且 3219 个字符串中有一个或多个 %[0-9] 实体。所以我仍然不确定为什么只有给定的字符串会导致错误。无论如何,内联注释有效。

标签: php po poedit


【解决方案1】:

删除

#, php-format

来自您的 .po 文件的指令。

【讨论】:

  • 我做了几次 - 但下次我更新目录时,它会再次添加。我用解决方案更新了我的问题,如果您对为什么只有给定的字符串受到影响有任何线索,请告诉我。
猜你喜欢
  • 2012-01-24
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-26
  • 2015-12-21
  • 2011-08-18
  • 2013-05-13
相关资源
最近更新 更多