为啥 weblate 不能识别我的 pot 文件?

Posted

技术标签:

【中文标题】为啥 weblate 不能识别我的 pot 文件?【英文标题】:Why doesn't weblate recognize my pot file?为什么 weblate 不能识别我的 pot 文件? 【发布时间】:2020-11-25 09:24:38 【问题描述】:

我正在使用托管的 weblate。

我在组件配置的“文件”部分。 以下是我的设置。


翻译文件

文件格式:gettext PO 文件 文件掩码:src/translations/*.po 语言过滤器:^[^.]+$

单语翻译

所有字段为空 已选中编辑基础文件

添加新语言

新翻译的模板:src/translations/template.pot 添加新翻译:创建新语言文件 语言代码风格:默认基于文件格式

我无法验证这些设置,在“新翻译模板”和“添加新翻译”字段下方出现错误: 错误是“无法识别新翻译的基本文件”。

我 100% 确定分支 weblate 上存在的 pot 文件已配置为使用,并且也在 master 上,并且路径正确。

这里是pot文件的前几行:

"Content-Type: text/plain; charset=UTF-8\n"

#: src/screens/CardList/CardList.texts.js:9
msgctxt "CardList"
msgid "hello"
msgstr ""

#: src/screens/CardList/CardList.texts.js:11
msgctxt "CardList"
msgid "cards"
msgstr ""

我不明白发生了什么,我做错了吗?

【问题讨论】:

【参考方案1】:

文件的标题似乎被剥离了。至少您应该在前面加上以下内容以使其在语法上有效:

msgid ""
msgstr ""

查看https://github.com/WeblateOrg/weblate/blob/master/weblate/locale/django.pot 了解现实生活中的 POT 文件

【讨论】:

这是我的错,我编写了一个脚本来删除这些,因为我坚持认为这是一个错误。你知道为什么它需要在顶部有这些空定义吗? 空的 msgid 包含标头,其中包含有关翻译的元数据。你可以删除它,但你必须完全包括所有值,你保留了 msgstr 值的最后一部分。

以上是关于为啥 weblate 不能识别我的 pot 文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Python 不能识别我的 utf-8 编码源文件?

为啥 Symfony 5.1 不能识别“routes.php”文件中配置的路由?

如何在 weblate 翻译文件中添加复数形式?

为啥我的 gcc 编译器不能识别 bzip2 函数,但允许我包含它们所属的库?

为啥 Swift 3 不能识别我的按钮点击?

在 Weblate 中手动删除项目