微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

django翻译模板{%trans“ something”%}

如何解决django翻译模板{%trans“ something”%}

在Django 1.4中,不再支持项目根目录下的语言环境目录。您应该将其添加LOCALE_PATHS设置,认情况下为空。Django设置

但是,涉及区域设置生成的管理命令似乎有效,所以我不知道您是否已经这样做。

解决方法

好吧,我一直在疯狂地寻找这个我认为简单的问题。

我使用Django 1.4

问题是django不会在我的模板中翻译一个简单的{%trans“ work”%}。

这是我所做的:

Settings.py:

LANGUAGE_CODE = 'en-us'
USE_I18N = True
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware','django.middleware.locale.LocaleMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware',# Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',)
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth","django.core.context_processors.debug","django.core.context_processors.i18n","django.core.context_processors.media","django.core.context_processors.static","django.core.context_processors.request",)

LOCALE_PATHS = (
    '/home/m00p/PycharmProjects/astrid/locale'
)

这是我的地图结构:

/
myproject/
apps/
locale/
template/

所以我跑了

django-admin.py makemessages -l nl -i settings.py

并且它确实在区域设置文件夹nl / LC_MESSAGES / django.po中成功创建,然后我编辑了在django.po中找到的翻译

#: templates/base.html:22
msgid "work"
msgstr "ddddddddddddd"

然后我运行compile命令

django-admin.py编译消息

并且还成功在正确的文件夹中创建了django.mo文件

我也在myproject / urls.py中添加了它

urlpatterns = patterns('',url(r'^i18n/',include('django.conf.urls.i18n')),)

urlpatterns += i18n_patterns('',url(r'^$','front.views.home',name='home'),)

我将其添加到base.html文件中,以便能够更改语言

<form action="/i18n/setlang/" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="/" />
    <select name="language">
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            <option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option>
        {% endfor %}
    </select>
    <input type="submit" value="Go" />
</form>

因此,当我转到网站时,URL中得到127.0.0.1:8000/en/,这是正确的,因为englisch是默认语言,当我将其更改为NL时,它重定向到127.0.0.1:8000
/ nl /,但我翻译的文字没有改变。我也确定该语言是NL,因为当我显示{{LANGUAGE_CODE}}时,它说的是NL。

有人知道为什么它不会改变吗?

谢谢m00p

问题解决了

在添加东西的过程中,我忘记了它的正常工作,我重新启动了部署服务器,但是我 没有清除浏览器的缓存,
因为它仍在使用旧页面,因此当我在Chrome和重新访问该页面并更改了它正确翻译的语言。无论如何,谢谢您的建议!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。