2015-04-07 6 views
1

Код языка моего веб-приложения по умолчанию - корейский.Django: перевод шаблона не работает

Я бы хотел перевести его на английский, если Accept-language является en-us.

Я предпочитаю использовать шаблон перевода, а не код питона или i18n_urlpatterns.

Вот мой код.


Джанго версия

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


Редактировать сообщение файл/var/www/mysite.com/locale/en/LC_MESSAGES/django.po

#: .../index.html:14 
    msgid "Hello" 
    msgstr "안녕" 

Compile файл сообщений на оболочке

$ django-admin.py compilemessages

Check file at /var/www/mysite.com/locale/en/LC_MESSAGES/django.mo


тест Перезапуск сервера

$ manage.py runserver


Проверка через браузер

Accept-language : en-US,en;q=0.8,ko;q=0.6

Expectation : 안녕 

    Result : Hello 

Что нужно сделать, чтобы показать английский шаблон, если заголовок Accept-language браузера браузера - en-us?

+0

Я изменил язык в настройках браузера Chrome и проверил «Accept-language» на панели заголовков django_debug_toolbar. –

ответ

1

Извините, это была моя ошибка. Как глупо я ..

ABS_PATH('locale') вернулся /var/www/mysite.com/mysite/locale

Изменение ABS_PATH('locale') в /var/www/mysite.com/locale решаемой задачи

Я надеюсь, что эти шаги могут быть полезны для других.

+0

Спасибо, это была моя проблема. Я не понял, что LOCALE_PATHS должен быть установлен в settings.py для перевода на работу (сервер dev не печатает никаких предупреждений о недостающем пути!) – Escher

Смежные вопросы