Django i18n无法识别语言文件



在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

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

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

我是不是遗漏了什么?奇怪的是,它翻译成像"家"这样的单词,因为Django有这些单词的翻译,但没有我的翻译文件。

在您的情况下,您必须将区域设置目录的绝对路径放入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则不再起作用。

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

最新更新