Название: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 13:08 Привет!
Я ожидаю, что слово "Hello" переведётся на русский, но этого не происходит. В книге Шлее и в этой статье (http://habrahabr.ru/post/51319/) прочитал о переводе и проделал следующее: - написал такой код: Код
- получил файл main_ru.ts с помощью команды: Код: lupdate main.cpp -ts main_ru.ts - открыл файл "main_ru.ts" и написал перевод: Код: <?xml version="1.0" encoding="utf-8"?> Запускаю программу и по-прежденему вижу "Hello" P.S. Пробовал открывать файл "main_ru.ts" с помощью "Qt Linguist", но он ругается: "Encountered incorrectly encoded content" Название: Re: Перевод с английского на русский Отправлено: Old от Октябрь 02, 2014, 13:22 А где запуск lrelease?
И в транслятор нужно загружать не .ts (это исходник), а .qm Название: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 13:33 Запустил:
Код: lrelease i18n.pro Такое выдаёт: Цитировать lrelease error: Parse error at C:/Users/Ivan/GoogleDrive/Qt/i18n/i18n/main_ru.ts:1:38: Encountered incorrectly encoded content. Название: Re: Перевод с английского на русский Отправлено: Old от Октябрь 02, 2014, 13:34 Запустил: Но зачем? :)Код: lrelease i18n.pro Название: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 13:40 Я сначала просто запустил lrelease и вывелось сообщение:
Цитировать Usage: Вот я и решил, что после этой команды должен появиться ".qm" файл. Разве нет?lrelease [options] project-file Название: Re: Перевод с английского на русский Отправлено: OKTA от Октябрь 02, 2014, 13:48 Возьми лингвист, а то править руками конфигурационный файл, который должен быть в одной кодировке, а твой редактор сохранит в черт знает какой, сомнительно :P
Название: Re: Перевод с английского на русский Отправлено: alex312 от Октябрь 02, 2014, 13:56 Вот я и решил, что после этой команды должен появиться ".qm" файл. Разве нет? слушай, ты ж привел ссылку на статью с хабра. Ты ее вообще читал?Название: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 14:05 Удалил файл "main_ru.ts" и ввёл команду:
Цитировать lupdate main.cpp -ts main_ru.ts Открыл "Qt Linguist". Открыл из него файл "main_ru.ts". Написал русский перевод. Выбрал в меню "Release". Изменил строку кода: Код
Работает! Всем большое спасибо! P.S. У Шлее написано, что надо использовать lrelease (написано она лучше сжимает). Как я понял, лучше редактировать в "Qt Linguist", а сжимать из командной сроки с помощью lrelease Название: Re: Перевод с английского на русский Отправлено: OKTA от Октябрь 02, 2014, 14:06 а тебе не кажется, что лингвист и использует lrelease? ;D
Название: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 14:15 слушай, ты ж привел ссылку на статью с хабра. Ты ее вообще читал? Читал, но нечего не понял, а вот по книге разобрался.а тебе не кажется, что лингвист и использует lrelease? ;D Так в книге написано:(http://i6.pixs.ru/storage/7/4/5/378png_8292115_14080745.png) Название: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 14:29 Затык был в том, что Far сохранил файл ".ts", после редактирования, в какой-то кодировке, видимо.
Название: Re: Перевод с английского на русский Отправлено: OKTA от Октябрь 02, 2014, 14:32 Мда, странный перевод, если сказано, что для получения QM файлов можно использовать lupdate ;D
Название: Re: Перевод с английского на русский Отправлено: kambala от Октябрь 02, 2014, 14:45 QDir::currentPath() возвращает т.н. «рабочую папку». лучше используй qApp->applicationDirPath()
Название: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 15:05 Мда, странный перевод, если сказано, что для получения QM файлов можно использовать lupdate ;D Может в книге ошибка?QDir::currentPath() возвращает т.н. «рабочую папку». лучше используй qApp->applicationDirPath() Разница между ними в том, что одна возвращает "build-i18n-Desktop_Qt_5_3_2_MinGW_32bit-Debug", а другая "build-i18n-Desktop_Qt_5_3_2_MinGW_32bit-Debug/debug". А я то подумал, что она вернёт путь, где ".cpp" лежат...Название: Re: Перевод с английского на русский Отправлено: OKTA от Октябрь 02, 2014, 15:33 Может в книге ошибка? Вероятно ошибка, как и то предположение, что лингвист не использует в своей работе lrelease. Переписывать дважды один код? не, спасибо ;DНазвание: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 16:00 Классная штука это "Лингвист"!
Я ввёл такую команду: Код: lupdate Dialog.ui -ts Dialog_ru.ts Открыл ".ts" с помощью "Лингвист" и он показал форму. Очень удобно переводить! Кстати, переводы лучше в ресурсах хранить, чтобы не указывать путь так: qApp->applicationDirPath() Название: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 16:24 На диалоге есть кнопка при нажатии на которую - появляется сообщение. Для диалога создаётся файл "Dialog_ru.qm" из Dialog.ui, а из "Dialog.cpp" создаётся файл "Dialog_cpp_ru.qm". Но похоже этот код неверен:
Код
Название: Re: Перевод с английского на русский Отправлено: OKTA от Октябрь 02, 2014, 16:27 Для каждого файла перевода надо отдельный объект QTranslator создавать. Иначе будет использоваться последний загруженный через load.
Название: Re: Перевод с английского на русский Отправлено: 8Observer8 от Октябрь 02, 2014, 16:57 Спасибо! Значит в книжке ошибка:
(http://i6.pixs.ru/storage/0/8/5/379png_9559985_14084085.png) Название: Re: Перевод с английского на русский Отправлено: kambala от Октябрь 02, 2014, 17:03 Кстати, переводы лучше в ресурсах хранить, чтобы не указывать путь так: qApp->applicationDirPath() спорное утверждение. в таком случае для обновления перевода придется отправлять бинарник, а не только новый файл перевода.Название: Re: Перевод с английского на русский Отправлено: torwig от Октябрь 03, 2014, 10:23 п.с. 8Observer8, Вы просто жесткий :) С такой легкостью печатаете "В книге ошибка!!!!!111111"
Название: Re: Перевод с английского на русский Отправлено: OKTA от Октябрь 03, 2014, 10:34 лично у меня отказывалось работать, когда я несколько файлов qm загружал в один транслятор. Если не прав, поправьте и аргументируйте кодом ;)
Название: Re: Перевод с английского на русский Отправлено: Hellraiser от Октябрь 03, 2014, 11:31 За 5-ю версию не скажу, но вот цитата для 4.8:
Цитировать The previous contents of this translator object are discarded Т.е. в 4.8 в один объект транслятора 2 перевода не загрузишь.Название: Re: Перевод с английского на русский Отправлено: kambala от Октябрь 03, 2014, 13:03 в книжке ошибка, факт
Название: Re: Перевод с английского на русский Отправлено: Hellraiser от Октябрь 03, 2014, 13:30 В книге Шлее ошибок более чем достаточно.
|