5

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

这是我目前的设置:

设置.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 有这些翻译,但没有我的翻译文件。

4

1 回答 1

13

在您的情况下,您必须放入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文件夹。因此,对我有帮助的解决方案 - 要么将localedir 移动到 myproject/myproject 中并且不设置任何,要么将 dirLOCALE_PATHSlocale在 myproject/ 路径中,并在LOCALE_PATHS元组的 settings.py 中添加完整路径。

于 2012-07-23T09:35:27.447 回答