我试图为我的项目激活不同的语言。英语和西班牙语现在。Django i18n不起作用
我将介绍我按照所有的步骤:
首先,我把我自己我要翻译的目录。或者还好说,所有{%反%}标签:
$ cd media/templates/landing/
$ mkdir locale
$ django-admin.py makemessages --locale=en
最后命令创建目录/文件/locale/en/LC_MESSAGES/django.po
我打开django.po和我继续用英语完成所有的msgstr字段。 msgid标签是西班牙文。我尊重关于长信息案例的提示。填入此文件后,我制作:
$ django-admin.py compilemessages
此过程django.po并创建django.mo。
所以我修改settings.py。重要的几行:
TEMPLATE_CONTEXT_PROCESSORS = (
'ism.context_processor.user_vars',
'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.contrib.messages.context_processors.messages',
'django.core.context_processors.request',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'pipeline.middleware.MinifyHTMLMiddleware',
}
TIME_ZONE = 'Atlantic/Canary'
LANGUAGE_CODE = 'es'
USE_I18N = True
_ = lambda s: s
LANGUAGES = (
('es', _('Espanol')),
('en', _('English')),
)
USE_L10N = True
USE_TZ = True
最后,我此行添加到URLS.py:
(r'^i18n/', include('django.conf.urls.i18n')),
我重新启动我的开发服务器,配置我的Firefox浏览器,选择英语作为第一主要语言,它不工作。所有的文字仍然以西班牙文而不是英文显示。
我确定Firefox配置为英文,因为在Django查看功能(呈现.html)时,我使用request.LANGUAGE_CODE打印了“en”。
我在做什么错了?
你django-admin.py makemessages --locale = ES? – Efazati
用户如何在en和es之间切换? – Efazati
@Efazati我的项目的主要语言是ES,而不是EN。所以我明白我必须让'django-admin.py makemessages --locale = en',不是吗?这样,创建的django.po文件具有西班牙语的msgid字段,我必须用英语填写msgstr字段。 –