python - 如何在不打补丁的情况下本地化 Python 的 argparse 模块?

标签 python localization argparse

当消息的某些部分使用用户语言而其他部分使用英语时,本地化的命令行应用程序看起来很奇怪。

我不知道我从源代码安装 Python 3 时是否搞砸了任何东西,似乎没有 *.mo 文件,所以 argparse(在whole) 没有本地化意识。

API 似乎也没有提供本地化方法。还是我错过了?

我可以修补 argparse.py,但我不会,因为我希望它是可移植的,而且我不同意建议用户修补他们的 Python 安装。

问题简而言之:如何在不修补 Python 标准库的情况下本地化 argpase

相关问题:这可能吗?

最佳答案

默认情况下,argparse 使用 gettext 模块来翻译消息,因此您可以根据需要轻松翻译它们。

要生成*.pot 文件(您可以在翻译后将其转换为*.mo 文件),您可以使用pygettext 程序这在 python 的内置 gettext 模块中可用。

用法:

python pygettext.py argparse.py

这将生成一个messages.pot,您可以翻译它,之后只需生成.mo(很多方法可以做到这一点,只需谷歌)。

有关 pygettext 的更多信息,请参阅有关该主题的 Python 手册:Internationalizing your programs and modules .

关于python - 如何在不打补丁的情况下本地化 Python 的 argparse 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28730641/

相关文章:

python - 带有 sizer 的 wxpython 布局

ios - 如何更改缩短的后退按钮标题?

c# - 无法从 Windows Phone 8.1 访问 .NET 4.5 PCL 中的本地化资源

python - Argparse:如何区分解析器和子解析器的参数

python - 优雅的结构化文本文件解析

python - 终止 python 程序的正确方法,无论调用位置如何,并进行清理

python - argparse - 每个操作不同的强制/可用参数

python - 为什么 Python 的 argparse 对 SystemExit 使用错误代码 2?

python - 仅当日期和时间不冲突时才保存新实体(播放)

javascript - 如何将字体系列导出为英文