Russian Qt Forum
Сентябрь 21, 2024, 12:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Локаль для даты [4.2.3]  (Прочитано 5221 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« : Июнь 14, 2007, 14:11 »

Добрый день.

Я хочу, чтобы

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

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

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

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

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

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
AlexVR
Гость
« Ответ #1 : Июнь 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 ) ...


Может есть и более простой способ, но это что первое в голову пришло
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Июнь 14, 2007, 21:16 »

Да уж... фигово... я думал, что Тролли тут нормальное какое решение придумают, а у них все на системной локали завязано...
Ну да ладно, спасибо за совет, попробую.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #3 : Июнь 14, 2007, 21:29 »

Цитата: "Racheengel"
Да уж... фигово... я думал, что Тролли тут нормальное какое решение придумают, а у них все на системной локали завязано...
Ну да ладно, спасибо за совет, попробую.


По мне наоборот, удобно, т.к. изменил локаль, прога при запуске выдаёт даты в системной локали...
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Июнь 15, 2007, 00:19 »

Ну тут задача как раз такая, чтобы локаль не трогать...
чтобы на любой локали были английские названия.
Вообще нехорошо они сделали.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.041 секунд. Запросов: 23.