ars*_*sho 8 python django django-admin python-2.7 django-1.11
我在Django 1.11应用程序中使用本地化。我可以node_modules使用以下-i选项在邮件文件中添加邮件时排除虚拟环境文件夹和文件夹:
django-admin makemessages -l 'no' -i venv
django-admin makemessages -d djangojs --locale no -i venv -i node_modules
Run Code Online (Sandbox Code Playgroud)
添加翻译后,我使用以下命令来编译消息:
django-admin compilemessages
Run Code Online (Sandbox Code Playgroud)
它处理django.po位于虚拟环境文件夹中的所有已安装软件包的文件。因此,需要更长的时间才能完成翻译。
我compilemessages在文档中没有找到任何参数参数来跳过命令中的特定路径。
是否可以选择跳过venv或特定路径compilemessages?
我发现VENV的最佳秘诀是:
cd to project
python ../manage.py makemessages (jumping one directory up)
python ../manage.py compilemessages
Run Code Online (Sandbox Code Playgroud)
(来自同事的这个小技巧可避免编译venv .po)
(方法2)
在此之前,我正在尝试使用--exclude标志的更复杂的方法
usage: django-admin compilemessages [-h] [--version] [-v {0,1,2,3}]
[--settings SETTINGS]
[--pythonpath PYTHONPATH] [--traceback]
[--no-color] [--locale LOCALE]
[--exclude EXCLUDE] [--use-fuzzy]
Run Code Online (Sandbox Code Playgroud)
parser.add_argument(
'--exclude', '-x', action='append', default=[],
help='Locales to exclude. Default is none. Can be used multiple times.',
)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是针对语言环境的,但这是我到目前为止发现的唯一内容
从这些有关Django开发的内部交流中,我可以看到ignore标志已经从makemessages复制到了compilemessages,以用于将来的版本。
对于我自己的用法,我用过(不包括es和en)
django-admin compilemessages --exclude=sw --exclude=sl --exclude=sk --exclude=km --exclude=sv --exclude=ko --exclude=sq --exclude=sr --exclude=kk --exclude=ka --exclude=es_MX --exclude=fa --exclude=fy --exclude=fr --exclude=en_AU --exclude=ne --exclude=nb --exclude=nn --exclude=nl --exclude=id --exclude=az --exclude=io --exclude=ar --exclude=ia --exclude=kn --exclude=it --exclude=is --exclude=vi --exclude=af --exclude=my --exclude=mr --exclude=uk --exclude=pl --exclude=ur --exclude=mk --exclude=mn --exclude=ml --exclude=he --exclude=hi --exclude=hu --exclude=hr --exclude=en_GB --exclude=pa --exclude=cs --exclude=fi --exclude=cy --exclude=sr_Latn --exclude=os --exclude=pt --exclude=ja --exclude=bs --exclude=br --exclude=bn --exclude=ast --exclude=bg --exclude=hsb --exclude=dsb --exclude=ro --exclude=es_CO --exclude=ru --exclude=et --exclude=eu --exclude=zh_Hant --exclude=zh_Hans --exclude=be --exclude=eo --exclude=el --exclude=da --exclude=de --exclude=pt_BR --exclude=ta --exclude=ca --exclude=te --exclude=es_AR --exclude=th --exclude=lt --exclude=lv --exclude=tr --exclude=tt --exclude=es_VE --exclude=lb --exclude=gl --exclude=ga --exclude=gd --exclude=udm--exclude=sw --exclude=sl --exclude=sk --exclude=km --exclude=sv --exclude=ko --exclude=sq --exclude=sr --exclude=kk --exclude=ka --exclude=es_MX --exclude=fa --exclude=fy --exclude=fr --exclude=en_AU --exclude=ne --exclude=nb --exclude=nn --exclude=nl --exclude=id --exclude=az --exclude=io --exclude=ar --exclude=ia --exclude=kn --exclude=it --exclude=is --exclude=vi --exclude=af --exclude=my --exclude=mr --exclude=uk --exclude=pl --exclude=ur --exclude=mk --exclude=mn --exclude=ml --exclude=he --exclude=hi --exclude=hu --exclude=hr --exclude=en_GB --exclude=pa --exclude=cs --exclude=fi --exclude=cy --exclude=sr_Latn --exclude=os --exclude=pt --exclude=ja --exclude=bs --exclude=br --exclude=bn --exclude=ast --exclude=bg --exclude=hsb --exclude=dsb --exclude=ro --exclude=es_CO --exclude=ru --exclude=et --exclude=eu --exclude=zh_Hant --exclude=zh_Hans --exclude=be --exclude=eo --exclude=el --exclude=da --exclude=de --exclude=pt_BR --exclude=ta --exclude=ca --exclude=te --exclude=es_AR --exclude=th --exclude=lt --exclude=lv --exclude=tr --exclude=tt --exclude=es_VE --exclude=lb --exclude=gl --exclude=ga --exclude=gd --exclude=udm --exclude=zh_CN --exclude=ky --exclude=zh_TW --exclude=no --exclude=pt_PT --exclude=hy
Run Code Online (Sandbox Code Playgroud)
正如其他人已经说过的那样,可悲的是,在 Django 2.x 中只有 hacks 来处理这个问题。(Django 3.0 终于添加--ignore到compilemessages.)
我发现最透明的方法是调试compilemessages并查看subprocess它发出的调用。您可以从中导出对该msgfmt工具的直接调用。
对于我们相对简单的项目,makemessages收集*.po的文件locale/$LANGUAGE/LC_MESSAGES/django.po。然后msgfmt将生成的*.mo放在同一个文件夹中。所以我们只是写了一个脚本来执行这样的步骤:
set -e
django-admin makemessages --all --ignore venv
# HACK: Run msgfmt manually instead from "django-admin compilemessages"
# because the latter also searches venv.
msgfmt -o locale/de/LC_MESSAGES/django.mo locale/de/LC_MESSAGES/django.po
msgfmt -o locale/en/LC_MESSAGES/django.mo locale/en/LC_MESSAGES/django.po
msgfmt -o locale/hu/LC_MESSAGES/django.mo locale/hu/LC_MESSAGES/django.po
# ...add other languages as needed.
Run Code Online (Sandbox Code Playgroud)
这当然非常笨拙,但很容易理解和扩展。
Django 3.0 添加了 --ignore 选项
django-admin compilemessages --ignore=cache --ignore=outdated/*/locale
Run Code Online (Sandbox Code Playgroud)
文档:https : //docs.djangoproject.com/en/3.1/ref/django-admin/#cmdoption-compilemessages-ignore
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |