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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Запуск локализованных приложений  (Прочитано 8258 раз)
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« : Август 07, 2007, 14:12 »

Привет...

Писал приложение на английском, потом подготовил файлы перевода *.qm.
При запуски через консоль (./program), всё работает корректно и красиво, локаль (ru_RU.UTF-8) распознаётся правильно и подхватывает перевод корректно.
При запуске из KDE локаль не определяется.
Файлы перевода гружу так:
Код:
    QTranslator qtTranslator;
         qtTranslator.load("qt_" + QLocale::system().name());
         app.installTranslator(&qtTranslator);

         QTranslator myappTranslator;
         myappTranslator.load("myapp_" + QLocale::system().name());
         app.installTranslator(&myappTranslator);


Система: Debian 4, KDE 3.5.6
Записан
bigirbis
Гость
« Ответ #1 : Август 07, 2007, 14:32 »

Поменяй working directory
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #2 : Август 07, 2007, 15:16 »

Цитата: "bigirbis"
Поменяй working directory


?
Записан
Emc
Гость
« Ответ #3 : Август 07, 2007, 16:50 »

а если
Код:

 qtTranslator.load("qt_" + QLocale::system().name(), resourceDir);

а в KDE через ярлык запускаешь?
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #4 : Август 07, 2007, 17:07 »

Цитата: "Emc"
а если
Код:

 qtTranslator.load("qt_" + QLocale::system().name(), resourceDir);

а в KDE через ярлык запускаешь?


Нет.
Запуском через Konqueror прям из директории...
Окей попробую ресурс дир дёрнуть...
Записан
Emc
Гость
« Ответ #5 : Август 07, 2007, 17:19 »

о кстати только что дошло - можно засунуть переводы в ресурсник (file.qrc) и тогда они вкомпилятся в экзешку... надо попробывать
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Август 07, 2007, 17:23 »

Цитата: "Emc"
о кстати только что дошло - можно засунуть переводы в ресурсник (file.qrc) и тогда они вкомпилятся в экзешку... надо попробывать

Тогда екзешка будет больше весить. Улыбающийся Палка о двух концах. У меня сейчас с этим проблема: включать рисунки в екзех или нет. Что лучше...?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #7 : Август 07, 2007, 18:10 »

Цитата: "panter_dsd"
Цитата: "Emc"
о кстати только что дошло - можно засунуть переводы в ресурсник (file.qrc) и тогда они вкомпилятся в экзешку... надо попробывать

Тогда екзешка будет больше весить. Улыбающийся Палка о двух концах. У меня сейчас с этим проблема: включать рисунки в екзех или нет. Что лучше...?


Я всегда включаю...
а файлы перевода, весят порядка 35 кб...

добавлено спустя 6 минут:

 
Код:

 qtTranslator.load("qt_" + QLocale::system().name(), app.applicationDirPath());


решение проблемы.
Записан
shiriy
Гость
« Ответ #8 : Ноябрь 18, 2009, 19:31 »

А никто не знает, почему этот QLocale::system().name() возвращает LC_ALL? а хотелось бы LANG.
А то у меня программа по умолчанию запускется с английским фейсом, вместо русского.
Код:
$ locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC=C
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=
Записан
b-s-a
Гость
« Ответ #9 : Январь 29, 2010, 14:13 »

Что-то делаешь не так. У меня тоже LC_ALL пустой, но все программы проблем с локализацией не имеют.
Записан
NicK
Гость
« Ответ #10 : Январь 29, 2010, 15:09 »

Я делаю так:
Код:
void localizeUI()
{
        QString filename = QString("main_") + QLocale::system().name();
        QTranslator* translator = new QTranslator;
        if(translator->load(filename, qApp->applicationDirPath() + "/l10n/"))  qApp->installTranslator(translator);

}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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