1
我需要設置我的應用程序的德國默認的語言環境和打印第一長DAYNAME「蒙塔格」但我得到「星期一」Qt的設置默認的語言環境和打印longDayName
QLocale::setDefault(QLocale(QLocale::German, QLocale::Germany));
qDebug() << QDate::longDayName(QDate::currentDate().dayOfWeek());
我需要設置我的應用程序的德國默認的語言環境和打印第一長DAYNAME「蒙塔格」但我得到「星期一」Qt的設置默認的語言環境和打印longDayName
QLocale::setDefault(QLocale(QLocale::German, QLocale::Germany));
qDebug() << QDate::longDayName(QDate::currentDate().dayOfWeek());
從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語言環境。
偶然的觀察:QDate/QTime使用系統區域設置這個事實是我們需要在Qt 5中進行的一個錯誤。在Qt 6中,它們將始終使用C語言環境。所以總是使用QLocale來處理所有依賴於區域的轉換。 – peppe