【问题标题】:Django i18n not recognizing language filesDjango i18n 无法识别语言文件
【发布时间】:2012-07-18 18:09:52
【问题描述】:

在 Django 1.4 上,我想在我的网站中使用两种语言,土耳其语('tr')和英语('en')。

这是我目前的设置:

settings.py:

USE_I18N = True
LANGUAGES = (
    ('en', 'English'),
    ('tr', 'Turkish'),
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',    
    'django.middleware.locale.LocaleMiddleware', # I have locale middleware
    'django.middleware.common.CommonMiddleware',    
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

LOCALE_PATHS = (
    '/myproject/locale/', 
)

我的语言环境文件是这样的目录顺序:

#tr files
/myproject/locale/tr/LC_MESSAGES/django.mo
/myproject/locale/tr/LC_MESSAGES/django.po
#en files
/myproject/locale/en/LC_MESSAGES/django.mo
/myproject/locale/en/LC_MESSAGES/django.po

我仍然看不到我的翻译,从我的 shell 中尝试(它也不适用于模板作为 {% trans "Corporate" %}):

>>> from django.utils import translation
>>> translation.activate('tr')
>>> translation.ugettext('Corporate')
u'Corporate'

我在这里遗漏了什么吗?奇怪的是,它翻译成“家”之类的词,因为原始 Django 有这些翻译,但没有我的翻译文件。

【问题讨论】:

  • 试试不开始斜线,..还是/home/username/myproject ..?

标签: django internationalization translation


【解决方案1】:

在您的情况下,您必须将您的语言环境目录的绝对路径放入LOCALE_PATHS,即

LOCALE_PATHS = (
    '/home/path_to_your_project/myproject/locale/', 
)

我猜你已经尝试在那里设置相对路径。

我遇到了类似的问题:我一直在使用 django 1.3,并且我的语言环境目录在我的项目的根目录中,即在 settings.py 和 manage.py 文件附近。 但是当我使用 django 1.4 创建项目时,项目目录结构已更改:settings.py 已移至 myproject/myproject 文件夹。我仍然在 myproject/ 中创建 locale 文件夹(不在 myproject/myproject 中)。使用 django 1.4 它不再工作了。

阅读documentation 我明白,django 就是找不到我的locale 文件夹。所以对我有帮助的解决方案 - 要么将 locale dir 移动到 myproject/myproject 中,并且不设置任何 LOCALE_PATHS 要么将 locale dir 留在 myproject/ 路径中,并在 LOCALE_PATHS 元组中的 settings.py 中添加完整路径.

【讨论】:

  • 感谢这对我有帮助。使用 Django 1.4 时遇到类似问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多