Kis*_*war 5 django django-admin django-management-command makemessages
首先,我期待--no-obsolete会注释掉msgid,msgstr如果gettext被删除,对吧?
我的测试方法是:
gettext("some string here")在视野中 写道makemessages命令 .po按预期编写了一个文件 gettext()从视图中删除了行并保存了文件,验证了runserver工作. makemessages --no-obsolete,它没有对.po文件进行任何更改. .po 文件内容提取.
#. Translators: This message is a test of wrap line
#: servers/views.py:31
msgid "Do let me know if it works."
msgstr ""
Run Code Online (Sandbox Code Playgroud)
开发环境
Django = 1.11
OS = Mac/Ubuntu 14.04
settings.py
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
LOCALE = (
os.path.join(os.path.dirname(__file__), "locale"),
)
Run Code Online (Sandbox Code Playgroud)
现在,在 Julien 和 Tarun 的帮助下,我发现了以下观察结果。
python manage.py makemessages -l <locale>
gettext如果正在处理的文件中没有,则上述命令不会write/update .po归档。这意味着如果相应的.po文件之前有msgstr和 的条目msgid,那么它不会删除这些条目,除非正在处理的文件至少有一个gettext.
注意:以上行为与
--no-obsolete
现在,为了使--no-obsolete工作按预期进行,我们需要执行以下步骤。
首先运行python manage.py makemessages -l <locale>,这将使用和写入.po文件。 msgidmsgstr
现在设置msgstr并运行python manage.py compilemessages -l <locale>。该命令将.mo文件写入与文件相同的目录中.po。
现在,下次当您makemessages再次运行时(不带 --no-obsolete),将比较文件并在文件中注释丢失/删除.po的文件。 .mogettext.po
makemessages --no-obsolete,注释条目将从文件中删除.po。 E.g
如果你有 3 个gettext条目,并且你makemessages第一次运行,它会在文件中写入 3msgid和 3 。现在,如果您删除所有条目,再次运行后文件将不会更新,但如果您在同一文件中保留至少 1 个条目并再次运行,它将删除所有已删除的条目。 msgstr.pogettext.pomakemessagesgettextmakemessagesmsgidmsgstrgettext
但是,如果您compilemessages在 后 运行makemessages,.mo则会创建文件,然后对后续makemessages命令.po和.mo文件进行比较,然后msgid在文件中对已删除的条目msgstr进行注释。.pogettext
最后,当您使用选项运行时,makemessages文件--no-obsolete中的注释消息.po将被永久删除。
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |