Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Racheengel от Июнь 14, 2007, 14:11



Название: Локаль для даты [4.2.3]
Отправлено: Racheengel от Июнь 14, 2007, 14:11
Добрый день.

Я хочу, чтобы

QDateTime::currentDateTime().toString(hh:mm:ss ddd MMM dd);

возвращала английские имена дней и месяцев.
Делаю

QLocale::setDefault(QLocale(QLocale::English));

однако на дату это не влияет, почему то юзается системная локаль.

Как это можно обойти?


Название: Локаль для даты [4.2.3]
Отправлено: AlexVR от Июнь 14, 2007, 20:49
Ползем в исходники Qt и находим
Код:

QString QDate::shortMonthName(int month)
{
    if (month < 1 || month > 12) {
        qWarning("QDate::shortMonthName: Parameter out ouf range");
        month = 1;
    }
    return QLocale::system().monthName(month, QLocale::ShortFormat);
}

Т.е. для перевода используется системная локаль :(

Так что как выход:
Код:

QLocale eng=QLocale(QLocale::English);
QDateTime dt = QDateTime::currentDateTime();
... eng.monthName(dt.date().month(), QLocale::ShortFormat ) ...


Может есть и более простой способ, но это что первое в голову пришло


Название: Локаль для даты [4.2.3]
Отправлено: Racheengel от Июнь 14, 2007, 21:16
Да уж... фигово... я думал, что Тролли тут нормальное какое решение придумают, а у них все на системной локали завязано...
Ну да ладно, спасибо за совет, попробую.


Название: Локаль для даты [4.2.3]
Отправлено: Sergey B. от Июнь 14, 2007, 21:29
Цитата: "Racheengel"
Да уж... фигово... я думал, что Тролли тут нормальное какое решение придумают, а у них все на системной локали завязано...
Ну да ладно, спасибо за совет, попробую.


По мне наоборот, удобно, т.к. изменил локаль, прога при запуске выдаёт даты в системной локали...


Название: Локаль для даты [4.2.3]
Отправлено: Racheengel от Июнь 15, 2007, 00:19
Ну тут задача как раз такая, чтобы локаль не трогать...
чтобы на любой локали были английские названия.
Вообще нехорошо они сделали.