Python Django翻译问题:makemessages命令未检测到新的{%blocktrans%}标记

Python Django翻译问题:makemessages命令未检测到新的{%blocktrans%}标记,python,django,internationalization,translation,makemessages,Python,Django,Internationalization,Translation,Makemessages,我最近接管了一个django项目,其中包含一个locale文件夹。从那时起,我在html文件中添加了许多新的{%blocktrans%}标记。但是,当我使用命令时: python manage.py makemessages -l vi 要检测新标记,我会得到一个错误: Traceback (most recent call last): File "manage.py", line 22, in <module> execute_from_command_line(s

我最近接管了一个django项目,其中包含一个locale文件夹。从那时起,我在html文件中添加了许多新的{%blocktrans%}标记。但是,当我使用命令时:

python manage.py makemessages -l vi
要检测新标记,我会得到一个错误:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 361, in handle
    potfiles = self.build_potfiles()
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 393, in build_potfiles
    self.process_files(file_list)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 488, in process_files
    self.process_locale_dir(locale_dir, files)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 580, in process_locale_dir
    write_pot_file(potfile, msgs)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 191, in write_pot_file
    with io.open(potfile, 'a', encoding='utf-8') as fp:
FileNotFoundError: [Errno 2] No such file or directory: 'locale/django.pot'
(myvenv) Brigadier90s-MacBook-Pro:royalexc Brigadier90$ python manage.py makemessages -l vi
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/base.py", line 294, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/base.py", line 345, in execute
    output = self.handle(*args, **options)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 361, in handle
    potfiles = self.build_potfiles()
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 393, in build_potfiles
    self.process_files(file_list)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 488, in process_files
    self.process_locale_dir(locale_dir, files)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 580, in process_locale_dir
    write_pot_file(potfile, msgs)
  File "/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/commands/makemessages.py", line 191, in write_pot_file
    with io.open(potfile, 'a', encoding='utf-8') as fp:
FileNotFoundError: [Errno 2] No such file or directory: 'locale/django.pot'
回溯(最近一次呼叫最后一次):
文件“manage.py”,第22行,在
从命令行(sys.argv)执行命令
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/_init__.py”,第367行,从命令行执行
utility.execute()
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/__________.py”,第359行,执行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/base.py”,第294行,运行中来自
self.execute(*args,**cmd_选项)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/base.py”,第345行,在execute中
输出=self.handle(*args,**选项)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第361行,在handle中
potfiles=self.build\u potfiles()
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第393行,在build\u文件中
self.process\u文件(文件列表)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第488行,进程中文件
self.process\u locale\u dir(locale\u dir,文件)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第580行,进程中
写入pot文件(potfile,msgs)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第191行,在write_pot_文件中
将io.open(potfile'a',encoding='utf-8')作为fp:
FileNotFoundError:[Errno 2]没有这样的文件或目录:“locale/django.pot”
(myvenv)准将90S MacBook Pro:RoyaleExc准将90$python manage.py makemessages-l vi
回溯(最近一次呼叫最后一次):
文件“manage.py”,第22行,在
从命令行(sys.argv)执行命令
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/_init__.py”,第367行,从命令行执行
utility.execute()
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/__________.py”,第359行,执行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site-packages/django/core/management/base.py”,第294行,运行中来自
self.execute(*args,**cmd_选项)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/base.py”,第345行,在execute中
输出=self.handle(*args,**选项)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第361行,在handle中
potfiles=self.build\u potfiles()
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第393行,在build\u文件中
self.process\u文件(文件列表)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第488行,进程中文件
self.process\u locale\u dir(locale\u dir,文件)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第580行,进程中
写入pot文件(potfile,msgs)
文件“/Users/Brigadier90/Projects/RoyalExc/myvenv/lib/python3.6/site packages/django/core/management/commands/makemessages.py”,第191行,在write_pot_文件中
将io.open(potfile'a',encoding='utf-8')作为fp:
FileNotFoundError:[Errno 2]没有这样的文件或目录:“locale/django.pot”
顺便说一句,当我修改django.po文件并运行compilemessages时,一切正常。我似乎无法检测到新的字符串。你知道是什么导致了这个问题吗

非常感谢您。

NVM各位

我的settings.py文件中有一个错误:

以前的项目业主有以下几点:

LOCALE_PATHS = (
    os.path.join(BASE_DIR +'/omefx/', 'locale'),
    'locale',
)
我改为:

LOCALE_PATHS = (
        os.path.join(BASE_DIR +'/omefx/', 'locale'),
    )

它现在可以工作了

您不能读取错误消息吗?“FileNotFoundError:[Errno 2]没有这样的文件或目录:'locale/django.pot'”不相关,但混合了
os.path.join()
和硬编码文件分隔符(
BASE\u DIR+'/omefx/'
)有点违背了使用
os.path.join()的全部目的。这应该是
os.path.join(BASE_DIR,'omefx','locale')
(或者是一个普通的
BASE_DIR+'/omefx/locale'
和no
os.path.join,如果你不关心可移植性的话)。