如何在不打补丁的情况下本地化 Python 的 argparse 模块?
How to localize Python's argparse module, without patching it?
当消息的某些部分使用用户语言而其他部分使用英语时,本地化的命令行应用程序看起来很奇怪。
我不知道我从源代码安装 Python 3 时是否搞砸了,似乎没有 *.mo
个文件,所以 argparse
(在整个中)不支持本地化。
API 似乎也没有提供本地化方法。还是我错过了?
我可以修补 argparse.py
,但我不会,因为我希望它是可移植的,而且我不同意建议用户修补他们的 Python 安装。
问题 简而言之:如何在不修补 Python 标准库的情况下本地化 argpase
?
相关问题:这可能吗?
默认情况下 argparse
使用 gettext
模块翻译消息,因此您可以根据需要轻松翻译它们。
要生成 *.pot
文件(您可以在翻译后将其转换为 *.mo
文件),您可以使用内置 [=12] 中可用的 pygettext
程序=] 模块在 python.
用法:
python pygettext.py argparse.py
这将生成一个 messages.pot
,您可以翻译它,之后只需生成 .mo
(有很多方法可以做到这一点,只需 google)。
有关 pygettext
的更多信息,请参阅有关主题的 Python 手册:Internationalizing your programs and modules。
当消息的某些部分使用用户语言而其他部分使用英语时,本地化的命令行应用程序看起来很奇怪。
我不知道我从源代码安装 Python 3 时是否搞砸了,似乎没有 *.mo
个文件,所以 argparse
(在整个中)不支持本地化。
API 似乎也没有提供本地化方法。还是我错过了?
我可以修补 argparse.py
,但我不会,因为我希望它是可移植的,而且我不同意建议用户修补他们的 Python 安装。
问题 简而言之:如何在不修补 Python 标准库的情况下本地化 argpase
?
相关问题:这可能吗?
默认情况下 argparse
使用 gettext
模块翻译消息,因此您可以根据需要轻松翻译它们。
要生成 *.pot
文件(您可以在翻译后将其转换为 *.mo
文件),您可以使用内置 [=12] 中可用的 pygettext
程序=] 模块在 python.
用法:
python pygettext.py argparse.py
这将生成一个 messages.pot
,您可以翻译它,之后只需生成 .mo
(有很多方法可以做到这一点,只需 google)。
有关 pygettext
的更多信息,请参阅有关主题的 Python 手册:Internationalizing your programs and modules。