ri_gilfanov
@ri_gilfanov
Web- and desktop-developer

Почему не срабатывает перевод verbose_name для приложений пакета django-allauth, устанавливленного через pip?

Известная батарейка для авторизации через сторонние сервисы django-allauth установлена через pip в виртуальное окружение проекта.

Не срабатывает перевод именно verbose_name приложения, в то время как для verbose_name моделей такой проблемы не наблюдается:
b927ef2c85be4ff99be41ef18aa53c8c.png
Версии Python и Django:
  • v. Python: 3.5.2
  • v. Django: 1.10.4


В исходниках приложения всё выглядит корректно:
/ProjectEnv/lib/python3.5/site-packages/allauth/socialaccount/apps.py
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _

class SocialAccountConfig(AppConfig):
    name = 'allauth.socialaccount'
    verbose_name = _('Social Accounts')


/ProjectEnv/lib/python3.5/site-packages/allauth/socialaccount/__init__.py
from . import app_settings

default_app_config = 'allauth.socialaccount.apps.SocialAccountConfig'


/ProjectEnv/lib/python3.5/site-packages/allauth/locale/ru/LC_MESSAGES/django.po
#: socialaccount/apps.py:8
#, fuzzy
msgid "Social Accounts"
msgstr "Социальные аккаунты"


Для верности, выдержки из файла settings.py проекта, использующего django-allauth:
INSTALLED_APPS = [
    ...
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.vk',
    ...
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.i18n',
                ...
                'django.template.context_processors.request',
            ],
        },
    },
]

LANGUAGE_CODE = 'ru-ru'


В качестве костыля, можно забить на интернационализацию и явно переопределять verbose_name приложений практически в любом файле проекта:
from allauth import socialaccount

socialaccount.apps.SocialAccountConfig.verbose_name = 'Социальные аккаунты'


Возможно кто-нибудь сталкивался с избирательной работой утилиты ugettext_lazy в популярных сторонних приложениях и нашёл более адекватное решение?
  • Вопрос задан
  • 674 просмотра
Решения вопроса 1
ri_gilfanov
@ri_gilfanov Автор вопроса
Web- and desktop-developer
В файлах локализации с расширением .po, часть переведённых строк имеет пометку нечёткий перевод:
#, fuzzy
И игнорируется при компиляции файлов с расширением .mo

Если нечёткий перевод устраивает больше, чем английский оригинал -- русскую локализацию можно перекомпилировать и с использованием fuzzy-строк:
python3 manage.py compilemessages --use-fuzzy --locale=ru

или так:
python3 manage.py compilemessages -f -l ru

Результат:
3de85ce26c9744b9a0de75612755eeab.png

Благодарю sim3x за точную ссылку в документации.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы