LINUX.ORG.RU

QMessageBox. Вывод русским языком.


0

0

Здравствуйте...

void Form::on_pushButton_clicked()
{
	QMessageBox::information(this, tr("Русские буквы"), tr("Русские буквы"));
	pushButton->setText(tr("Русские буквы"));
}

Почему то выводит всевозможные аброкатабры (что на кнопку, что на Мессагу)... Как быть правильно? Прошу помощи...
anonymous

Re: QMessageBox. Вывод русским языком.

потому что должно быть так:
        QMessageBox::information(this, tr("English letters"), tr("English letters"));
	pushButton->setText(tr("English letters"));
И делается файл перевода!

UVV ★★★★★ ()
Ответ на: Re: QMessageBox. Вывод русским языком. от anonymous

Re: QMessageBox. Вывод русским языком.

Может поможет что то  типа:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));

Поддерживаются:
Apple Roman 
Big5 
Big5-HKSCS 
EUC-JP 
EUC-KR 
GB18030-0 
IBM 850 
IBM 866 
IBM 874 
ISO 2022-JP 
ISO 8859-1 to 10 
ISO 8859-13 to 16 
Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml 
JIS X 0201 
JIS X 0208 
KOI8-R 
KOI8-U 
MuleLao-1 
ROMAN8 
Shift-JIS 
TIS-620 
TSCII 
UTF-8 
UTF-16 
UTF-16BE 
UTF-16LE 
UTF-32 
UTF-32BE 
UTF-32LE 
Windows-1250 to 1258 
WINSAMI2 

Fastman ()
Ответ на: Re: QMessageBox. Вывод русским языком. от UVV

Re: QMessageBox. Вывод русским языком.

Спасибо большое. Помогло QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251"));

Но вопрос... Я сейчас под виндой. Аброкотабр при таком подходу под линуксом не будет?

Так всё же что лучше? Файл перевода делать или QTextCodec.

Приложение переводиться на другие языки не планируется.. Но должно работать одинаково красиво под Вин и Лин.

anonymous ()
Ответ на: Re: QMessageBox. Вывод русским языком. от Fastman

Re: QMessageBox. Вывод русским языком.

Человек простым русским языком говорит - интернационализация ему не нужна! Нафига такой геморой - писать на английском + отдельный файл перевода!

anonymous ()
Ответ на: Re: QMessageBox. Вывод русским языком. от anonymous

Re: QMessageBox. Вывод русским языком.

Так будет с QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); работать под Linux? Нет возможности сейчас попробовать... Просто смущает cp1251. Ведь под линем UTF-8 или 16. Не знаю точно... Под Windows только cp1251 работает.

anonymous ()
Ответ на: Re: QMessageBox. Вывод русским языком. от anonymous

Re: QMessageBox. Вывод русским языком.

Нормально будет, до тех пор пока у тебя в исходниках русский текст набран в этой кодировке. Но вообще текст прям в программе - это не очень хорошо, лучше когда в ресурсах...

imp ★★ ()
Ответ на: Re: QMessageBox. Вывод русским языком. от anonymous

Re: QMessageBox. Вывод русским языком.

> Приложение переводиться на другие языки не планируется.
> Так будет с QTextCodec::setCodecForCStrings(QTextCodec::codecForName("CP1251")); работать под Linux?
Вообще это два противоречащих друг другу утверждения. Если в линуксе окружение cp1251 (что вряд ли), то работать будет. У меня koi8-r, у кого-то utf-8. И что же делать? Будете каждый раз проверять, у кого какое окружение? Зачем. В qt уже это реализовали за вас. А файл перевода пишется за 10-15 минут вместе с чтением документации, как это делается.

UVV ★★★★★ ()
Ответ на: Re: QMessageBox. Вывод русским языком. от anonymous

Re: QMessageBox. Вывод русским языком.

> Человек простым русским языком говорит - интернационализация ему не нужна! Нафига такой геморой - писать на английском + отдельный файл перевода!
Детсад, младшая группа. Честное слово.

UVV ★★★★★ ()
Ответ на: Re: QMessageBox. Вывод русским языком. от imp

Re: QMessageBox. Вывод русским языком.

> Нормально будет, до тех пор пока у тебя в исходниках русский текст набран в этой кодировке. Но вообще текст прям в программе - это не очень хорошо, лучше когда в ресурсах...
+1

UVV ★★★★★ ()
Ответ на: Re: QMessageBox. Вывод русским языком. от anonymous

Re: QMessageBox. Вывод русским языком.

>>Человек простым русским языком говорит - интернационализация ему не нужна!

он хочет вывести текст на русском. Это называется интернационализация. Следовательно интернационализация ему нужна.

>>Нафига такой геморой - писать на английском + отдельный файл перевода!

мухи отдельно, котлеты отдельно. Это только в винде в exe-шник пихают всё подряд, и не брезгуют в билдере русские мессаджбоксы делать. А здесь - exe-шник, переводы и документация - разные сущности.

alex_custov ★★★★★ ()
Ответ на: Re: QMessageBox. Вывод русским языком. от alex_custov

Re: QMessageBox. Вывод русским языком.

Да, реально знания Qt у меня на уровне детского сада. Изучил документацию - использовать файл переводов - никаких проблем. Но мне ближе, чтобы основной интерфейс был на русском языке. Т.е. если делать перевод, то с русского на английский. (Русский больше английского уважаю).

План действий.

1. Задаём QTextCodec::codecForName("CP1251")); 2. Везде в tr передаём русский. 3. Потом создаём файл перевода и т.д..

В моём представлении именно так должно быть.

Попутно вопрос...

pushButton->setText(tr("%1").arg(lineEdit->text())); //извращенский способ

Как по другому в tr передать содержимое lineEdit? По всей видимости было бы правильно lineEdit->text() преобразовать в QString.

Как быть в общем правильно?

anonymous ()
Ответ на: Re: QMessageBox. Вывод русским языком. от UVV

Re: QMessageBox. Вывод русским языком.

> Если в линуксе окружение cp1251 (что вряд ли), то работать будет. У меня koi8-r, у кого-то utf-8. И что же делать? Будете каждый раз проверять, у кого какое окружение?

каким боком QTextCodec::setCodecForCStrings относится к вашей локали?

uj2 ★★★ ()
Ответ на: Re: QMessageBox. Вывод русским языком. от uj2

Re: QMessageBox. Вывод русским языком.

> каким боком QTextCodec::setCodecForCStrings относится к вашей локали?
Не относится. Это я сам себя запутал! ;)

UVV ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.