Преводите на Django не работят с Django-cms и djangocms-blog

Имам проблем с моите Django Translations. Моят Django не превежда етикетите ми.

Използвам django-cms и в django-cms имам плъгин djangocms-blog.

Django == 1.6.5

Django-cms == 3.0.3

Djangocms-блог == 0.2b5

Моите транстагове не са преведени.

Примерен етикет:

{% trans "read more" %}

Инсталирах всичко правилно, моят settings.py съдържа това:

gettext = lambda s: s

# Internationalization
LANGUAGE_CODE = 'nl'
TIME_ZONE = 'Europe/Brussels'
USE_I18N = True
USE_L10N = True
USE_TZ = True

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

LANGUAGES = (
    ('nl', _(u'Dutch')),
    ('fr', _(u'French')),
    ('en', _(u'English')),
)

CMS_LANGUAGES = {
    1: [
        {
            'code': 'nl',
            'name': gettext('Dutch'),
            'fallbacks': ['en', 'fr'],
            'public': True,
            'hide_untranslated': True,
            'redirect_on_fallback':False,
        },
        {
            'code': 'en',
            'name': gettext('English'),
            'fallbacks': ['nl'],
            'public': False,
            'hide_untranslated': True,
            'redirect_on_fallback':False,
        },
        {
            'code': 'fr',
            'name': gettext('French'),
            'public': False,
            'hide_untranslated': True,
        },
    ],
    2: [
        {
            'code': 'nl',
            'name': gettext('Dutch'),
            'public': True,
            'fallbacks': ['en'],
        },
    ],
    'default': {
        'fallbacks': ['en', 'fr'],
        'redirect_on_fallback': True,
        'public': False,
        'hide_untranslated': False,
    }
}

В My Middleware класове:

    MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.doc.XViewMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',

    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.language.LanguageCookieMiddleware',
)

Моите urls.py:

from django.conf.urls import include, url
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.conf import settings

admin.autodiscover()

urlpatterns = i18n_patterns(
    '',
    url(r'^i18n/', include('django.conf.urls.i18n')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^products/', include('catalog.urls')),
    url(r'^contact/', 'contact.views.contact'),
    url(r'^pages/', include('django.contrib.flatpages.urls')),
    url(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
    url(r'^', include('cms.urls')),
)

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = i18n_patterns('',
        url(r'^__debug__/', include(debug_toolbar.urls)),
        url(r'^404/$', 'django.views.defaults.page_not_found'), # TODO MOET NOG VERPLAATST WORDEN
        url(r'^500/$', 'django.views.defaults.server_error'), # TODO MOET NOG VERPLAATST WORDEN
        url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
            {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
        url(r'', include('django.contrib.staticfiles.urls')),
    ) + urlpatterns

В моята страница blog_items.html (страница от шаблона на плъгина djangocms-blog, който замествам)

{% load i18n thumbnail cms_tags %}
{% load url from future %}

Създадох моите езици във виртуалната среда от

  1. Отиване до виртуалната среда чрез "workon app"
  2. Изпълнявам командата django-admin.py makemessages -l nl (po файловете са създадени правилно)
  3. Пускам командата django-admin.py compilemessages и всичко изглежда наред
  4. В корена на моята програма е локалната папка с 3 подпапки: en, fr и nl. Те съдържат цялата папка LC_MESSAGES с файл django.mo и django.po с правилните низове на съобщения.

    #: .\templates\djangocms_blog\includes\blog_item.html:37 #, fuzzy msgid "read more" msgstr "lees meer"


person RVE    schedule 31.07.2014    source източник
comment
Активирахте ли i18n в django-cms? docs.django-cms.org/en/latest/advanced/i18n. html   -  person petkostas    schedule 31.07.2014
comment
Да, това са моите URL адреси: ` urlpatterns = i18n_patterns( url(r'^', include('cms.urls')), )`   -  person RVE    schedule 31.07.2014
comment
Средният софтуер (cms.middleware.language.LanguageCookieMiddleware) също ли е във вашите настройки?   -  person petkostas    schedule 31.07.2014
comment
Да: 'cms.middleware.language.LanguageCookieMiddleware',   -  person RVE    schedule 31.07.2014


Отговори (2)


Това е решено.

  1. Първо трябваше да се премахнат мъховете.

  2. Трябваше да добавя правилните настройки на parler в моите общи настройки:

В документацията на Django-parler (https://pypi.python.org/pypi/django-parler ) те предлагат следните настройки:

PARLER_LANGUAGES = {
    None: (
        {'code': 'nl',},
        {'code': 'en',},
        {'code': 'fr',},
    ),
}

Вместо

PARLER_LANGUAGES = {
    1: (
        {'code': 'nl',},
        {'code': 'en',},
        {'code': 'fr',},
    ),
}
person RVE    schedule 25.08.2014

AFAIK преводите, маркирани като fuzzy, не се компилират в mo файловете и трябва да ги „размитите“, преди да бъдат налични

person yakky    schedule 22.08.2014