2016-11-04 177 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