为啥 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Symfony 5.1 不能识别“routes.php”文件中配置的路由?