Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django翻译在基本html文件上不起作用?_Python_Django_Django Templates_Translation - Fatal编程技术网

Python Django翻译在基本html文件上不起作用?

Python Django翻译在基本html文件上不起作用?,python,django,django-templates,translation,Python,Django,Django Templates,Translation,我不知道我错过了什么。我正在与django翻译公司合作。除了软件包文件夹以外的所有应用程序,即包含settings.py的应用程序,traslation都能完美工作 我的文件结构如下: my-project/ manage.py locale/ mysite/ __init__.py settings.py lacale/ templates/ base.html ur

我不知道我错过了什么。我正在与django翻译公司合作。除了软件包文件夹以外的所有应用程序,即包含settings.py的应用程序,traslation都能完美工作

我的文件结构如下:

my-project/
    manage.py
    locale/
    mysite/
        __init__.py
        settings.py
        lacale/
        templates/
            base.html
        urls.py
    profile/
        __init__.py
        locale/
        templates/
            profile/
                profile.html
        views.py
        urls.py
  
以下是设置文件:

MIDDLEWARE = [
    ....
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ....
]

LANGUAGE_CODE = 'es'

USE_I18N = True

USE_L10N = True

USE_TZ = True

LANGUAGES = (
    ('en-us', _('English')),
    ('es', _('Spanish')),
)

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)
My base.html看起来像此翻译不起作用:

此外,我已经正确地创建了django.po文件,并添加了我的翻译和编译消息,以创建django.mo

编辑 用于base.html的django.po:

# 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-09-21 12:25+0545\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"
#: profile/templates/profile/profile.html:9
msgid "Check"
msgstr "Spanish check"
djanog.po用于配置文件:

# 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-09-21 21:44+0545\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"
#: mysite/settings.py:146
msgid "English"
msgstr ""

#: mysite/settings.py:147
msgid "Spanish"
msgstr ""

#: mysite/templates/base.html:26
msgid "Base"
msgstr "Spanish language for base"

您可以在settings.py中将LOCALE_path变量定义为os.path.joinBASE_DIR,“LOCALE”表示我的项目/LOCALE/*并且在apps目录中没有任何其他语言环境文件夹

因此,我的建议是将所有.po文件合并到my_projects/locale/目录下的一个文件中。确保路径看起来像my_project/locale/es/LC_MESSAGES/django.po

django.po ... :mysite/settings.py:146 msgid英语 msgstr :mysite/settings.py:147 msgid西班牙语 msgstr :profile/templates/profile/profile.html:9 msgid检查 西班牙支票 :mysite/templates/base.html:26 msgid基 msgstr基础西班牙语 您可以在settings.py中将LOCALE_path变量定义为os.path.joinBASE_DIR,“LOCALE”表示我的项目/LOCALE/*并且在apps目录中没有任何其他语言环境文件夹

因此,我的建议是将所有.po文件合并到my_projects/locale/目录下的一个文件中。确保路径看起来像my_project/locale/es/LC_MESSAGES/django.po

django.po ... :mysite/settings.py:146 msgid英语 msgstr :mysite/settings.py:147 msgid西班牙语 msgstr :profile/templates/profile/profile.html:9 msgid检查 西班牙支票 :mysite/templates/base.html:26 msgid基 msgstr基础西班牙语 我想您需要将/mysite/locale文件夹添加到locale\u路径

使现代化 关键在于区分项目包和应用程序包,以及每个包中需要哪些默认文件夹和文件

在您的例子中,很明显mysite文件夹是Django应用程序/项目的项目包,它根据Django实例的设置集合保存,包括数据库配置、Django特定选项和特定于应用程序的设置,而不是一个可以通过apps.py文件识别的应用程序。也就是说,Django希望有一个像profile这样的应用,一堆默认文件夹,比如static、templates、templatetags、migrations。。和区域设置,但对于任何其他非默认位置,您需要在mysite/settings.py中明确提及它们:

对于项目级或独立于应用程序的文件夹,您需要执行以下操作:

保存base.html的全局模板/mysite/templates 全局静态/mysite/static我想你已经有一个持有全局资产js,css img。。 和用于全局区域设置文件夹 我想您需要将/mysite/locale文件夹添加到locale\u路径

使现代化 关键在于区分项目包和应用程序包,以及每个包中需要哪些默认文件夹和文件

在您的例子中,很明显mysite文件夹是Django应用程序/项目的项目包,它根据Django实例的设置集合保存,包括数据库配置、Django特定选项和特定于应用程序的设置,而不是一个可以通过apps.py文件识别的应用程序。也就是说,Django希望有一个像profile这样的应用,一堆默认文件夹,比如static、templates、templatetags、migrations。。和区域设置,但对于任何其他非默认位置,您需要在mysite/settings.py中明确提及它们:

对于项目级或独立于应用程序的文件夹,您需要执行以下操作:

保存base.html的全局模板/mysite/templates 全局静态/mysite/static我想你已经有一个持有全局资产js,css img。。 和用于全局区域设置文件夹
为什么你把{%load i18n%}放了两次?谢谢你指出。。。这是在缩短问题时犯的错误。。。事实上,这只是1.给我们看看你的django.pofile@stilManiac完成!为什么你把{%load i18n%}放了两次?谢谢你指出。。。这是在缩短问题时犯的错误。。。事实上,这只是1.给我们看看你的django.pofile@stilManiac完成!谢谢它起作用了。。但是,你能再解释一下吗。因为,我只是没有得到主包的本地路径公式。好的。。。现在它有意义了。非常感谢。谢谢!!!它起作用了。。但是,你能再解释一下吗。因为,我只是没有得到主包的本地路径公式。好的。。。现在它有意义了。非常感谢。您在settings.py中将LOCALE_PATHS变量定义为os.path.joinBASE_DIR,“LOCALE”表示我的项目/LOCALE/*并且在应用程序目录中没有任何其他语言环境文件夹。如果profile.html也不应正确转换。。。因为,我对个人资料的翻译是在个人资料应用程序中,而不是在根目录中?我认为将所有的翻译合并到一个地区将是如此
非常混乱???您在settings.py中将LOCALE_PATHS变量定义为os.path.joinBASE_DIR,“LOCALE”表示我的项目/LOCALE/*并且在apps目录中没有任何其他语言环境文件夹。如果profile.html也不应该正确转换。。。因为,我对个人资料的翻译是在个人资料应用程序中,而不是在根目录中?我认为将所有的翻译合并到一个区域将是如此混乱???
# 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-09-21 12:25+0545\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"
#: profile/templates/profile/profile.html:9
msgid "Check"
msgstr "Spanish check"
# 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-09-21 21:44+0545\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"
#: mysite/settings.py:146
msgid "English"
msgstr ""

#: mysite/settings.py:147
msgid "Spanish"
msgstr ""

#: mysite/templates/base.html:26
msgid "Base"
msgstr "Spanish language for base"

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
    os.path.join(BASE_DIR, 'mysite', 'locale'),
)
TEMPLATES = [
    {
        ..
        'DIRS': [os.path.join(BASE_DIR, 'mysite', 'templates')],
        'APP_DIRS': True,
        ..
    },
]
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'mysite', 'static')]
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),  # underneath project root folder 
    os.path.join(BASE_DIR, 'mysite', 'locale'),  # underneath project package 
)