如何使用PO编辑器向*.po文件添加新字符串

22

我手动创建了一个名为test.po的文件,其内容如下:

msgid "greeting"
msgstr "你好,世界"

现在我可以像“poedit”和“GTranslated”(我正在使用Ubuntu)这样的编辑器中编辑翻译(hello world),甚至可以添加对该翻译的注释。然而,“poedit”和“GTranslated”都不允许我添加新的翻译字符串——我已经在网上搜索过,并查看了其他编辑器的截图,但似乎没有一个“新建”按钮。

我错过了什么???这似乎很愚蠢,必须使用“纯文本”编辑器编辑新键,然后再在这些PO编辑器(无论它们是什么)中编辑它们。(如果你不能告诉我,我是这个“gettext”世界的新手——我正在用Zend/PHP构建一个网站。)

5个回答

20

你不应该直接向 .po 文件中添加字符串;它们将会由 msgmerge 从由 xgettext 生成的 .pot 文件中添加


我有一个场景,只需要在PO文件中添加两个单词,打开和重新生成PO文件似乎有点冗长,你觉得呢? - Aditya P Bhatt
2
@iamtheladylegend:手动编辑是无法自动化的。 - Ignacio Vazquez-Abrams
我有一个案例,其中我正在添加带有%s的单词,用于具有链接的字符串,例如<a href="somelink">链接名称</a>和带有%d的货币数据,例如$123.00,而一个单词中有多个链接的字符串,则输入为%1$s和%2$s,例如Hello <a href="#">Link1</a>。现在欢迎您<a href="#">Link2</a>。现在,像%1$s和%2$s这样的单词未包含在PO文件中,有什么想法吗? - Aditya P Bhatt
1
如果我的字符串来源于数据库,我该怎么办?例如,如何将消息制作成po文件?Compilemssage似乎会忽略之前未被makemessage抓取的所有内容。 - EvilSmurf

13

以下是我所做的:

编辑.po文件并添加您的新字符串,例如:

msgid "All Catalogues"
msgstr "Todos los catalogos"

保存 .po 文件。

现在在 poedit 中打开它,然后在菜单中选择:目录 > 从 POT 文件更新

一旦您更新了文件,您应该可以看到新的字符串,并能够更改它。

保存更改,你就可以继续操作了。


1
我的用例可能略有不同,因为我正在使用 POT 文件。尽管如此,你的答案仍然对我有所帮助。为了手动添加新的翻译,我按照你指定的代码在 POT 文件中添加了内容,然后在 poedit 中打开了我的 .po 翻译文件,并选择了目录 > 从 POT 更新,就像你建议的那样。完美地解决了问题。 - rinogo
太棒了,很高兴听到 @rinogo。 - Edu Wass

5

MacOS:

  1. 使用任何文本编辑器编辑 .po 文件。
  2. 在 Poedit(免费软件)中打开 .po 文件。
  3. 在 Poedit 中,选择 文件-> 编译为 .MO。

这是我在 Wordpress Genesis .po 文件中成功的做法。


所以,Poedit 所做的就是编译 .mo 文件?你不能在 Poedit 中添加条目似乎有点奇怪。我认为这是本帖作者困惑的根源——这就是我来到这里的原因。 - Chris Pink
@ChrisPink 这就是gettext翻译系统的工作原理。你不需要手动添加字符串,因为它们来自源代码 - 如果某些内容不在代码中,翻译它就没有意义,因为这个翻译永远不会被使用。所以,你可以通过自动从代码中提取所有需要翻译的文本来避免手动操作。 - Václav Slavík
@Václav Slavík,您好!在WordPress环境(使用Polylang)中,您如何实现这一点? - Chris Pink

1

使用任何文本编辑器打开.po文件,添加这些行或需要添加的文本。

msgid "All Catalogues"
msgstr "Todos los catalogos"

保存并启动 :-D

1

虽然这是一个旧帖子,但我发现自己想要翻译存储在WordPress数据库中且无法使用Polylang进行翻译的字符串。

我的做法是在主题中创建一个PHP文件,并添加带有__("A string to translate");的字符串。PoEdit会自动将其添加到.po文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接