我正在尝试使用国际化并安装GNU gettext工具来生成消息。
在我的settings / base.py中,我在指令TEMPLATES中使用了i18n上下文处理器:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS':[os.path.join(BASE_DIR, "templates")],
'APP_DIRS': True,
'OPTIONS' : {
'context_processors':[
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
],
},
},
]
我还在设置/ base.py中使用LocaleMiddleware
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.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
我还在我的settings / base.py中指定了我想要使用的语言:
from django.utils.translation import ugettext_lazy as _
LANGUAGES = (
('en', _('English')),
('ca', _('Catalan')),
('es-co', _('Spanish')),
)
我的预定LANGUAGE_CODE
是LANGUAGE_CODE = 'en-us'
,我指定了locale文件夹(也在settings / base.py中):
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
对于我的应用的行为,我实现了这个url i18n_patterns函数:
from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns
urlpatterns += i18n_patterns(
url(r'^$', home, name='home'),
url(r'^admin/', include(admin.site.urls)),
)
有了这个,我的本地服务器主页中的应用程序重定向到/ en或/ ca
在我的模板的一面,我正在使用这两个模板标签测试某些标签html的翻译,例如
:trans用于翻译单行段落
的块转移
当我使用gettext库(我在我的机器中构建并安装)时,在生成我的消息的那一刻,我收到此输出错误:
(tb_test)➜ my_project git:(master) ✗ python manage.py makemessages -l ca
CommandError: errors happened while running xgettext on __init__.py
language
Python' unknown
(tb_test)➜ my_project git:(master) ✗
输出显示 init .py上存在问题... 名为 init .py的大多数文件我将它们清空.. 我应该把重点放在哪些文件上,这个消息是“Python'未知
我是蟒蛇新手,道歉。 最诚挚的问候,谢谢
Postdata:我有兴趣了解Django应用程序的国际化,我确实想要关注这个伟大教程的示例 http://www.marinamele.com/taskbuster-django-tutorial/internationalization-localization-languages-time-zones
此页面描述了我在帖子中描述的步骤。 感谢