即使在编译消息后,翻译也无法在 Django 1.5 中工作
translation not working in Django 1.5 even after compiling message
我正在使用 Django 1.5
我必须在我的应用程序中启用国际化。为此,我在 settings.py 文件
中添加了一些内容
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
'...local context processrors...'
)
# global_settings.TEMPLATE_CONTEXT_PROCESSORS contains
# TEMPLATE_CONTEXT_PROCESSORS = (
# 'django.contrib.auth.context_processors.auth',
# 'django.core.context_processors.debug',
# 'django.core.context_processors.i18n',
# ...
# )
USE_I18N = True
USE_L10N = True
LANGUAGE_CODE = 'es'
# List of languages available for translation
ugettext = lambda s: s
LANGUAGES = (
('en', ugettext('English')),
('es', ugettext('Spanish'))
)
LOCALE_PATHS = (
os.path.join(PROJECT_ROOT, 'locale/'),
)
LOCALE_PATHS 的位置输出为
('/media/path_to_project/workbench/workbench/settings/../locale/',)
但是在 运行 ./manage.py makemessages -l es
它在
中生成 *.po 文件
/media/path_to_project/workbench/workbench
而不是
/media/path_to_project/workbench/workbench/locale
此外,模板中未显示编译后的语言。
您需要检查以下事项。
- 确保您已将
USE_L10N = True
和 USE_I18N = True
添加到 settings.py
文件中
- 检查
PROJECT_ROOT
和 LOCALE_PATHS
并确保它们是正确的
- 将
django.core.context_processors.i18n
添加到 setting.py
中的 TEMPLATE_CONTEXT_PROCESSORS
。
Translation and formatting are controlled by USE_I18N and USE_L10N settings respectively. However, both features involve internationalization and localization. The names of the settings are an unfortunate result of Django’s history.
我正在使用 Django 1.5
我必须在我的应用程序中启用国际化。为此,我在 settings.py 文件
中添加了一些内容MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
from django.conf import global_settings
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
'...local context processrors...'
)
# global_settings.TEMPLATE_CONTEXT_PROCESSORS contains
# TEMPLATE_CONTEXT_PROCESSORS = (
# 'django.contrib.auth.context_processors.auth',
# 'django.core.context_processors.debug',
# 'django.core.context_processors.i18n',
# ...
# )
USE_I18N = True
USE_L10N = True
LANGUAGE_CODE = 'es'
# List of languages available for translation
ugettext = lambda s: s
LANGUAGES = (
('en', ugettext('English')),
('es', ugettext('Spanish'))
)
LOCALE_PATHS = (
os.path.join(PROJECT_ROOT, 'locale/'),
)
LOCALE_PATHS 的位置输出为
('/media/path_to_project/workbench/workbench/settings/../locale/',)
但是在 运行 ./manage.py makemessages -l es
它在
/media/path_to_project/workbench/workbench
而不是
/media/path_to_project/workbench/workbench/locale
此外,模板中未显示编译后的语言。
您需要检查以下事项。
- 确保您已将
USE_L10N = True
和USE_I18N = True
添加到settings.py
文件中 - 检查
PROJECT_ROOT
和LOCALE_PATHS
并确保它们是正确的 - 将
django.core.context_processors.i18n
添加到setting.py
中的TEMPLATE_CONTEXT_PROCESSORS
。
Translation and formatting are controlled by USE_I18N and USE_L10N settings respectively. However, both features involve internationalization and localization. The names of the settings are an unfortunate result of Django’s history.