Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: iks от Февраль 17, 2011, 07:28



Название: QTranslator проблема с файлом .qm
Отправлено: iks от Февраль 17, 2011, 07:28
Есть такой файл, конечно обрезан тут, но суть не в этом
Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="en" sourcelanguage="ru_RU">
<context>
    <name>MainWindow</name>
    <message>
        <source>Файл</source>
        <translation>File</translation>
    </message>
    <message>
        <source>Выбрать проект</source>
        <translation>Draft pick</translation>
    </message>
    <message>
        <source>Выход</source>
        <translation>Exit</translation>
    </message>
    <message>
        <source>Открыть</source>
        <translation>Open</translation>
    </message>
    <message>
        <source>Сайт программы</source>
        <translation>Program website</translation>
    </message>
    <message>
        <source>Справка Debian</source>
        <translation>Help Debian</translation>
    </message>
</context>
</TS>
при компилировании Весь русский в файле .qm идет вопросами, уже голову сломал, что можно натворить с кодировкой.
Сборку провожу на Linux


Название: Re: QTranslator проблема с файлом .qm
Отправлено: Пантер от Февраль 17, 2011, 08:40
Ты немного не так понимаешь принцип перевода: интерфейс пишешь на английском и переводишь его на русский, а не наоборот.


Название: Re: QTranslator проблема с файлом .qm
Отправлено: iks от Февраль 17, 2011, 09:14
Это кому как, а у меня по умолчанию прога на русском написана, мне и надо обратный перевод на английский.
Блин это что выходит одностороние движение, попробовал в обратку нормально компилирование прошло, теперь не переводит, уже и на класс чисто писал
Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ru_RU">
<context>
    <name>MainWindow</name>
    <message>
        <source>File</source>
        <translation>Файл</translation>
    </message>
    <message>
        <source>Draft pick</source>
        <translation>Выбрать проект</translation>
    </message>
    <message>
        <source>Exit</source>
        <translation>Выход</translation>
    </message>
    <message>
        <source>Open</source>
        <translation>Открыть</translation>
    </message>
    <message>
        <source>Program website</source>
        <translation>Сайт программы</translation>
    </message>
    <message>
        <source>Help Debian</source>
        <translation>Справка Debian</translation>
    </message>
</context>
</TS>
и менял на
Код:
<name>QMenu</name>
походу вот тут как-то не подгружает его
Код:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTranslator translator;
    translator.load(QDir::homePath() + "/program/fstcadp_ru.qm");
    a.installTranslator(&translator);

    MainWindow *window = new MainWindow();
    window->show();
    return a.exec();
}
Хотя если ставлю эту строку
Код:
translator.load("/usr/share/qt4/translations/qt_ru.qm");
все нормально срабатывает


Название: Re: QTranslator проблема с файлом .qm
Отправлено: Mikhail от Февраль 17, 2011, 09:59
В таком случае все твои пользователи должны быть телепатами или знать язык вопросов.
Какой вопрос такой и ответ.
Воообще то Вы можете написать свой фреймворк. 


Название: Re: QTranslator проблема с файлом .qm
Отправлено: iks от Февраль 17, 2011, 10:26
Да вот уже думаю об этом, загонять текст из XML по запросу и все, хотя нет, все работает, но приходится весь текст гнат через QObject::tr()
Код:
QPushButton *quitButton = new QPushButton(QObject::tr("Exit"));
и сам .ts файл направил на него-же
Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ru_RU">
<context>
    <name>QObject</name>
    <message>
        <source>File</source>
        <translation>Файл</translation>
    </message>
    <message>
        <source>Draft pick</source>
        <translation>Выбрать проект</translation>
    </message>
    <message>
        <source>Open</source>
        <translation>Открыть</translation>
    </message>
    <message>
        <source>Program website</source>
        <translation>Сайт программы</translation>
    </message>
    <message>
        <source>Help Debian</source>
        <translation>Справка Debian</translation>
    </message>
    <message>
        <source>Remove from list</source>
        <translation>Удалить из списка</translation>
    </message>
    <message>
        <source>Continue</source>
        <translation>Продолжить</translation>
    </message>
    <message>
        <source>Exit</source>
        <translation>Выйти</translation>
    </message>
</context>
</TS>


Название: Re: QTranslator проблема с файлом .qm
Отправлено: vaychick от Август 18, 2011, 15:16
Цитировать
при компилировании Весь русский в файле .qm идет вопросами
Была схожая проблема, нашел решение вот по этим двум ссылкам http://www.linux.org.ru/forum/development/5687490 (http://www.linux.org.ru/forum/development/5687490) и http://forum.vingrad.ru/topic-238091.html (http://forum.vingrad.ru/topic-238091.html)

Вкратце:

  • В .pro файле
Код:
 CODECFORTR = utf8
CODEC = utf8
  • в .ts <defaultcodec>UTF-8</defaultcodec> если таковой секции нет
  • переключить кодировку редактора на utf-8 (русские символы будут крякозябрами и нужно будет пересохранить эти страницы в utf-8 (Правка->выбрать кодировку)


Название: Re: QTranslator проблема с файлом .qm
Отправлено: ритт от Август 27, 2011, 23:44
vaychick'у плюсую, пантеру минусую )
исходный язык и кодировка могут быть любыми (но utf-8 всё же преферабельна - 2012 год уж на носу, как-никак) - для того и существует ::trUtf8().
другое дело, что гемору с этим поболе...