【问题标题】:Make messages i18n for specific directories or exclude directories为特定目录制作消息 i18n 或排除目录
【发布时间】:2012-06-17 16:32:57
【问题描述】:

我的网站结构如下所示:

project
--apps
----app1
----app2
--docs
--templates
----module1
----module2
----module3

如何运行

django-admin.py makemessages --locale=en

在所有应用程序和模板目录上但忽略模块 1 和模块 3?

【问题讨论】:

  • 为什么你的模板文件夹中有 python(?) 模块?
  • 它们是外部 django 模块/应用程序的模板...
  • 这远不能回答您的问题,但您始终可以运行 makemessages 并只翻译您感兴趣的短语,而不必理会其他短语。这是一个拖累,特别是对于大型项目,但您可以在开始翻译之前对要排除的模块的路径进行简单搜索并删除它们:)
  • 不幸的是,对于这种“手动”工作流程来说,项目太大了

标签: python django terminal internationalization


【解决方案1】:

我编写了一个简短的脚本来遍历我的项目目录中的文件夹,并在该文件夹包含语言环境文件夹时创建翻译。如果需要,可以轻松修改以排除应用程序/目录的脚本

我的项目文件夹结构是

Project
--App1
----locale
--App2
----locale
--ProjectRoot - settings.py file is in ProjectRoot folder
----locale
etc

此脚本 (run_makemessages.py) 位于 Project 文件夹中

import os
project_root = "/path/to/your/Project"
dirs = os.listdir(project_root)
for app in dirs:
    app_path = os.path.join(project_root, app)
    locale_path = os.path.join(app_path, "locale")
    if(os.path.exists(locale_path)): #modify this condition for exclusion of specific folders
        os.chdir(app_path)
        os.system("django-admin.py makemessages -a --no-wrap")

并使用python run_makemessages.py 调用 - 即直接调用并且不使用 django-admin 或 manage.py

【讨论】:

    【解决方案2】:

    我认为你不能,除非你编写自己的命令,这可能会花费你更多的时间,然后通过访问所需应用的文件夹并从那里运行 ../manage.py makemessages -l XX 来单独执行它们

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2018-03-01
      • 2016-08-15
      • 2019-10-13
      • 2022-01-04
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2011-01-29
      相关资源
      最近更新 更多