如何让python的argparse生成非英文文本? [英] How to make python's argparse generate Non-English text?

查看:19
本文介绍了如何让python的argparse生成非英文文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

argparse 模块自动生成帮助和使用消息".我可以为参数提供非英语名称并提供非英语帮助文本;但是帮助输出随后变成了至少两种语言的混合,因为诸如 usagepositional argumentsoptional argumentsshow 之类的术语这个帮助信息和退出是自动生成的英文.

The argparse module "automatically generates help and usage messages". I can give Non-English names to the arguments and provide Non-English help texts; but the help output then becomes a mixture of at least two languages, because terms like usage, positional arguments, optional arguments and show this help message and exit are automatically generated in English.

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

How can I replace this English output with translations?

最好,我想在脚本中提供翻译,以便脚本在任何地方开始生成相同的输出.

Preferably, I would like to provide the translations within the script, so that the script generates the same output wherever it is started.

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

Based on the answer by Jon-Eric, here an example with his solution:

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 提供以下帮助输出:

saved as Beispiel.py gives with python3 Beispiel.py -h the following help output:

Verwendung: Beispiel.py [-h] Eingabe

positional arguments:
  Eingabe

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

推荐答案

一种方式,来自 这篇文章 by Peter Otten:

One way, from this post by Peter Otten:

我对 gettext 了解不多,但以下内容表明大多数argparse 中的字符串已正确包装:

I don't know much about gettext, but the following suggests that most strings in argparse are properly wrapped:

$ cat localize_argparse.py

import gettext

def my_gettext(s):
    return s.upper()
gettext.gettext = my_gettext

import argparse

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-V", action="version")
    args = parser.parse_args()

$ python localize_argparse.py -h USAGE: localize_argparse.py [-h] [-V]

OPTIONAL ARGUMENTS:   -h, --help  SHOW THIS HELP MESSAGE AND EXIT   -V
show program's version number and exit

-V"选项的解决方法是添加帮助消息明确

The workaround for the "-V" option would be to add the help message explicitly

parser.add_argument("-V", ..., help=_("show..."))

您仍然需要自己提供所有翻译.

You still have to provide all translations yourself.

这篇关于如何让python的argparse生成非英文文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆