gpt4 book ai didi

python - 如何让python的argparse生成非英文文本?

转载 作者:太空狗 更新时间:2023-10-29 20:51:53 24 4
gpt4 key购买 nike

argparse 模块“自动生成帮助和使用信息”。我可以给参数起非英文名称并提供非英文帮助文本;但是帮助输出会变成至少两种语言的混合,因为像 usagepositional argumentsoptional argumentsshow 这样的术语此帮助消息和退出 是自动生成的英文版本。

如何用翻译替换这个英文输出?

最好,我想在脚本中提供翻译,以便脚本无论在何处启动都会生成相同的输出。

编辑:根据 Jon-Eric 的回答,这里是他的解决方案示例:

import gettext

def Übersetzung(Text):
Text = Text.replace("usage", "Verwendung")
Text = Text.replace("show this help message and exit",
"zeige diese Hilfe an und tue nichts weiteres")
Text = Text.replace("error:", "Fehler:")
Text = Text.replace("the following arguments are required:",
"Die folgenden Argumente müssen angegeben werden:")
return Text
gettext.gettext = Übersetzung

import argparse

Parser = argparse.ArgumentParser()
Parser.add_argument("Eingabe")
Argumente = Parser.parse_args()

print(Argumente.Eingabe)

另存为 Beispiel.py 使用 python3 Beispiel.py -h 提供以下帮助输出:

Verwendung: Beispiel.py [-h] Eingabe

positional arguments:
Eingabe

optional arguments:
-h, --help zeige diese Hilfe an und tue nichts weiteres

最佳答案

argparse 使用 gettext API inspired by GNU gettext .您可以使用此 API 以相对干净的方式集成您对 argparse 的翻译。

为此,在 argparse 输出任何文本之前调用以下代码(但可能在 import argparse 之后):

import gettext

# Use values that suit your project instead of 'argparse' and 'path/to/locale'
gettext.bindtextdomain('argparse', 'path/to/locale')
gettext.textdomain('argparse')

为了使此解决方案起作用,您对 argparse 的翻译必须位于 path/to/locale/ll/LC_MESSAGES/argparse.mo 其中 ll是当前语言的代码(例如de;可以通过设置环境变量LANGUAGE等方式配置)。

如何生成.mo文件?

  1. pygettext --default-domain=argparse/usr/local/lib/python3.5/argparse.py
    • 使用argparse.py的实际位置
    • 创建文件 argparse.pot
  2. cp argparse.pot argparse-ll.po
    • 使用实际的语言代码代替 ll
  3. argparse-ll.po中填写缺失的翻译字符串
  4. msgfmt argparse-ll.po -o locale/ll/LC_MESSAGES/argparse.mo

参见 gettext documentation有关创建 .mo 文件的详细信息。

我已在 README.md 中更详细地发布了这些说明我的Czech translation of argparse .

关于python - 如何让python的argparse生成非英文文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22951442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com