django makemessages ничего не делает

#python #django #makemessages

#python #django #makemessages

Вопрос:

Когда я запускаю django-admin makemessages -l en , ничего не происходит, и po файлы не создаются. Он только говорит processing locale en

Это моя структура папок

 /myproject
    myapp/
    locale/
    media/
    static/
    templates/
    db.sqlite
    manage.py
    settings.py
    urls.py
    wsgi.py
  

settings.py

 import os

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django_user_agents.middleware.UserAgentMiddleware',
]

ROOT_URLCONF = 'urls'

WSGI_APPLICATION = 'wsgi.application'

LANGUAGE_CODE = 'fr'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

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

  

Ответ №1:

Я понял, что makemessages это не создает po файлы, если на переводы нет ссылок ни в одном из шаблонов

Я ожидал makemessages создать пустой po файл, который я могу продолжить редактировать, но это не работает таким образом. По крайней мере, один из шаблонов должен иметь переводы для файла, который будет создан в первый раз.

 {% load i18n %}
....
{% trans 'Welcome' %}
  
 python manage.py makemessages -l en
  
 # SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSIONn"
"Report-Msgid-Bugs-To: n"
"POT-Creation-Date: 2020-11-08 18:58 0100n"
"PO-Revision-Date: YEAR-MO-DA HO:MI ZONEn"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>n"
"Language-Team: LANGUAGE <LL@li.org>n"
"Language: n"
"MIME-Version: 1.0n"
"Content-Type: text/plain; charset=UTF-8n"
"Content-Transfer-Encoding: 8bitn"
"Plural-Forms: nplurals=2; plural=(n != 1);n"

#: .templatesindex.html:4
msgid "Welcome"
msgstr ""
  

Я надеюсь, что это будет полезно всем, кто сталкивается с такой же проблемой

Ответ №2:

Вероятно, вам следует добавить свое приложение как ‘myapp.apps.MyappConfig’ вместо просто ‘myapp’ в вашем settings.py INSTALLED_APPS, а также включите ваше приложение в LOCALE_PATHS

 LOCALE_PATHS = ( 
os.path.join(BASE_DIR, "locale"),
os.path.join(BASE_DIR, "yourapp/locale"), 
  

)