Django gettext翻译在生产系统上不起作用

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')

在使用django的
gettext
翻译字符串(在管理中)时,我遇到了一个奇怪的问题:在本地运行开发服务器时,所有翻译都会在管理中正确显示,但当项目部署在生产服务器上时,一些字符串根本不会翻译。我无法确定任何系统背后哪个字符串受影响,哪个不受影响

给你一个印象,例如,模型的定义如下:

class Company(models.Model):

    ....

    class Meta:
        verbose_name = _('Company Profile')
        verbose_name_plural = _('Company Profiles')
使用dev server,模型名称将以不同的语言正确显示在admin中,而不是在生产服务器上!这会影响一些模型,其他模型则不会。。。这真让我抓狂,因为我几乎不知道如何调试它…

有几种可能性:

  • 生产服务器看不到已编译的消息
  • 未翻译的消息标记为
    fuzzy
  • _()解析为
    ugettext
    而不是
    ugettext\u lazy

我也有类似的问题,除了Tomasz Zielinski指出的问题外,我还必须做以下更改:

在settings.py中

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年前的这个答案仍然可以救我的命。