简体   繁体   English

django makemessages 什么都不做

[英]django makemessages does nothing

When I run django-admin makemessages -l en nothing happens and no po files are created.当我运行django-admin makemessages -l en时,什么也没有发生,也没有创建po文件。 It only says processing locale en它只说processing locale en

This is my folder structure这是我的文件夹结构

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

settings.py设置.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')]

I realized that makemessages does not create po files if translations are not referenced in any of the templates我意识到如果在任何模板中都没有引用翻译, makemessages不会创建po文件

I was expecting makemessages to create an empty po file that can I continue editing, but it does not work that way.我期待makemessages创建一个空的po文件,我可以继续编辑,但它不能那样工作。 At least one of the templates must have translations for the file to be created at the first time.至少有一个模板必须具有第一次创建文件的翻译。

{% 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 VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-08 18:58+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: .\templates\index.html:4
msgid "Welcome"
msgstr ""

I hope this will be useful to anyone encountering the same issue我希望这对遇到相同问题的任何人都有用

You should probably add your app as 'myapp.apps.MyappConfig' instead of just 'myapp' in your settings.py INSTALLED_APPS and also include your app in LOCALE_PATHS您可能应该在 settings.py INSTALLED_APPS 中将您的应用程序添加为“myapp.apps.MyappConfig”而不仅仅是“myapp”,并将您的应用程序包含在 LOCALE_PATHS 中

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

) )

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM