pythongettext模块_python gettext:在()中指定区域设置

我正在寻找一种在请求gettext中的字符串的翻译时动态设置语言的方法。我来解释原因:

我有一个多线程机器人,它在多个服务器上通过文本响应用户,因此需要用不同的语言进行响应。

gettext的documentation声明,要在运行时更改区域设置,应执行以下操作:import gettext # first, import gettext

lang1 = gettext.translation('myapplication', languages=['en']) # Load every translations

lang2 = gettext.translation('myapplication', languages=['fr'])

lang3 = gettext.translation('myapplication', languages=['de'])

# start by using language1

lang1.install()

# ... time goes by, user selects language 2

lang2.install()

# ... more time goes by, user selects language 3

lang3.install()

但是,这不适用于我的情况,因为bot是多线程的:

假设以下两个代码段同时运行:

^{pr2}$

以及import time

import gettext

lang = gettext.translation('myapplication', languages=['en'])

time.sleep(3) # Not requested on the same time

lang.install()

message(_("Loading a dummy task")) # This should be in english, and it will

time.sleep(10)

message(_("Finished loading")) # This should be in english too, and it will

您可以看到消息有时在错误的区域设置中被翻译。

但是,如果我能做一些类似_("string", lang="FR")的事情,问题就会消失!在

我是否遗漏了什么,或者我使用了错误的模块来完成任务。。。

我用的是Python3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值