为什么django不考虑我的语言文件?

时间:2012-07-25 09:27:46

标签: django internationalization translation gettext

我遵循了有关文本翻译的整个文档,但django没有考虑我的.mo文件。

一些事实:

  • 我在项目的根目录下创建了一个conf/locale/文件夹
  • 使用django.po 成功生成了
  • django-admin.py makemessages -l fr 使用django.mo
  • 成功生成了
  • django-admin.py compilemessages

所以我的文件夹结构是:

project/
  site/
  locale/
    fr/
      LC_MESSAGES/
        django.mo
        django.po
  • settings.py中,我设置了LANGUAGE_CODE = 'fr'
  • 我的浏览器正确发送了Accept-Language:fr-FR,fr;
  • request.LANGUAGE_CODE在我的观看次数中显示fr

但是我没有得到任何翻译......如何让django考虑这些文件?


修改

/home/www/project/locale添加到settings.LOCALE_PATHS有效。但是,Django应该自己找到这条路径,我不喜欢使用绝对路径。这里发生了什么?

1 个答案:

答案 0 :(得分:13)

<强> LOCALE_PATHS

Django默认在3个位置查找翻译文件:

  • LOCALE_PATHS/(language)/LC_MESSAGES/django.(po|mo)
  • $APPPATH/locale/(language)/LC_MESSAGES/django.(po|mo)
  • $PYTHONPATH/django/conf/locale/(language)/LC_MESSAGES/django.(po|mo)

只有在您的翻译文件不在您的应用目录或PYTHON_PATH中时才需要使用LOCALE_PATHS。

settings.py中的LOCALE_PATHS示例

LOCALE_PATHS = (
    '/home/www/project/conf/locale', # replace with correct path here
)

<强> MIDDLEWARE_CLASSES

在settings.py

中将django.middleware.locale.LocaleMiddleware添加到MIDDLEWARE_CLASSES

语言

LANGUAGES = (
    ('fr', 'Français'),
)