You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Django Rosetta中无法查看项目字符串的技术求助

解决Rosetta Project标签页看不到自定义gettext字符串的问题

看起来你已经搞定了Rosetta的基础配置,但Project标签页看不到自己代码里的翻译字符串,核心原因是还没生成项目自身的翻译目录文件,Rosetta需要读取这些.po文件才能识别待翻译内容。我来一步步帮你解决:

1. 确认你的App在INSTALLED_APPS中

Django的makemessages命令只会扫描INSTALLED_APPS里列出的App代码,所以先检查settings.py里的INSTALLED_APPS是否包含你写Hotel模型的那个App:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    # ...其他默认App
    'your_hotel_app',  # 替换成你的实际App名称
    'rosetta',  # 确保Rosetta也在列表中
]

2. 创建locale目录(如果还没的话)

你在LOCALE_PATHS里指定了BASE_DIR/locale,先确认这个目录存在,不存在的话手动创建:

mkdir locale

Windows用户可以直接在资源管理器中新建对应文件夹。

3. 提取代码中的翻译字符串

运行Django的makemessages命令,为你支持的每种语言生成翻译文件:

# 生成英文翻译文件
python manage.py makemessages -l en
# 生成德文翻译文件
python manage.py makemessages -l de
# 生成西班牙文翻译文件
python manage.py makemessages -l es

注意:Windows系统需要先安装gettext工具才能运行makemessages,可以通过Chocolatey或GNU官网下载安装。

执行完这些命令后,你会在locale目录下看到这样的结构:

locale/
├── de/
│   └── LC_MESSAGES/
│       └── django.po
├── en/
│   └── LC_MESSAGES/
│       └── django.po
└── es/
    └── LC_MESSAGES/
        └── django.po

这些.po文件里就包含了你models.py中用_()标记的所有待翻译字符串。

4. 编译翻译文件(可选但推荐)

虽然Rosetta可以自动处理,但运行compilemessages把.po编译成Django能识别的.mo二进制文件会更稳妥:

python manage.py compilemessages

5. 刷新Rosetta页面

现在回到Rosetta的Project标签页,你应该就能看到自己代码里的待翻译字符串了!

额外小提示:优化LANGUAGES配置

你当前settings.py里的gettext = lambda s: s可以换成Django的gettext_lazy,这样LANGUAGES里的语言名称也能被翻译:

from django.utils.translation import gettext_lazy as _

LANGUAGES = (
    ('en', _('English')),
    ('de', _('German')),
    ('es', _('Spanish')),
)

内容的提问来源于stack exchange,提问作者HuLu ViCa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:06:02