我知道,这件事被问了好几万亿次,但我仍然无法翻译我的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'),
)
它在童话故事中起作用。
答案 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}}
以了解实际语言并检查翻译是否正常工作