Как отобразить QDate-месяц с языком, отличным от системного?

Функция QDate::toString(const QString &format) позволяет отображать название месяца с MMM (например, с января по декабрь) или MMMM (например, с января по декабрь).

Но эта функция использует системную локаль из QLocale::system() ( исходный код).

Какой самый простой способ отобразить QDate с названием месяца, для конкретного QLocale?

1 ответ

Решение

Вы должны использовать toString() метод QLocale вместо QDate,

QDate d =  QDate::currentDate();
QList<QLocale> locales {QLocale(QLocale::Spanish),
            QLocale(QLocale::English),
            QLocale(QLocale::Dutch),
            QLocale(QLocale::Japanese),
            QLocale(QLocale::French),
            QLocale(QLocale::Chinese)};

QString format = "dd MMMM yyyy";

for(const QLocale locale: locales){
    qDebug()<<locale.toString(d, format);

}

выход:

"16 octubre 2017"
"16 October 2017"
"16 oktober 2017"
"16 10月 2017"
"16 octobre 2017"
"16 十月 2017"
Другие вопросы по тегам