django {%trans"你好" %} 不管用

时间:2014-09-08 10:16:32

标签: python django

我知道,这件事被问了好几万亿次,但我仍然无法翻译我的django模板。

我在项目树中创建了locale文件夹。

我在settings.py中添加了

LOCALE_PATHS = (
  os.path.join(PROJECT_PATH,'locale'),
)

settings.py默认语言为英语:

LANGUAGE_CODE = 'en-us'

我添加了更多语言,如:

LANGUAGES = ( 
  ('de', _('German')),
  ('fr', _('French')),
  ('es', _('Spanish')),
  ('pt', _('Portuguese'))
)

并添加到TEMPLATE_CONTEXT_PROCESSORS

'django.core.context_processors.i18n',

并进入MIDDLEWARE_CLASSES

'django.middleware.locale.LocaleMiddleware',

现在:我将此添加到我的index.html

{% load i18n %}
{% trans "it is me" as me %}
<title>Newsportal {{ me }}</title>

并做了:

python manage.py makemessages -a

并将"it is me"翻译成"das bin ich"(它是德语)并完成了

python manage.py compilemessages

它创建了.mo文件。一切看起来都很棒

我将Chrome浏览器的语言改为德语。

但是:它仍然会将文字显示为"it is me"

我做错了什么?

解决方案:首先,感谢Liarez在这可怕的时间里站在我旁边,我终于找到了我的错误。

我在做:

PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
LOCALE_PATHS = (
   os.path.join(PROJECT_PATH, 'locale'),
)

在项目树中更深入了一步,其中有settings.py。

我将此更改为

LOCALE_PATHS = (
   os.path.realpath('locale'),
) 

它在童话故事中起作用。

1 个答案:

答案 0 :(得分:1)

这是一种管理语言和通过URL更改活动语言的简便方法:

urls.py中的

添加:

url(r'^set_language/(?P<language_code>[\w-]+)/?', 'YOUR_PROJECT.views.set_language', name='set_language'),

在views.py中:

def set_language(request, language_code):
    ''' Change language '''

    translation.activate(language_code)
    return HttpResponseRedirect('/')

在任何模板中:

您应该在模板的任何位置询问(仅用于测试):{{LANGUAGE_CODE}}以了解实际语言并检查翻译是否正常工作