Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Я.К. от Апрель 05, 2010, 07:31



Название: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: Я.К. от Апрель 05, 2010, 07:31
Как сделать такое?


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: alexman от Апрель 05, 2010, 08:33
Вроде, если локализация компа Россия, то должно автоматом переводиться!?


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: alexman от Апрель 05, 2010, 08:35
Еще варинт: попробуй загрузить файл перевода 'QTDIR/translations/qt_ru.qm'.


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: lit-uriy от Апрель 05, 2010, 12:19
>>то должно автоматом переводиться!?
нет не должно, перевод нужно загружать


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: alexman от Апрель 05, 2010, 12:36
>>то должно автоматом переводиться!?
нет не должно, перевод нужно загружать
Я и написал вроде :)


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: kolob от Апрель 29, 2010, 10:27
я вот так сделал
Код:
 
switch(QMessageBox::question(this, tr("Сохранить"), tr("Сохранить изменения?"), tr("&Да"), tr("&Нет"), QString::null, 0, 1))
    {
    case 0: //code
    case 1: //code
    }


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: Пантер от Апрель 29, 2010, 11:34
kolob извращенец. :)


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: kolob от Апрель 29, 2010, 11:44
kolob извращенец. :)
ну зачем же так жестоко? :(


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: veaport от Апрель 29, 2010, 15:43
kolob извращенец. :)
А как написать без извращений? Смотреть в соседней ветке "Интернационализация диалога"? Подскажите новичку...


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: Пантер от Апрель 29, 2010, 16:13
Без извращений нужно подключить qt_ru.ts, это не сложно.


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: Авварон от Апрель 29, 2010, 20:14
токо он 200кб весит:(


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: SASA от Апрель 30, 2010, 09:56
токо он 200кб весит:(
Сделай свой на основе только тех классов, которыми пользуешься.


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: navrocky от Сентябрь 15, 2010, 00:31
токо он 200кб весит:(
:D это много? по сравнению с бинарником и либами Qt.. которые в сумме дают >15Mb


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: kolob от Ноябрь 11, 2010, 15:53
Читайте асистент. Там черным по белому написано и примеры приведены.
Код:
if (QMessageBox::question(this, tr("Overwrite File? -- Application Name"), tr("A file called %1 already exists."
                "Do you want to overwrite it?"), tr("&Да"), tr("&Отмена"), QString::null, 0, 1 ) )
        return false;


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: ритт от Ноябрь 12, 2010, 02:16
tr("&Да"), tr("&Отмена")

что, прям вот такой пример и приведён?


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: kolob от Ноябрь 12, 2010, 08:29
Цитировать
что, прям вот такой пример и приведён?

Ну не точно так. Но догадаться где заменить на что можно. Это я для понятности так написал.
А пример вот такой:
Цитировать
if ( QFile::exists( filename ) &&
        QMessageBox::question(
            this,
            tr("Overwrite File? -- Application Name"),
            tr("A file called %1 already exists."
                "Do you want to overwrite it?")
                .arg( filename ),
            tr("&Yes"), tr("&No"),
            QString::null, 0, 1 ) )
        return false;


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: ритт от Ноябрь 12, 2010, 20:35
то-то и оно...

а когда вы свой проект принесёте другу показать, дорисуете в диалоге пару красивостей напоследок, соберёте да запустите, а оно вам каракули на кнопочках покажет, вы откроете в любимом браузере лор, выберете первую попавшуюся новость и будете там кричать, что тролли такие-эдакие - опять в патч-релизе что-то там сломали и испортили вам фееричный показ проекта и испортили тем-самым рейтинг перед коллегами... :P


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: kolob от Ноябрь 12, 2010, 22:29
Я писал как то проект, весь текст на кириллице, так вот получилось. :( Хотел перевести все, но очень уж много работы было сделано. И ни чего, нормально. Использовал класс QTextCodec, ни кто пока не жаловался.


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: ритт от Ноябрь 13, 2010, 19:03
Я писал как то проект, весь текст на кириллице, так вот получилось. :( Хотел перевести все, но очень уж много работы было сделано. И ни чего, нормально. Использовал класс QTextCodec, ни кто пока не жаловался.
проект был кроссплатформенным?


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: kolob от Ноябрь 13, 2010, 19:10
Нет. Проект писал под Windows.


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: ритт от Ноябрь 15, 2010, 01:07
так я и думал.

будете писать кроссплатформенные проекты - попомните моё слово)


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: kolob от Ноябрь 15, 2010, 07:40
Константин я сам не фанат такого подхода. Больше стараюсь пользоваться переводом лингвиста и подключать нужные файлы к проекту.


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: zenden от Ноябрь 15, 2010, 12:18
а с чего это
tr("&Да"), tr("&Отмена")

должно выдавать каракули? потому что setCodecForTr не прописан?


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: kolob от Ноябрь 15, 2010, 17:05
Если не пропишешь
Код:
myTextCodec = QTextCodec::codecForName("Windows-1251");
QTextCodec::setCodecForLocale( myTextCodec  );
QTextCodec::setCodecForTr( myTextCodec );
QTextCodec::setCodecForCStrings( myTextCodec );
то будут кракозябры.


Название: Re: QMessageBox: "Отмена" вместо "Cancel"
Отправлено: BRE от Ноябрь 15, 2010, 17:26
Уже давненько не было вопросов "А почему на машине без Qt не открывается база данных", а вот с QTextCodec как были непонятки, так и остались.
Камрады, почитайте документацию по Qt на эту тему. Один раз и разберитесь как это работает и для чего нужны три этих метода!
Локализация, кодировки и самое главное строки (QString) постоянно используемые вещи. Это нужно понимать.