Django i18n无法识别语言文件

时间:2012-07-18 18:09:52

标签: django internationalization translation

在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'

我在这里遗漏了什么?奇怪的是,它翻译了像'Home'这样的单词,因为原始Django有这些翻译而不是我的翻译文件。

1 个答案:

答案 0 :(得分:12)

在您的情况下,您必须将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并且不要在myproject / path中设置任何LOCALE_PATHS或保留locale dir,并在设置中添加完整路径。 py LOCALE_PATHS元组。