我知道,这个问题已经被问了无数遍,但是我仍然不能让我的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',
NOW: 我将这段代码添加到我的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'),
)
而它的运行方式像童话故事一样。
translation.activate("de")
吗?你可以在模板中使用{{LANGUAGE_CODE}}
来检查你的语言,这样你就可以检查翻译是否起作用了。 - AlvaroAVwww.yourproject.com/de
,这应该调用一个视图来检测你想要更改的语言,然后进行更改。如果需要,我可以向你展示一个简单的函数。 - AlvaroAVen-us
添加到你的语言中。 - cor