一种本地化的命令行应用程序,当消息的某些部分是用户语言而其他部分是英语时,看起来很奇怪。
我不知道是否安装Python 3从源代码时搞砸了什么,似乎没有*.mo文件,因此argparse(在整个过程中)并不支持本地化。
API似乎也没有提供本地化的方法。或者我错过了吗?
我可以打补丁argparse.py,但我不会这样做,因为我希望它是可移植的,我不同意建议用户修补他们的Python安装。
简洁问题:如何本地化argpase而不打补丁Python标准库?
相关问题:这可能吗?
默认情况下,argparse
使用 gettext
模块来翻译消息,因此如果你想轻松地进行翻译,则可以使用该模块。
要生成 *.pot
文件(翻译后可以转换为 *.mo
文件),可以使用内置的 python gettext
模块中提供的 pygettext
程序。
用法:
python pygettext.py argparse.py
messages.pot
文件,您可以对其进行翻译,然后只需生成.mo
文件(有许多方法可以做到这一点,只需Google即可)。pygettext
的更多信息,请参见Python手册中与此主题相关的部分:国际化您的程序和模块。
argparse.py
中错过了_(
,谢谢您的提醒。实际上,我可以生成一个POT文件,然后使用msgcat
将其连接到软件包的POT文件中,例如:msgcat --to-code=UTF-8 --output=all-messages.pot package-messages.pot argparse.pot
。我之前不知道pygettext
;我测试了一下,但是由于它输出所有ASCII字符以外的字符的转义序列,比如“”
(在Virtaal中无法阅读),所以我会继续使用xgettext
。 - Hibou57