【问题标题】:How to provide data for .po translation files?如何为 .po 翻译文件提供数据?
【发布时间】:2012-06-07 02:12:18
【问题描述】:

在 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 的普通用户遇到此错误消息吗?

非常感谢,

【问题讨论】:

    标签: django internationalization gettext po


    【解决方案1】:

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

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

    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 会记住该设置。

    【讨论】:

    • 非常感谢您解决了这个问题。那时我最终使用编辑器并为每个文件手动执行此操作。感谢您提供更简单的方法。 +1
    • 请注意,-i .bak 之间不能有空格,否则会损坏。
    • 您的命令中有一个陷阱:如果您的当前目录中有任何 *.po 文件,*.po 将被您的 shell 扩展。如果是这样,该命令很可能会失败。您想在 '*.po' 周围添加引号,以防止您的 shell 进行任何替换。我冒昧地编辑了您的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2018-12-13
    • 1970-01-01
    相关资源
    最近更新 更多