2015-09-12 9 views
1

я чувствую себя плохо для спрашивать это, как это было предложено так много раз:Джанго перевод не работает в моем случае

django - how to make translation work?

django internationalization and translations issue

How to setup up Django translation in the correct way?

http://askbot.org/en/question/8948/weve-edited-djangopo-files-but-translations-do-not-work-why/

Я хочу иметь английский (по умолчанию) и словенский языки. Мои настройки так:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
    'django.middleware.common.CommonMiddleware', 
) 
LANGUAGE_CODE = 'en-us' 
TIME_ZONE = 'Europe/Belgrade' 
USE_I18N = True 
USE_L10N = True 
USE_TZ = True 
from django.utils.translation import ugettext_lazy as _ 
LANGUAGES = (
    ('si', _('Slovenian')), 
    ('en-us', _('English')), 
) 
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'), 
) 

Urls.py:

urlpatterns = i18n_patterns('', 
    url(r'^', include('analytics.urls')), 
    url(r'^login', RedirectView.as_view(url='/admin/login', permanent=False)), 
    url(r'^admin/', include(admin.site.urls)), 
) 

Шаблоны:

<div class="time_range">{% trans "Time range:" %}</div> 

Я скомпилированные сообщения .po файл и теперь в соответствии с документацией можно было бы ожидать этого начать работать. Но мне не повезло. Если я посещаю url с/si/prefix, я все еще вижу английские строки.

+0

из 'urls.py' является неправильным (дополнительный' [ 'символ). Это просто опечатка или, возможно, этот файл вообще не импортируется? – zymud

+0

oh .. извините, это была только опечатка. – user568021

+0

У меня одна ошибка, потому что я использовал испанский язык с английским и nano (консольным текстовым редактором), после нескольких попыток я вижу какое-то странное поведение некоторых не- -ascii в файле .po, я исправил, что все это работает, не могли бы вы поместить свой файл django.po? или, возможно, перевести только одну строку в какой-то не-смысловой, например «это проверить i18n в django» (без символов без ascii) и посмотреть, работает ли он? – diegueus9

ответ

1

Я не уверен, если это имеет значение, но в моем интернационализированного приложении у меня есть это:

LANGUAGES = (
    ("nl", "Nederlands"), 
    ("en", "English"), 
    ) 

т.е. без _() вокруг строк. Ваш фрагмент кода не показывает, как вы определяете _, the documentation говорит, что вы должны его псевдонимом ugettext_lazy(). Может быть, это имеет значение.

Что также облегчит вам помощь, если вы предоставите исходный код для минимального приложения Django, которое демонстрирует вашу проблему (например, на github).

+0

. Я определяю _ с этим импортом: из django.utils.translation import ugettext_lazy as _ – user568021

+0

В этом случае это согласно документам. Я склонен подробно изучать вашу проблему, даже отлаживать ее вручную, но это очень помогло бы, если бы вы могли предоставить некоторое минимальное приложение Django, которое продемонстрирует вашу проблему. Это возможно? –

4

После создания .po файлов, есть еще два шага:

  1. Перевод сообщений в вашем .po файле
  2. Run ./manage.py compilemessages скомпилировать файл .po в файл .mo

цитирую код Django translation documentation, After you create your message file – and each time you make changes to it – you’ll need to compile it into a more efficient form, for use by gettext. Do this with the django-admin compilemessages utility.

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