如何在 Qt/PyQt/PySide 中找到当前的 QLocale?
Posted
技术标签:
【中文标题】如何在 Qt/PyQt/PySide 中找到当前的 QLocale?【英文标题】:How to find current QLocale in Qt/PyQt/PySide? 【发布时间】:2015-01-27 01:43:39 【问题描述】:如何找到当前活跃的QLocale
?我们可以使用QLocale.system()
找到默认系统区域设置,但我想要QLocale.current()
之类的东西,以检查我尝试进行的区域设置更改是否真的有效。
The documentation 有很多方法来设置语言环境,或查找给定QLocale
的属性。但是有没有一种简单的方法可以返回当前的QLocale
,以便我可以将这些方法应用于它(例如,name()
)?
相关问题
How to get current application language How to force QLocale::system to change【问题讨论】:
“用户可以在命令行设置 QLocale”是什么意思?使用的具体机制是什么? @ekhumoro 我删除了那个令人困惑的部分。我假设我们可以找到可以随时使用的东西,就像您可以随时拨打QtCore. QLocale.system().name()
一样,无论您处于什么上下文中。我的目标主要是调试:我想检查语言环境是否改变了我试图使正在工作。但我假设上下文无关紧要,应该有一种方法可以找出当前的 QLocale,就像有一种简单的方法可以找到默认的系统语言环境一样。也许这是一个糟糕的假设。
@ekhumoro 我认为答案是没有内置方法可以满足我的要求。但是,要更改当前应用程序的区域设置,请使用 QLocale.setDefault(newLocale)
。 (其中newLocale
是QLocale
类型)。但是既然你已经有了newLocale
,你可以应用你想要的所有方法(例如,newLocale.name()
)。看起来对吗?
【参考方案1】:
答案是简单地使用:
current_locale = QtCore.QLocale()
这将解析为 system 区域设置,除非已使用 QLocale.setDefault()
明确重新设置默认区域设置。
所以正常的程序是:如有必要,在创建QApplication
后立即设置默认语言环境。之后,无论何时创建不带参数的 QLocale
对象,它都会解析为您最初设置的语言环境,或者回退到系统语言环境。
这似乎意味着最好总是构造一个新的QLocale
对象来获取有关语言环境的信息,而不是缓存这些信息以供以后重复使用。
【讨论】:
【参考方案2】:您可以通过获取该类的实例来找到当前的语言环境:
curr_locale = QLocale()
然后获取当前的locale信息,例如:
print(curr_locale.nativeCountryName(), curr_locale.name(), curr_locale.nativeLanguageName())
如果你想改变当前的语言环境,例如:
QLocale.setDefault(QLocale(QLocale.Portuguese, QLocale.Brazil))
查看QLocale documentation了解更多方法。
【讨论】:
以上是关于如何在 Qt/PyQt/PySide 中找到当前的 QLocale?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中找到当前可见的 viewController
如何在 windows phone 8 中找到当前地点的名称?