本地化:django-admin编译消息跳过venv

时间:2019-01-17 04:31:35

标签: python django python-2.7 django-admin django-1.11

我正在function logout() { Cookies.remove("loginToken") window.location.href = "/login" // this redirects me to the login page but I need to call // `FB.logout()` too which only exists on the Login page. } 应用程序中使用本地化。使用function Start-NewPlinkProcess( [string]$pfile = 'plink.exe', [string]$arguments = 'somehost -l somelogin -pw somepasswd ping -c 12 someOtherHost > /home/homeie/mePingTestResults.txt' ){ $p = New-Object System.Diagnostics.Process; $p.StartInfo.UseShellExecute = $false; $p.StartInfo.RedirectStandardOutput = $true; $p.StartInfo.RedirectStandardInput = $true; $p.StartInfo.FileName = $pfile; $p.StartInfo.Arguments = $arguments $pident = ($p.Start()).Id Write-Host("pid: $($pident)"); $p.StandardInput.WriteLine("Y") # Pass a Y to stdin ignore that... #$p.WaitForExit(); #$p.StandardOutput.ReadToEnd(); return $p } 选项将消息添加到消息文件中时,我可以排除虚拟环境文件夹和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 文件。因此,完成翻译需要更长的时间。

我没有找到任何参数参数来跳过documentationdjango-admin compilemessages 命令的特定路径。

是否可以选择跳过django.po的{​​{1}}或特定路径?

4 个答案:

答案 0 :(得分:3)

正如其他人已经指出的那样,可悲的是只有骇客可以解决这个问题。

我发现最透明的方法是调试到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.

这当然非常笨拙,但易于理解和扩展。希望compilemessages最终会获得一个--ignore选项。

答案 1 :(得分:2)

Django 3.0添加了--ignore选项

django-admin compilemessages --ignore=cache --ignore=outdated/*/locale

文档:https://docs.djangoproject.com/en/3.1/ref/django-admin/#cmdoption-compilemessages-ignore

答案 2 :(得分:2)

使用忽略选项

python manage.py compilemessages -i "venv*"

此命令对我有用。确保venv应该用双引号(“”)而不是单引号(“)

答案 3 :(得分:1)

我想让VENV知道的最好的事情是:

cd to project
python ../manage.py makemessages  (jumping one directory up)
python ../manage.py compilemessages

来自同事的这个小技巧避免了编译venv .po

在这方面应使用-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]

github

        parser.add_argument(
            '--exclude', '-x', action='append', default=[],
            help='Locales to exclude. Default is none. Can be used multiple times.',
        )

不幸的是,这是针对区域设置的,但这是我到目前为止发现的唯一内容

these internal communications的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