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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перевод приложения на другие языки  (Прочитано 5838 раз)
JamS007
Гость
« : Январь 01, 2010, 12:29 »

Здравствуйте,

пишу проект, который обещает стать очень объемным. Хочу вынести все надписи в отдельный *.h файл, чтоб потом легко переводить.

делаю примерно так:
Код:
#ifndef TRANSLATE_H
#define TRANSLATE_H

#include <QString>

const QString PanelsViewBtn_Groops = "Группы";
const QString PanelsViewBtn_Tasks  = "Задачи";


#endif // TRANSLATE_H

но на экране, после этого, появляются всякие крякозяблы.  Подскажите как грамотно осуществить перевод приложения в Qt. Может для этого есть спец. средства, а если моим способом, то почему шрифты отображаються неправильно?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Январь 01, 2010, 14:33 »

>>Хочу вынести все надписи в отдельный *.h файл, чтоб потом легко переводить.
т.е. ты собирался переводить, исправляя исходник?
Записан

Юра.
DOOMer
Чайник
*
Offline Offline

Сообщений: 95



Просмотр профиля
« Ответ #2 : Январь 01, 2010, 15:01 »

JamS007,  зачем такие сложности. В  Qt предусмотрены далеко не самые плохие средства для облегчения интернационализации разрабатывемых приложений. В принципе даже выносить все строки, нуждающиеся в переводе, в отдельный заголовочник необязательно.

Просто "оборачивай" еобходимые строки  функцией   QApplication::trUtf8("bla_bla_bla");. А перед релизом приложенрия прогони исходники через утилиту  lupdate, она выберет все что ты отметил (и в коде и в  ui-файлах) в отдельный ts-файл. Который уже и надо переводить через поставляемую с   Qt утилиту  linguits. А потом с помощью lrelease собрать все  в  qm-файл.

Возможно поначалу оно и покажется что "сложнно и геморно" все это. Но в реальности все довольно-таки несложно, и  весьма удобно, имхо.

В документации все описано -  http://doc.trolltech.com/4.6/internationalization.html

Записан

Linux x86_64 && Qt 5.4.0 && Qt 4.8.6t && GCC 4.9.2
JamS007
Гость
« Ответ #3 : Январь 01, 2010, 17:02 »

Спасибо!
Записан
Dendy
Гость
« Ответ #4 : Январь 01, 2010, 17:06 »

Добавлю от себя - не приучайтесь к плохому, не используйте trUtf8() - это маленькое зло, оставленое нам разработчиками. Довольно спорно переводить программу с русского на другие языки. Пользуйтесь tr().
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Январь 01, 2010, 18:22 »

>>не используйте trUtf8() - это маленькое зло
скорее наоборт. Особенно для случая, когда делаешь некий универсальный класс. Исходник класса написан в UTF-8, использована эта функция.

Применяя в другом коде, где кодировка может отличатся от UTF-8, всё будет работать, т.к. чётко указана кодировка именно этих строк. А вот если использовать класс с кодировкой UTF-8 и вункцией tr(), то для приложения в котором основная кодировка отличается от UTF-8 и соответсвенно кодек для tr() установлен другой, то получим проблемы.
Записан

Юра.
Dendy
Гость
« Ответ #6 : Январь 01, 2010, 19:53 »

Забыл сказать - и никаких мультибайтных символов в коде. Исключения бывают, но они достаточно редки, например имена или спец-символы (буквы копирайта и т.п.), которые лень подставлять константой или переводу не подлежат.

break, как по вашему китаец будет переводить trUtf8("Привет")? Ему нужно будет знать русский? Или русскому китайский?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #7 : Январь 01, 2010, 22:21 »

Цитировать
break, как по вашему китаец будет переводить trUtf8("Привет")? Ему нужно будет знать русский? Или русскому китайский?
Конечно нужно будет знать, т.к. переводит тот кому это надо.
Надо? Изучай язык и переводи.
Записан

Юра.
Dendy
Гость
« Ответ #8 : Январь 01, 2010, 23:34 »

То-есть из-за того что разработчик не знает английского китайскому переводчику нужно учить русский? Оставим этот спор, я вижу он зашёл в тупик.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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