![]() |
|
![]() ![]() ![]() |
|
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Как написать на русском?
Пишет абракадабру?
|
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
В main.cpp после создания QApplication добавляешь
ну и
в начале. Вместо "Windows-1251" впиши кодировку, в которой написан твой исходник. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
math64 |
|
||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Рекомендуется делать так:
1.Интерфейс пишется на английском:
2.Создаётся с помощью lupdate и linguist файл перевода 3.Загружется переводчик (после создания приложения или внутри конструктора приложения, если Вы определяете свой класс приложения)):
PS: можно наоборот, писать интерфейс по русски и при необходимости сделать перевод на английский (кодировка исходников - UTF8):
Это сообщение отредактировал(а) math64 - 19.9.2011, 07:41 |
||||||
|
|||||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Я делал проще:
P.S. Windows-1251 в топку однозначно и в принципе. Добавлено через 3 минуты и 51 секунду Но самый правильный подход, безусловно, с tr(). Это сообщение отредактировал(а) spyswamp - 23.9.2011, 19:05 -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
А ты не подумал, в какой кодировке у тебя исходник? Под другой кодировкой рабочего стола и другим компилятором может уже не собраться. |
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
bsa, только UTF-8, только хардкор!
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
spyswamp, пробовал собирать с помощью MSVS?
|
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
bsa, ты конкретней задавай вопросы, если чем-то интересуешься. У меня все исходники под MSVS пяти активных проектов в UTF-8. Qt-проекты с помощью MSVS ни разу в жизни не собирал. Хочешь сказать, что если исходники приложения на Qt будут в UTF-8, то MSVS их не скомпилирует?
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
MSVS соберёт проект Qt в Utf8 - но нужно следить, чтобы при добавлении нового файла в проект он был в кодировке Utf8 (по умолчанию кодировка 1251)
|
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
math64, это как ты студию настроишь. Вообще, честно говоря, не замечал проблем со сборкой, если исходники в разных кодировках. Бывали, само-собой, такие заскоки, если новые люди на проекте херачили сорцы в 1251.
Еще хотелось бы, честно, комментарий от bsa. Вдруг он какую-то хитрую особенность имел ввиду, о которой лучше знать, чем не знать. -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
spyswamp, нет. я ничего хитрого не имел в виду. Но, например, gcc с кодировкой cp1251 не дружит в подобных литералах.
И вообще, я сторонник использования английского и tr()... |
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
bsa, tr() полностью поддерживаю (выше писал). Но вопрос часто может заключаться в том, что нужен ли анлглийский в принципе конечному потребителю. Кстати, знание английского так же, зачастую, оставляет желать лучшего у разработчиков.
![]() ![]() -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Господа, IMHO вы переусердствуете...
Если программа предназначается исключительно для российского пользователя, а также вообще нет вариантов портировать её не на windows (либо она по-полной использует API венды, либо это тупо не нужно), то делать исходники в Win-1251 и писать текст на русском без tr - вполне оправдано. Некоторые наши проекты полностью подпадают под указанные условия. Я, правда, использую tr, но внутри пишу по-русски и в 1251. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Сегодня нет, а завтра запускать под Wine придется... Имхо, лучше не пренебрегать tr. Тем более, что он в любом случае короче, чем QString::fromLatin1 или QLatin1String. ![]() |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
От tr() отказываться не стоит. А вот менять кодек по умолчанию нехорошо. Вдруг придётся воспользоваться кодом, написаным немцем. А вы ему умляуты покорёжите.
|
|||
|
||||
spyswamp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Ладно вам, не у всех еще 21 век наступил. Раньше люди тоже думали, что наскальная живопись - это очень современно и всегда будет рулить. Так же и с 1251.
Добавлено через 1 минуту borisbn, думать, что этого никогда не произойдет - первый шаг к провалу. ![]() -------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Прошло ващета 40000 лет, а рисунки сохранились, и не факт, что современные художники "рулят" по с равнению с нашими предками
spyswamp, за 15...20 лет не произошло и я лично не вижу предпосылок, чтобы это произошло в ближайшие лет 5. Я не защищаю M$ - Боже упаси - но бывают ситуации (и, в общем-то довольно часто), когда "универсальное" сильно проигрывает "заточенному". Это сообщение отредактировал(а) borisbn - 29.9.2011, 20:38 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
А я почему-то привыкла всех, кто пляшет с бубнами вокруг кодировок, считать идиотами... Даже явисты всюду юникод используют,.. Я думала с++-сники умнее...
-------------------- You're face to face With man who sold the world |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
В java Unicode встроен с рождения; у javac есть ключ выбора кодировки исходника. У компиляторов C/C++ такого ключа нет.
И если при использовании tr("строка") и trUtf8("строка") перекодировка происходит во время выполнения и всё можно поправить выбором правильного кодека, то при использовании L"строка" с этим должен разбираться компилятор, а как он определит кодировку непонятно. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
newbee, вопрос лежит не в области линвистики языков (жаба, Си etc.), а в области теологии выбора ОС и соответствующей ей кодировки. ИМХО стрелять "Булавой" по мухам - дело, мягко говоря, неблагодарное
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
borisbn, а кто говорит о языках? Я говорила о кодерах и их умственных способностях. Вот с cp1251 и прочим барахлом и случаются "выборы ОС и соответствующей ей кодировки".
-------------------- You're face to face With man who sold the world |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
utf-8 не хорошая кодировка. Не хочу (и не буду) ни с кем вступать в спор, это просто мое мнение, никому его не навязываю.
Не хороша она тем, что имеет разную длину для разных символов. Это очень сильно предрасполагает к ошибкам, которые просто не возможны при фиксированной длине символа. ![]() Был у меня когда-то телефон, (самсунг shg500 кажется, не помню точно, давно это было), хороший был телефон, но иногда выдавал какую-то хрень. А самсунги хороши тем, что довольно легко поддаются реверс-инжинирингу. И вот дизасемблировав его прошивку, я обнаружил что все его глюки, (ну не все, но очень многие), были именно из-за этой кодировки utf-8. Дело в том, что они там длину строк, во многих местах, подсчитывали обычным strlen'ом, а потом плясали от этой длины. Короче как он вообще работал, удивительно... ![]() Похожие глюки замечал и в других телефонах, не только в гнусмасах, но и в нокиях. Больше телефонов правда я не разбирал, но очень сильно похоже на то. К чему это я. Да просто раз уж профессионалы делают такие ошибки, (все-же прошивки пишут не первые встречные люди), то что уж говорить об обычном программисте.... Просто кодировка utf-8 предрасполагает к этому. utf-16 (юникод) или 1251 много лучше. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
volatile, поддерживаю. Utf-8 придумали для передачи текста по плохому каналу, где может потеряться часть информации. Utf-8 в данном контексте - "самосинхронизирующийся" код, т.е. при потере 1-го байта можно определить, где находится конец очередного символа, выкинуть этот символ, а дальше всё пойдёт правильно. В Utf-16 же при потере 1-го байта весь остальной текст превратится в абра-кадабру. Сейчас же при наличие TCP/IP, качественных каналов и т.п. необходимость в Utf-8 отпала, а работать с ней внутри программы - действительно глупость.
Это сообщение отредактировал(а) borisbn - 30.9.2011, 08:38 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
Ты будешь удивлен.
За обычного программиста уже все решили. Я неспроста вспоминала явистов. Идиотов нужно приучать к хорошему. Силой. В сравнении с cp1251 utf16 конечно шикарен, но сравнивать это одновременно и избыточное, и ограниченное поделие с божественным utf8... Это тоже просто мое мнение, не буду больше ни с кем вступать в спор. -------------------- You're face to face With man who sold the world |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Если рассматривать UTF-8 с точки зрения обработки текста, то ничего более ужасного я придумать не могу... Но если вспомнить, зачем нужна эта кодировка, то все встает на свои места. А нужна она для передачи текстовых данных. Именно в этом случае она максимально удобна. Никто же не работает с текстовым конфигом внутри программы? Его же сначала парсят и приводят к удобному для дальнейшей работы виду. Так же и с UTF-8, перед работой ее приводят к наиболее удобному виду (wchar_t), а затем уже проводят манипуляции.
И если некоторые используют UTF-8 не по назначению, то это не кодировка плохая. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |