Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python/gettext中在运行时更改语言?_Python_Gettext - Fatal编程技术网

如何在python/gettext中在运行时更改语言?

如何在python/gettext中在运行时更改语言?,python,gettext,Python,Gettext,这是我第一次在Python中使用gettext(通常是gettext)。我了解很多事情,我的测试应用程序运行良好:一个命令行参数改变了输出消息的语言 现在我想让用户在启动时更改语言 我知道我可以加载许多翻译,并在运行时安装其中一个,但是许多字符串已经用旧语言翻译,不会再次更改 有简单的解决办法吗 import gettext language = "it" t_en = gettext.translation("messages", localedir="locale", languages=

这是我第一次在Python中使用gettext(通常是gettext)。我了解很多事情,我的测试应用程序运行良好:一个命令行参数改变了输出消息的语言

现在我想让用户在启动时更改语言

我知道我可以加载许多翻译,并在运行时安装其中一个,但是许多字符串已经用旧语言翻译,不会再次更改

有简单的解决办法吗

import gettext

language = "it"
t_en = gettext.translation("messages", localedir="locale", languages=["en"], fallback=True)
t_it = gettext.translation("messages", localedir="locale", languages=["it"], fallback=True)


def language_install():
    if language == "it":
        t_it.install()
    else:
        t_en.install()

language_install()
main_menu = [_("First item"), _("Second item"), _("Switch language"), _("Exit")]

while True:
    print("MAIN MENU")
    print("---------")
    for (n, item) in enumerate(main_menu):
        print("{:d}: ".format(n + 1) + item)
    print("")
    ans = input(_("Select an item") + ": ")
    if ans == "4":
        break
    elif ans == "3":
        if language == "en":
            language = "it"
        else:
            language = "en"
        language_install()
    else:
        print(_("You have selected item") + " " + ans)