好吧,我一直在疯狂地寻找这个我认为简单的问题。
我使用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和重新访问该页面并更改了它正确翻译的语言。无论如何,谢谢您的建议!
在Django 1.4中,不再支持项目根目录下的语言环境目录。您应该将其添加到LOCALE_PATHS设置,默认情况下为空。Django设置。
LOCALE_PATHS
但是,涉及区域设置生成的管理命令似乎有效,所以我不知道您是否已经这样做。