我正在尝试为我的项目激活不同的语言,目前包括英语和西班牙语。
我将描述我所遵循的所有步骤:
首先,我要定位到我想要翻译的目录。或者更准确地说,{% trans %} 标签所在的位置:
最后一个命令创建了目录/文件/locale/en/LC_MESSAGES/django.po。
我打开django.po,然后开始填写所有英语语言的msgstr字段。msgid标签是用西班牙语编写的。我遵循长消息的大小写提示。在填写完这个文件之后,我执行了以下操作:
这个过程处理 django.po 并创建 django.mo。
所以我修改了 settings.py。重要的行:
最后,我在URLS.py中添加了这行代码:
我重新启动了我的开发服务器,将Firefox浏览器配置为首选英语作为主要语言,但它并没有起作用。所有的文字仍然显示为西班牙语而不是英语。
我确保Firefox已经配置成英语,因为在Django视图函数(渲染.html文件)中,我使用request.LANGUAGE_CODE打印,它会输出“en”。
我做错了什么?
我将描述我所遵循的所有步骤:
首先,我要定位到我想要翻译的目录。或者更准确地说,{% trans %} 标签所在的位置:
$ 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=en
,对吗?这样创建的 django.po 文件中的 msgid 字段将是西班牙语,我必须完成英语的 msgstr 字段。 - Rubén Jiménez