如何在poedit中编辑原始字符串列?

Posted

技术标签:

【中文标题】如何在poedit中编辑原始字符串列?【英文标题】:How to edit the original string column in poedit? 【发布时间】:2013-09-24 02:11:09 【问题描述】:

您好,我正在使用 poedit 编辑器,但无法编辑原始字符串列。我想在原始字符串列上编辑几个单词。提前致谢

【问题讨论】:

【参考方案1】:

(哦,好吧,我也会在这里回答,为了可能找到这篇文章的人的利益。但你不会比我昨天回复你时更喜欢这个答案,当你问Poedit 邮寄个人电子邮件给我。)

简短的回答是:你不能。阅读the GNU gettext manual 的介绍部分——它从程序员和翻译者的角度很好地解释了gettext 翻译的基本概念非常,很明显你不了解gettext 的概念。

真的,我的意思是:请,,至少阅读手册的介绍部分。来自 GNU gettext 项目的优秀人员为此付出了很多努力,如果你用了 5-10 分钟,你就不需要问这个问题了。

加长版:

Gettext 使用源代码中的文本字符串(通常为英文)作为翻译键。它具有提取字符串并将它们放入 PO 文件的工具。这样可以确保只翻译实际使用的字符串。

更改原始字符串(称为msgid——它确实是一个ID)没有任何意义。然后,您将获得一个字符串的翻译从未在源代码中使用,因此该翻译将保证永远不会被使用。太浪费译者的时间了吧?

想要“编辑几个字”?在源代码中编辑它们。这是使用 gettext 的唯一方法。

【讨论】:

奇怪的是 poEdit 也不允许您添加条目。我猜他们希望开发人员总是手动编辑文本文件? @NoBugs:不,但它希望开发人员阅读库的文档(这里:您使用的 gettext 库,而不是 Poedit)至少足以掌握基本概念。老实说,我还希望您完全阅读您正在评论的答案——我在上面解释过字符串被添加到源代码中,而不是手动添加到 PO 文件中。说真的,如果您不清楚,请阅读 GNU gettext 手册的介绍部分。 @Jiaaro 没有。除非您的工作流程混乱(在这种情况下,请阅读 GNU gettext 手册并进行更改!),只需单击按钮或运行脚本即可更新 PO (T) 文件。作为普通 gettext 用户,它最快和最简单,并且比手动添加条目要快得多(即使不计算不可避免的错别字,调试字符串为什么不显示的几个小时,译者毫无意义地翻译它等)。说真的,只要按预期尝试使用 gettext,您就会惊讶于工作流程是多么方便和简单。 @Jiaaro 总是别人的错,对吧?对于程序员来说,这是一种危险的思考方式。 Always blame your own code first. xgettext 已经开发了很长时间,几乎可以肯定任何无法识别的字符串都是因为 你做错了 一种或另一种方式。没有什么是 RTFM 无法解决的。在 Poedit 中添加手动添加字符串的功能对于某处的一些小代码缺陷来说是一个疯狂的解决方法......(另外,看看你是如何完全将你的论点更改为其他东西的?) @Jiaaro 没有“自动发现”“重新排列”文件——Poedit 没有,而有能力编写的脚本/makefile 没有。说真的,你做错了。【参考方案2】:

瓦茨拉夫所说的非常真实。如果您更改实际的源字符串,系统将不会读取它。

在 Poedit 中,只需从长列表中选择要编辑的字符串,然后您将在屏幕底部的源文本中看到该字符串。然后在翻译框中,输入您喜欢的措辞。不要忘记包含任何变量,否则您的更改将不起作用。

【讨论】:

【参考方案3】:

瓦茨拉夫所说的非常错误。

你可以改变它。用记事本打开文件。 Ctrl + F 要更改的原始文本。更改它,然后保存它。然后再次用 po edit 打开文件,就可以看到修改后的文字了。

【讨论】:

-1 如果这样做,下次从源更新 PO 时将丢失它,并且无论如何都没有意义,因为以这种方式修改或添加的字符串不会在任何地方使用。 .. 为什么是-1?这个答案太错误了!即使此更改保留在 PO 中,它也没有任何用处,因为 gettext 使用源字符串作为标识符!

以上是关于如何在poedit中编辑原始字符串列?的主要内容,如果未能解决你的问题,请参考以下文章

PHP:如何在 Poedit 中使用换行符

如何使用 POEdit 从特定域获取(可翻译的)字符串

如何使用 poedit 从 js 文件生成 po 文件

如何使用 poedit 解析 Timber (twig) 模板并检测引用的字符串以进行翻译

POEdit 不提取 HTML 标记中的字符串

如何在 laravel 迁移中添加随机字符串列