Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: folibis от Июнь 25, 2010, 02:54



Название: Кодировка и static QString
Отправлено: folibis от Июнь 25, 2010, 02:54
Qt 4.6 QtCreator 2.0.0
Есть некая программа, в main.cpp я делаю так
Код:
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QTextCodec::setCodecForCStrings(codec);
исходники тоже в кодировке cp1251, все работает замечательно, все русские тексты отображаются как надо. но вот есть один QString который определен как static член класса, примерно так:
в *.h файле
Код:
static const QString dbStrings[][5];
в *.cpp файле
Код:
const QString Global::dbStrings[][5] =
{
{"xxx","тут русский текст","и тут тоже","xxx","xxx"},
{"xxx","тут русский текст","и тут тоже","xxx","xxx"}
}
И вот везде где я его использую он пишется кракозябрами. Что делать, не знаю. Думаю в сторону того что инициализация статических членов класса происходит до вызова setCodecForCStrings.
И как быть?
А, вот, еще одна проблема. Есть некий диалог, производный от QDialog, на нем есть QDialogButtonBox c 2-мя кнопками - Ok и Cancel. Так вот в дизайнере форм оно выглядит как надо, по русски: Да и Отмена, а при запуске программы почему то Ok и Cancel.  Свойство Locale во всех контролах - Russian,RussianFedefation. Почему так - тоже не понятно.


Название: Re: Кодировка и static QString
Отправлено: folibis от Июнь 25, 2010, 03:26
Со вторым вопросом разобрался:
Код:
QTranslator qtTranslator;
qtTranslator.load("qt_ru",QLibraryInfo::location(QLibraryInfo::TranslationsPath));
app.installTranslator(&qtTranslator);
А вот с первым никак ((


Название: Re: Кодировка и static QString
Отправлено: folibis от Июнь 25, 2010, 03:58
Хотя нет, не разобрался. Это что ж теперь, везде за собой этот файл таскать? А как его статически прилинковать? Это возможно?


Название: Re: Кодировка и static QString
Отправлено: ритт от Июнь 25, 2010, 07:43
static QString - это зло. не делайте так...


Название: Re: Кодировка и static QString
Отправлено: lit-uriy от Июнь 25, 2010, 07:46
>>Это что ж теперь, везде за собой этот файл таскать?
угу.
>>А как его статически прилинковать?
в ресурсы можно затолкать, но я бы не стал, выигрыша не будет, а компиляция будет долгой.


Название: Re: Кодировка и static QString
Отправлено: SASA от Июнь 25, 2010, 10:45
Пользуй static const char *strings[] и QT_TRANSLATE_NOOP().
Пример можно найти в доке.