6

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

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

class Company(models.Model):

    ....

    class Meta:
        verbose_name = _('Company Profile')
        verbose_name_plural = _('Company Profiles')

使用开发服务器,模型的名称在管理员中以不同的语言正确显示,而在生产服务器上则不然!这会影响某些模型,而其他模型则不会……这让我非常抓狂,因为我几乎不知道如何调试它……

4

3 回答 3

7

几种可能性:

  • 生产服务器看不到已编译的消息
  • 未翻译的消息被标记为fuzzy
  • _() 解析为ugettext而不是ugettext_lazy
于 2010-11-05T00:39:19.037 回答
3

我遇到了类似的问题,除了 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
于 2011-01-09T18:14:56.180 回答
0

如果您在 Windows 上开发并且生产实例是 Linux,那么问题可能是:就文件路径的命名而言,Windows 不区分大小写,而 Linux 区分大小写。

例如,区域设置文件夹名称应为:

  • zh_Hans代替zh_hans
  • pt_BR代替pt_br
于 2021-12-08T16:51:51.390 回答