我的Web應用程序的默認語言代碼是韓語。Django:模板翻譯不起作用
我想在客戶的Accept-language
爲en-us
時將其翻譯成英文。
我更喜歡使用模板翻譯,而不是Python代碼或i18n_urlpatterns
。
這是我的代碼。
Django的版本
1.7.7
settings.py
...
def ABS_PATH(*args):
return os.path.join(PROJECT_DIR, *args)
LANGUAGE_CODE = 'ko'
ugettext = lambda s: s
LANGUAGES = (
('en', ugettext('English')),
('ko', ugettext('Korean')),
)
LOCALE_PATHS = (
ABS_PATH('locale'), # /var/www/mysite.com/locale
)
USE_I18N = True
USE_L10N = True
...
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
# `TEMPLATE_CONTEXT_PROCESSORS` have `django.core.context_processors.i18n` as default.
views.py
def home(request):
return render_to_response('index.html', locals(), context_instance=RequestContext(request))
索引。上殼HTML
{% load i18n %}
...
{% trans "Hello" %}
...
實現郵件文件
$ django-admin.py makemessages -l en
編輯消息文件上殼
$ django-admin.py compilemessages
Check file at /var/www/mysite.com/locale/en/LC_MESSAGES/django.mo
/var/www/mysite.com/locale/en/LC_MESSAGES/django.po
#: .../index.html:14
msgid "Hello"
msgstr "안녕"
編譯消息文件210
重啓測試服務器
$ manage.py runserver
檢查通過瀏覽器
Accept-language : en-US,en;q=0.8,ko;q=0.6
Expectation : 안녕
Result : Hello
當客戶端瀏覽器的Accept-language
標頭爲en-us
時,應該怎麼做才能顯示英文模板?
我在Chrome瀏覽器的設置中更改了語言,並通過django_debug_toolbar的標題面板選中了「接受語言」。 –