Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Лингвист не могу разобраться
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt инструментарий
TiiL
не могу разобраться.

создаю *ts файл -> перевожу с английского на русский -> создается файл *qm -> прогоняю через Lrelease.exe

Командная строка пишит

Updating 'E:\alexprojects\Tpp_form2\tpp_form2_ru.qm'...
Generated 7 translations(s) (6 finished and 1 unfinished)
Ingnored 3 untranslated source text(s)


И где создаеться переведенное приложение? как его запустить уже переведенное?
silver47
Цитата(TiiL @ 6.10.2011, 12:11) *
И где создаеться переведенное приложение? как его запустить уже переведенное?


Приложение остается прежним. Для перевода в нем необходимо лишь подгрузить нужный языковой файл *.qm. В самом простом случае так:
int main(int argc, char *argv[]){
    QApplication a(argc, argv);
    QTranslator translator;
    translator.load("ru.qm", ".");
    a.installTranslator(&translator);

....
....
}
TiiL
вот я щас это сделаю и мне заново проходить всю операцию с Лапдетом и лрелизом?
TiiL
Сделал все действия, но не понимаю, как запустить уже русскоязычную программу?
silver47
Шаг 1: завернуть все строки в конструкцию QObject::tr() или QObject::trUtf8();
Шаг 2: с помощью lupdate %projectName%.pro создаем предварительный файл перевода
Шаг 3: переводим его с помощью Лингвиста
Шаг 4: лигнвистом или lrelease получаем на выходе файл *.qm
Шаг 5: прописываем указанные выше строки с поправкой на имя файла перевода
Шаг 6: запускаем приложение и радуемся. Если используете теневую сборку и запускаете из-под QtCreator'а, то не забудьте скопировать файл перевода в директорию, где создается исполняемый файл.
TiiL
Спасибо, за подробность.

Получилось то, главная формочка при запуске через креатор не переведена осталась, а вот при нажатии кнопок на форме, окна выскакивающие переведены(((( в чем может быть косячок.

и насчет 6 шага то есть в папку debug(при теневой сборке) кидаю файл ts?
Litkevich Yuriy
Цитата(silver47 @ 6.10.2011, 16:26) *
Шаг 5: прописываем указанные выше строки с поправкой на имя файла перевода
Шаг 0

Цитата(TiiL @ 6.10.2011, 16:37) *
кидаю файл ts?
qm

А код в программе лучше сделать такой:
    // Устанавливаем перевод
    QString locale = QLocale::system().name();    // запрос языка (например: "ru")
    // библиотеки Qt
    QTranslator    *qttr = new QTranslator;
    qttr->load(QString("qt_") + locale); // загрузка файла qt_*.qm
    app.installTranslator(qttr);         // установка переводчика
    // программы
    QTranslator    *apptr = new QTranslator;
    apptr->load(QString("myapp_") + locale); // загрузка файла myapp_*.qm
    app.installTranslator(apptr);         // установка переводчика
TiiL
всё сделал как сказал:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    TPP w;

    QString locale = QLocale::system().name();

    QTranslator *qttr = new QTranslator;
    qttr->load(QString("Tpp_form2_ru") + locale);
    a.installTranslator(qttr);

    QTranslator *atr = new QTranslator;
    atr->load(QString("Tpp_form2_ru") + locale);
    a.installTranslator(atr);

    w.show();

    return a.exec();
}

lrelease:
Пишит что всё впорядке, а перевода как не было так и нет(

где я туплю!?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.