如何在 Qt/PyQt/PySide 中找到当前 QLocale?

How to find current QLocale in Qt/PyQt/PySide?

如何找到当前活动的 QLocale?我们可以使用 QLocale.system() 找到默认系统区域设置,但我想要类似 QLocale.current() 的东西来检查我尝试进行的区域设置更改是否真的有效。

The documentation 有很多设置语言环境或查找给定 QLocale 属性的方法。但是是否有一个简单的方法来 return 当前 QLocale,以便我可以将这些方法应用于它(例如,name())?

相关问题

答案是简单地使用:

current_locale = QtCore.QLocale()

这将解析为 系统 语言环境,除非已使用 QLocale.setDefault().

显式重新设置默认语言环境

所以正常的过程是:如有必要,在创建 QApplication 后立即设置默认语言环境。之后,任何时候创建不带参数的 QLocale 对象时,它都会解析为您最初设置的语言环境,或者退回到系统语言环境。

这似乎意味着最好始终构造一个新的 QLocale 对象来获取有关语言环境的信息,而不是缓存信息供以后重新使用。

您可以通过获取 class:

的实例来查找当前语言环境
curr_locale = QLocale()

然后获取当前地区信息,例如:

print(curr_locale.nativeCountryName(), curr_locale.name(), curr_locale.nativeLanguageName())

如果您想更改当前的语言环境,例如:

QLocale.setDefault(QLocale(QLocale.Portuguese, QLocale.Brazil))

更多方法见QLocale documentation