Django gettext翻译在生产系统上不起作用
在使用django的Django gettext翻译在生产系统上不起作用,django,translation,gettext,production-environment,devserver,Django,Translation,Gettext,Production Environment,Devserver,在使用django的gettext翻译字符串(在管理中)时,我遇到了一个奇怪的问题:在本地运行开发服务器时,所有翻译都会在管理中正确显示,但当项目部署在生产服务器上时,一些字符串根本不会翻译。我无法确定任何系统背后哪个字符串受影响,哪个不受影响 给你一个印象,例如,模型的定义如下: class Company(models.Model): .... class Meta: verbose_name = _('Company Profile')
gettext
翻译字符串(在管理中)时,我遇到了一个奇怪的问题:在本地运行开发服务器时,所有翻译都会在管理中正确显示,但当项目部署在生产服务器上时,一些字符串根本不会翻译。我无法确定任何系统背后哪个字符串受影响,哪个不受影响
给你一个印象,例如,模型的定义如下:
class Company(models.Model):
....
class Meta:
verbose_name = _('Company Profile')
verbose_name_plural = _('Company Profiles')
使用dev server,模型名称将以不同的语言正确显示在admin中,而不是在生产服务器上!这会影响一些模型,其他模型则不会。。。这真让我抓狂,因为我几乎不知道如何调试它…有几种可能性:
- 生产服务器看不到已编译的消息
- 未翻译的消息标记为
fuzzy
- _()解析为
而不是ugettext
ugettext\u lazy
LOCALE_PATHS = (
"/path/to/your/project/locale",
)
记住尾部的斜杠,并确保目录结构如下所示:
project
your_app
your_other_app
locale
en_US
LC_MESSAGES
sv_SE
LC_MESSAGES
也许是
ugettext\u lazy
与ugettext
?它们没有被标记为模糊,但您可以说出服务器无法看到编译消息的一些原因(它们在应用程序目录中)。还没有读过使用ugettext
代替ugettext\u lazy
的问题是什么?没问题。现在解决了。我继承了一个使用ugettext
的模型,而孩子使用ugettext\u lazy
,所以我得到了这个奇怪的混合!谢谢我的意思是,例如,编译后的消息可能没有提交到服务器。没什么神奇的,只是这些琐碎的事情有时会发生。@ThomaszZielinski谢谢!在我的例子中,我使用了一个通用的python.gitignore
文件,它忽略了*.mo
文件!这样一个愚蠢的问题:PNice对各种可能性的回答。5年前的这个答案仍然可以救我的命。