2016-11-04 77 views
1

我需要设置我的应用程序的德国默认的语言环境和打印第一长DAYNAME“蒙塔格”但我得到“星期一”Qt的设置默认的语言环境和打印longDayName

QLocale::setDefault(QLocale(QLocale::German, QLocale::Germany)); 
qDebug() << QDate::longDayName(QDate::currentDate().dayOfWeek()); 

回答

1

QDate::longDayName()docs

日期名称将根据系统的区域设置进行本地化,即使用QLocale::system()

这不是您设置的默认语言环境。为了使用default one,您需要构造一个不带参数的QLocale对象。之后,你可以调用QLocale::dayName()(根据您所设定的默认语言环境),以获得一天的本地化名称:

QLocale::setDefault(QLocale(QLocale::German, QLocale::Germany)); 
qDebug() << QLocale().dayName(QDate::currentDate().dayOfWeek()); 

由于noted by peppe,每个人都应该使用QLocale的区域设置相关转换。从Qt 6开始,QDate/QTime将使用C语言环境。

+1

偶然的观察:QDate/QTime使用系统区域设置这个事实是我们需要在Qt 5中进行的一个错误。在Qt 6中,它们将始终使用C语言环境。所以总是使用QLocale来处理所有依赖于区域的转换。 – peppe

相关问题