【问题标题】:Django makemessages is marking translated strings as fuzzyDjango makemessages 将翻译的字符串标记为模糊
【发布时间】:2013-02-12 13:18:28
【问题描述】:

我在使用 Django makemessages 管理命令时遇到问题。似乎它在 .po 文件中随机将消息标记为模糊,即使它们已经被翻译。比如……

#: templates/profile/edit.html:21
msgid "Save Changes"
msgstr "Save Changes DE"

会变成……

#: templates/profile/edit.html:21
#, fuzzy,
msgid "Save Changes"
msgstr "Save Changes DE"

这种行为非常断断续续,很难重新创建,因此调试并不简单。

有人有什么想法吗?

【问题讨论】:

  • 确保您没有两个相同的英文字符串但翻译不同。在您的情况下,检查 Save Changes 是否在文件中的任何其他位置声明。
  • @aamir-adnan 该文件肯定只包含唯一的 msgid 字符串,因为 compilemessages 管理命令可以正常工作(如果多次声明相同的字符串,则编译失败)

标签: python django internationalization translation


【解决方案1】:

我猜字符串有一些变化 - 可能是一些不可打印的字符,它被翻译器删除,然后字符串不匹配。

如果你能把这两个完整的文件放在某个地方,就可以给出明确的答案......

【讨论】:

  • 不幸的是,我在运行 makemessages 命令之前忘记备份 django.po 文件,因此我无法真正比​​较这两个文件的内容。我给出的例子只是为了说明会发生什么,并不是真正的差异。
  • msgmerge (这就是 makemessages 在后台使用的)确实在源字符串更改时将字符串标记为模糊,所以很可能有一些,也许很难发现 - 要么是不可打印的字符,空格、大写或类似的东西。
  • 当你说字符串可能有变化时,你的意思是在源文件中还是在实际的po文件中?在这种情况下,可以计算源字符串的更改,因为源文件在 git 中没有更改。
  • 它可能在两边。我曾多次看到翻译人员在某处插入零宽度空间 (),这可能导致您描述的行为。然而,这仍然是应该从差异中看到的东西(msgid 会改变)。
猜你喜欢
  • 2022-10-08
  • 2018-05-02
  • 1970-01-01
  • 2010-11-25
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多