Django国际化(i18n)无法识别语言文件

5
在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,而不是我的翻译文件中的内容。

1
试试不要加上开头的斜杠、点或者是/home/用户名/我的项目..? - Jure C.
1个回答

13
在您的情况下,您必须将绝对路径放入LOCALE_PATHS以指向您的语言环境目录,例如:
LOCALE_PATHS = (
    '/home/path_to_your_project/myproject/locale/', 
)

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

我曾经遇到过类似的问题:我一直在使用django 1.3,我的locale目录位于项目的根目录中,即靠近settings.py和manage.py文件。 但是当我使用django 1.4创建项目时,项目目录结构已经改变:settings.py已经移动到myproject/myproject文件夹中。我仍然在myproject/(而不是myproject/myproject)中创建locale文件夹。但是在django 1.4中它不再起作用。

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


谢谢,这对我很有帮助。我在使用Django 1.4时也遇到了类似的问题。 - Javaaaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接