如何在 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)。 (其中newLocaleQLocale 类型)。但是既然你已经有了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 中找到当前地点的名称?

如何在谷歌地图中找到当前的缩放级别?

您如何在当前视图(范围)中找到 CDI bean?

如何在 shell 脚本中找到比当前时间早 30 天的纪元时间?

如何在 Java (IDE) 中找到当前项目目录的路径?