crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Лингвист не могу разобраться
TiiL
  опции профиля:
сообщение 6.10.2011, 10:11
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 124
Регистрация: 8.6.2011
Пользователь №: 2727

Спасибо сказали: 0 раз(а)




Репутация:   0  


не могу разобраться.

создаю *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
  опции профиля:
сообщение 6.10.2011, 10:40
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(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);

....
....
}


Сообщение отредактировал silver47 - 6.10.2011, 10:40
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
TiiL
  опции профиля:
сообщение 6.10.2011, 10:45
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 124
Регистрация: 8.6.2011
Пользователь №: 2727

Спасибо сказали: 0 раз(а)




Репутация:   0  


вот я щас это сделаю и мне заново проходить всю операцию с Лапдетом и лрелизом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
TiiL
  опции профиля:
сообщение 6.10.2011, 11:17
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 124
Регистрация: 8.6.2011
Пользователь №: 2727

Спасибо сказали: 0 раз(а)




Репутация:   0  


Сделал все действия, но не понимаю, как запустить уже русскоязычную программу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 6.10.2011, 13:26
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


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


Участник
**

Группа: Участник
Сообщений: 124
Регистрация: 8.6.2011
Пользователь №: 2727

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо, за подробность.

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

и насчет 6 шага то есть в папку debug(при теневой сборке) кидаю файл ts?

Сообщение отредактировал TiiL - 7.10.2011, 7:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 6.10.2011, 19:46
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(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
  опции профиля:
сообщение 7.10.2011, 7:38
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 124
Регистрация: 8.6.2011
Пользователь №: 2727

Спасибо сказали: 0 раз(а)




Репутация:   0  


всё сделал как сказал:
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:
Пишит что всё впорядке, а перевода как не было так и нет(

где я туплю!?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.1.2025, 2:06