这是我在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)