【问题标题】:Django makemessages for apps in site-packagesDjango 为站点包中的应用程序生成消息
【发布时间】:2010-11-04 11:44:12
【问题描述】:

如何使用 Django 的内置 makemessages 工具在我的项目文件夹之外收集翻译字符串?管理命令makemessages 非常方便,我想将它用于位于站点包中的应用程序。

【问题讨论】:

    标签: django localization gettext django-manage.py


    【解决方案1】:

    (1) 激活安装Django的虚拟环境。

    (2) 转到您希望为其生成消息的应用程序的目录:

    $ cd path/to/app/in/site/packages/
    

    (3) 确保它有“locale”目录。如果没有 - 制作一个。

    $ mkdir locale
    

    (4) 从您的应用目录运行以下命令:

    $ django-admin.py makemessages -l [LANGUAGE_CODE]
    

    荷兰语示例:

    $ django-admin.py makemessages -l nl
    

    俄语示例:

    $ django-admin.py makemessages -l ru
    

    【讨论】:

    • 我不确定这是 OP 的要求,这是否收集了项目的 outside 字符串?据我所知,这只会从项目或应用程序内的 html、txt 和 py 文件中收集字符串。
    • 是的,它确实从您运行它的包中收集字符串。这就是为什么我们有cd path/to/app/in/site/packages/
    【解决方案2】:

    除了 makemessages 我发现PyBabel 非常有用。这是对 Django 本身的绑定:http://babel.edgewall.org/wiki/BabelDjango

    【讨论】:

      【解决方案3】:

      使用符号链接(ln -s)但不是很方便。通常,如果应用程序位于 PYTHONPATH 上,makemessages 不应该捕获翻译文件夹吗?

      【讨论】:

      • 现在我确实使用符号链接,但这是一个丑陋的解决方法。它在 makemessages.py 中硬编码以在当前工作目录中查找文件,它会跳过 PYTHONPATH。
      • 使用符号链接时,记得将--symlinks 选项添加到makemessages
      猜你喜欢
      • 1970-01-01
      • 2012-07-09
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      相关资源
      最近更新 更多