poedit 显示似乎无法修复的错误

Posted

技术标签:

【中文标题】poedit 显示似乎无法修复的错误【英文标题】:poedit shows errors that cant seem to be fixed 【发布时间】:2014-06-06 00:06:48 【问题描述】:

我在使用 PoEdit 时遇到问题我使用了一个名为 PO-Auto-Translator 的软件来翻译 po 文件,一旦完成,我想继​​续使用 poedit 编辑文件,当我尝试保存时,我得到了很多错误.. .

    04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:46: missing 'msgstr' section
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:46:22: syntax error
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:51: missing 'msgstr' section
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:51:22: syntax error
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:52: keyword "$s" unknown
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:795: keyword "Upload" unknown
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:795:55: syntax error
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:1583: missing 'msgstr' section
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:1583:27: syntax error
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:1584: keyword "s" unknown
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:1597:28: syntax error
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:1597: keyword "s" unknown
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:4162:14: syntax error
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:4163: end-of-line within string
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:4167:14: syntax error
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:4167: keyword "Admin" unknown
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:4168: end-of-line within string
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:4172:14: syntax error
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:4173: end-of-line within string
04/21/14 22:39:12: C:\Users\home\Desktop\translation.po:4176:31: syntax error
04/21/14 22:39:12: C:\Program Files (x86)\Poedit\GettextTools\bin\msgfmt.exe: too many errors, aborting

我将该文件与其他未显示此错误且未发现问题的文件进行了比较。

这里是翻译的前 50 行

# Translation of translation
msgid ""
msgstr ""
"Project-Id-Version: translation\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-05 10:43+0100\n"
"PO-Revision-Date: 2014-04-21 22:39+0200\n"
"Last-Translator: \n"
"Language-Team: AppThemes\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.6.4\n"
"X-Poedit-KeywordsList: __;_e;_n:1,2;_nx:1,2;_x:1,2c;_ex:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;_nx_noop:1,2,3c\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-Basepath: .\n"
"X-Poedit-SearchPath-0: .\n"

#: 404.php:22
msgid "Whoops! Page Not Found."
msgstr "אופס! דף לא נמצא."

#: 404.php:24
#: 404.php:44 search.php:77 includes/theme-actions.php:218
msgid "Sponsored Links"
msgstr "קישורים ממומנים"

#: attachment.php:19
#, php-format
msgid "Return to %s"
msgstr "חזור אל% s"

#: attachment.php:20
#, php-format
msgid "← Return to %s"
msgstr "? חזור אל% s"

#: attachment.php:31
#, php-format
msgid "<span class="%1$s">By</span> %2$s"  /line 46
msgstr "ש"

#: attachment.php:44
#, php-format
msgid "<span class="%1$s">Uploaded</span> %2$s"
msgstr "<span class="%1$s">Uploaded</span> %2$s"

#: attachment.php:55
#, php-format
msgid "Full size is %s pixels"
msgstr "גודל מלא הוא פיקסלים% s"

谁能看到我的文件有什么问题?

【问题讨论】:

【参考方案1】:

我发现了问题。我需要在 poedit 给出错误的每个 " 旁边手动添加 \ ......我一点一点地修复它并且它有效:)

【讨论】:

【参考方案2】:

您的 PO 文件无效 — 它不遵循 PO 文件格式语法,也没有在字符串文字中转义引号。 msgid "foo"bar" 无效,与msgid "foo\"bar" 不同,与 C、PHP 或许多其他语言类似。

IMNSHO,您应该立即放弃任何生成如此严重损坏的 PO 文件的工具(它绝对不是 X-Generator 标题所暗示的 Poedit),并用实际知道其输出格式的东西替换它。如xgettext gettext 字符串提取的标准工具。支持PHP就好了。

如果该工具是国产的,这里有一个非常由 Pology 的 Chusslove Illich 对 PO 格式的很好的描述:http://pology.nedohodnik.net/doc/user/en_US/ch-poformat.html(非官方,但比 GNU gettext 自己的手册好得多)。如果您在任何代码中编写或读取 PO 文件,我强烈推荐它。

【讨论】:

【参考方案3】:

对于任何阅读此内容并在从您的 po 文件中调试 POEdit 中显示的错误时遇到问题的人,您可以运行:

msgfmt -v -c mypofile.po

它将显示您的 po 文件中显示的每个错误以及与之关联的行。

此外,您可以使用 POEdit 菜单中的Catalogue &gt; Purge Deleted Translations,这将为您节省大量问题并使您的 po 文件更轻。

【讨论】:

以上是关于poedit 显示似乎无法修复的错误的主要内容,如果未能解决你的问题,请参考以下文章

打开po文件时poEdit编码错误

Poedit:Html/Html5 文件的“源代码不可用错误”

如何修复 ASP.NET 中的“此页面无法显示”错误?

无法弄清楚如何修复错误

如何修复错误“命名管道提供程序,错误 40 - 无法打开与“SQL Server”的连接?

如何修复 Composer 错误:“无法扫描目录中的类”?