2011-12-01 84 views
0

我有以下模板:Django的国际化问题

{% load i18n %} 
    {% trans "Welcome to my site!" %} 

我用的RequestContext,呼吁makemessages,编辑.po文件和编译的消息,但一切都没有翻译,我只看到了同样的消息,即使我加载页面。从.po文件

msgid "Welcome to my site!" 

msgstr "blahblah" 
+0

也许你有多种语言定义 – szaman

+0

是的,我有两个,我已经为他们俩调用了makemessages。 – aemdy

回答

1

提取要获得翻译模板显示:

settings.py应具备以下条件:

USE_I18N = True 
USE_L10N = True # optional, but recommended 
LANGUAGE_CODE = 'en-us' # Or whatever language you want as default 

你应该有'django.core.context_processors.i18n'TEMPLATE_CONTEXT_PROCESSORS

你应该添加'django.middleware.locale.LocaleMiddleware'MIDDLEWARE_CLASSES(后'django.contrib.sessions.middleware.SessionMiddleware'

确保你的模板有{% load i18n %}顶部附近的某个地方。

一旦你翻译和编译了消息,要真正得到翻译显示,你需要告诉django你需要哪种语言。要做到这一点,请执行以下操作之一:

  1. 设置django_language在会话中键入所需的语言代码。
  2. 将一个名为django_language的cookie设置为所需的语言。

如果毕竟以上,你没有得到任何翻译显示 - 然后django无法找到你的消息文件。

+0

是的,问题是中间件类的顺序。 – aemdy