如何为.po翻译文件提供数据?

时间:2012-06-01 20:35:04

标签: django internationalization gettext po

在Django中运行django-admin.py makemessages -l de以创建翻译文件后,您可以使用纯文本编辑器或Poedit来填充它们。

Poedit的优势在于它提供了用于输入此数据的专用UI。但是,当我在单词之间切换时,我不断收到错误消息:

  

MyBookmarks / locale / de / LC_MESSAGES / django.po:7:标题字段   `Project-Id-Version'仍然具有初始默认值

这是什么?有没有Django国际化知识或po / GNU gettext的一般用户的人都会遇到此错误消息?

非常感谢,

1 个答案:

答案 0 :(得分:2)

我猜Django会保留用户可自定义的.po文件的标题,因此您可以用“MY FABULOUS APP v.1.0”等更具描述性的内容替换“PACKAGE VERSION”。

要在给定路径中的任何相关文件上执行此操作,您可以在命令行和* nix环境中使用此命令(或在任何地方 sed 查找可用)

find <YOUR_PATH_HERE> -type f -name '*.po' -exec sed -e s'/PACKAGE VERSION/<YOUR_APP_NAME> <YOUR_APP_VERSION>/g' -i.bak {} \;

该命令将替换每个.po文件中的上述文本,并且还将保存每个文件的未修改的备份文件。

因此,在您的情况下,命令将是:

find MyBookmarks/ -type f -name '*.po' -exec sed -e s'/PACKAGE VERSION/MyBookmarks v.1.0/g' -i.bak {} \;

我经常在我的fabfile中包含这个命令,它使用POedit 1.5.x解决了这个问题(但也应该在以前的版本中使用)。

注意:每个.po文件只需执行一次。下次你将启动 ./ manage.py makemessages Django将记住该设置。