Python django{%trans";Hello";%}不工作
我知道,这个问题被问了上万亿次,但我仍然无法翻译我的django模板 我在项目树中创建了Python django{%trans";Hello";%}不工作,python,django,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')),
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'))
)
并添加到模板\u上下文\u处理器中
'django.core.context_processors.i18n',
并进入MIDDLEWARE\u类
'django.middleware.locale.LocaleMiddleware',
现在:我将此添加到我的index.html
{% load i18n %}
{% trans "it is me" as me %}
<title>Newsportal {{ me }}</title>
并将“这就是我”翻译成了“das bin ich”(德语)并完成了翻译
它创建了.mo文件。一切看起来都很棒
我把chrome浏览器的语言改为德语
但是:它仍然将文本显示为“是我”
我做错了什么
解决方案:首先,感谢利亚雷斯在这个可怕的时刻支持我,我终于发现了我的错误
我在做:
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'),
)
它的工作原理就像童话故事一样 这是一种管理语言和通过URL更改活动语言的简单方法: 在URL.py中添加:
url(r'^set_language/(?P<language_code>[\w-]+)/?', 'YOUR_PROJECT.views.set_language', name='set_language'),
在任何模板中:
您应该在模板的任何位置询问(仅用于测试):
{{{LANGUAGE\u code}
以了解哪种语言是实际语言,并检查翻译是否有效检查是否没有其他“是我”。尝试使用translation.activate(“de”)
@matousc更改该视图中的语言。您的意思是在.po文件中?您的实际语言是什么?“是我”是英语单词,你改变语言了吗?使用翻译。激活(“de”)
?您可以使用`{{language\u CODE}}检查模板中的语言,以便检查翻译是否正确working@Liarez哦,不,我没有。我在哪里做?在settings.py?中,您需要一个视图来检测语言更改,比如www.yourproject.com/de
,这应该调用一个视图来检测您要更改的语言,然后再进行更改。如果你需要的话,我可以给你展示一个简单的函数,谢谢,但我是这么做的。还是“是我”。我在视图中执行了翻译。激活('de')
当您在模板中添加{{LANGUAGE\u code}}
时,它是否显示de
或en
?模板内部语言\u code
正在给我de
。但是为什么字符串仍然是英文的呢?让我们谈谈,以避免每次都发表评论。我发现了这个问题:PROJECT\u PATH
比settings.py更深一步。所以它在settings.py所在的文件夹中查找locale
文件夹,这是错误的。我必须这样写:LOCALE\u PATHS=(os.path.realpath('LOCALE'),)
它就像童话故事一样工作
LOCALE_PATHS = (
os.path.realpath('locale'),
)
url(r'^set_language/(?P<language_code>[\w-]+)/?', 'YOUR_PROJECT.views.set_language', name='set_language'),
def set_language(request, language_code):
''' Change language '''
translation.activate(language_code)
return HttpResponseRedirect('/')