Russian Qt Forum
Ноябрь 23, 2024, 01:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Подскажите с локализацией строк самой библиотеки Qt  (Прочитано 28294 раз)
QCasper
Гость
« Ответ #15 : Октябрь 18, 2007, 10:37 »

В qt_ru.ts у меня вот что.

Цитировать
<context>
    <name>QIODevice</name>
....
   <message>
        <source>No such file or directory</source>
        <translation>Нет такого файла или папки</translation>
    </message>
....
</context>

С помощью лингвиста перевел qt_ru.ts и сделал qt_ru.qm и подгрузил к приложению. Все равно не работает. ((

Не работает только этот перевод, или вообще никакие?
Записан
juvf
Программист
*****
Offline Offline

Сообщений: 570


Просмотр профиля
« Ответ #16 : Октябрь 18, 2007, 11:39 »

не знаю.
сообщения от QFileDialog и от QFilePrinter - работают на русском. А из сообщений от QIODevice я другие сообщения не проверял, т.к. у меня есть функция на открытие файла, на запись нет. А другие сообщения от QOIDevice - это запись. Надо код править чтоб ошибку создать. Ну если это поможет делу то вызову все сообщения(кроме unknow error)  от QIODevice и проверю. Но мне кажется что они тоже будут на аглицком.
« Последнее редактирование: Октябрь 18, 2007, 11:43 от juvf » Записан
QCasper
Гость
« Ответ #17 : Октябрь 18, 2007, 12:15 »

Хм, действительно не работает. Значит, судя по всему, баг. Подобный баг есть и в QHttp. Выход я нашел один: в случае с errorString() можно переводить так:

Код:
QFile f;
qApp->translate("QIODevice", f.errorString().toAscii().constData());
Записан
Emc
Гость
« Ответ #18 : Октябрь 18, 2007, 17:02 »

только что заметил, под виндой не работает след. перевод
<message>
<source>Ctrl+Space</source>
<translation>Ctrl+Пробел</translation>
</message>
после перевода выглядит как "Ctrl+"
(под linux все нормально) или shortcut'ы вообще нельзя переводить?
« Последнее редактирование: Октябрь 18, 2007, 17:06 от Emc » Записан
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #19 : Май 11, 2008, 12:05 »

В qt_ru.ts у меня вот что.

Цитировать
<context>
    <name>QIODevice</name>
....
   <message>
        <source>No such file or directory</source>
        <translation>Нет такого файла или папки</translation>
    </message>
....
</context>

С помощью лингвиста перевел qt_ru.ts и сделал qt_ru.qm и подгрузил к приложению. Все равно не работает. ((

подгрузил к приложению - это положил в папку с исполняемым файлом?

if ( qt_translator->load( "с:/myfolder/qt_ru.qm" ) )
Важно, чтобы при загрузке транслятора файл был найден!!!

У меня все сработало... VC60, QT338, winxp
« Последнее редактирование: Май 11, 2008, 13:23 от pastor » Записан

Как мало времени и как много нужно узнать
Hort
Гость
« Ответ #20 : Октябрь 14, 2008, 22:31 »

А какая проблема использовать несколько QTranslator для подгрузки qt_ru.qm и мойфайл.qm?
а можно необходимые строки скопировать в свой файл. просто желательно чтобы 1 файлом перевод был
Записан
ритт
Гость
« Ответ #21 : Октябрь 15, 2008, 02:05 »

а где такое сказано?
Записан
Alex03
Гость
« Ответ #22 : Октябрь 15, 2008, 05:40 »

И вот ище:
как заставить QFile::errorString() возвращять не "No such file or directory", а "Не могу найти файл или папку"?
Это не qt-ошибка а системная. Под *nix-ами как правило используют strerror(errno).
Линуксячий man говорит:
Цитировать
The  strerror()  function  returns  a  string describing the error code passed in the argument errnum, possibly using the LC_MESSAGES part of the current  locale to select the appropriate language. This string must not be modified by the application, but may be modified by a subsequent call to perror() or strerror().  No library function will modify this string.

Т.е. если у Вас нормально настроены локали, в том числе LC_MESSAGES (или LC_ALL) и если в системе установлены файлы переводов сообщений то всё должно быть ОК. Просто в шеле "cat non_existing_file" на каком языке матерится?
Записан
Alex03
Гость
« Ответ #23 : Октябрь 15, 2008, 06:22 »

Упс....
Посмотрел QString qt_error_string(int errorCode)...
для четырёх кодов есть:
Код:
switch (errorCode) {
    case 0:
        break;
    case EACCES:
        s = QT_TRANSLATE_NOOP("QIODevice", "Permission denied");
        break;
    case EMFILE:
        s = QT_TRANSLATE_NOOP("QIODevice", "Too many open files");
        break;
    case ENOENT:
        s = QT_TRANSLATE_NOOP("QIODevice", "No such file or directory");
        break;
    case ENOSPC:
        s = QT_TRANSLATE_NOOP("QIODevice", "No space left on device");
        break;
для всего остального берётся из системы... НО вот дальше....

Код:
    if (s)
        // ######## this breaks moc build currently
//         ret = QCoreApplication::translate("QIODevice", s);
        ret = QString::fromLatin1(s);
Т.е. именно эти 4 сообщения гарантированно никогда не переводятся!!! (по крайней мере в 4.3.3)

Записан
olegmar
Гость
« Ответ #24 : Февраль 23, 2009, 09:20 »

Вообще-то работает, но только для кутёвых диалогов (почему-то!?!). То есть для QPrintPreviewDialog всё отлично, а вот для PrintDialog уже не работает((
Записан
faithman
Гость
« Ответ #25 : Март 03, 2009, 18:12 »

У меня тож проблема:
Связка QFileSystemModel+QTreeView: файл перевода библиотеки стоит,транслятор для Qt подключен,переключение на русский работает,но интересует
,в каком месте искать такие строки выдаваемые в QTreeView в колонке "Тип" - Drive , File Folder , ini File , jpg File...

Искал в QFileSystemModel там перевёл только колонки,а эти вещи где ? Случаем это не из винды инфа берётся ?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #26 : Март 03, 2009, 18:41 »

2 faithman, запусти поиск в Лингвисте, если нету, то может из ОСьки, а может надоступно для перевода.
Записан

Юра.
faithman
Гость
« Ответ #27 : Март 03, 2009, 20:45 »

2 faithman, запусти поиск в Лингвисте, если нету, то может из ОСьки, а может надоступно для перевода.

Нашёл методом тыка:

Это QFileDialog.Надо было только глянуть в Assistant и почитать.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.113 секунд. Запросов: 22.