Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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 i18n不工作_Python_Django_Internationalization - Fatal编程技术网

Python Django i18n不工作

Python Django i18n不工作,python,django,internationalization,Python,Django,Internationalization,我无法为我的模板显示翻译。以下是我所做的: 在我的模板文件(index.html)中,我加载了i18n,并在需要翻译的地方使用了trans标记 在我的项目目录中,我rand/manage.py makemessages-l es 我的django.po文件位于/conf/locale/es/LC_MESSAGES/django.po 我用翻译编辑了这个文件 然后我运行了/manage.py compilemessages 我在settings.py中将我的语言\u code设置为“es” 在Se

我无法为我的模板显示翻译。以下是我所做的:

  • 在我的模板文件(index.html)中,我加载了i18n,并在需要翻译的地方使用了
    trans
    标记
  • 在我的项目目录中,我rand
    /manage.py makemessages-l es
  • 我的django.po文件位于
    /conf/locale/es/LC_MESSAGES/django.po
  • 我用翻译编辑了这个文件
  • 然后我运行了
    /manage.py compilemessages
  • 我在settings.py中将我的
    语言\u code
    设置为“es”
  • 在SessionMiddleware和CommonMiddleware之间的
    中间件类中添加了
    django.middleware.locale.LocaleMiddleware
  • 重新启动Django,刷新我的页面
    只有英文版本还在展出。我做错了什么?我错过什么了吗

    Django的
    localemidware
    尝试根据给定的请求确定区域设置,并相应地替换
    语言\u代码。它将经历以下步骤:

  • 检查会话中名为
    django\u language
    的会话变量。在此会话中将语言设置为给定的区域设置。如果不存在,则转到2
  • 检查cookies中是否有类似的变量集(您可以自己定义名称)。它不存在,它转到3
  • 尝试从
    HTTP\u ACCEPT\u language
    标头确定语言。如果不可能,它将转到4
  • 最后,它将使用
    语言\u code
    设置作为给定的区域设置
  • 在除第4步之外的所有步骤中,它将检查您的
    语言设置中是否给出了语言,该设置是一个由两个元组组成的元组,表示语言代码和语言标题。确保设置/覆盖默认值,因为默认值是所有可用Django语言的元组

    如果您的Django站点中有多种语言:

    确保会话或cookie设置正确。您可以使用Django的内部视图来设置语言(
    Django.views.i18n.set\u language

    如果您只有一种语言:


    如果你只懂西班牙语,你通常不必为此烦恼。只需确保设置了
    LANGUAGES
    LANGUAGE\u code
    。如果
    语言中未提供页面语言,它将不会尝试将页面语言设置为浏览器语言。此外,您应该确保
    使用_I18N=True
    。不过这应该是默认设置,所以至少要确保没有在某个地方将其设置为
    False

    好的,我发现了问题。。。我的po文件位于
    /conf/locale
    中,而不是仅位于
    /locale


    我之所以创建
    /conf/locale
    ,是因为当我rand
    django-admin.py makemessages
    时,它指示我这样做。但是,如果它在您的本地项目目录中,那么它只是
    /locale

    您是否尝试过在设置文件中设置
    locale\u路径
    ?这为我解决了问题……有关更多信息,请查看django's。

    是的。我一直在关注这一切。。。我似乎还是无法把它翻译出来。这快把我逼疯了。我肯定我遗漏了一些不在清单上的东西或者一些模糊的东西。也许睡一觉后我会得到它。。。