Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.21;
Скачать: CL | DM;

Вниз

Китайский язык   Найти похожие ветки 

 
_REA   (2009-05-25 11:49) [0]

Хотят от меня странного - чтобы в программе были китайские иероглифы. Как бы так сделать, чтобы и программу на юникод не переделывать и чтобы отдельные надписи сделать иероглифами? Их вообще в 255 символов можно впихать (какой нибудь упрощенный китайский)? Кто-нибудь сталкивался с этим?


 
sniknik ©   (2009-05-25 12:00) [1]

> Как бы так сделать, чтобы и программу на юникод не переделывать и чтобы отдельные надписи сделать иероглифами?
переделать не программу, а только отдельные надписи.
есть компоненты TNT (название от бесплатных, сейчас они же платные и по другому называются)


 
Игорь Шевченко ©   (2009-05-25 12:32) [2]


> Как бы так сделать, чтобы и программу на юникод не переделывать


поставить китайскую Windows


 
_REA   (2009-05-25 12:38) [3]

>переделать не программу, а только отдельные надписи
да вот как то совсем ничего не хочется глобально переделывать :)
тем более что там часть надписей (если не большая часть) выводятся вручную. Программ просто сильно много и по-хорошему надо бы все переделать, но ни возможности ни времени нет. Да и часть вообще не я писал.

>поставить китайскую Windows
а можно виндоус обычную, но как-то с китайским языком что бы?
Работать то надо на русском, но отчеты выдавать на китайском.


 
clickmaker ©   (2009-05-25 12:46) [4]

панель управления - региональные настройки - языки - [x] установить файлы для восточных языков


 
Игорь Шевченко ©   (2009-05-25 12:54) [5]


> а можно виндоус обычную, но как-то с китайским языком что
> бы?
> Работать то надо на русском, но отчеты выдавать на китайском.
>


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


 
_REA   (2009-05-25 13:08) [6]

>В обычной Windows кодовая страница по умолчанию не позволяет отображать китайский

даже с учетом галочки в Control Panel Установить поддержку языков с письмом иероглифами? А тогда оно зачем?


 
Игорь Шевченко ©   (2009-05-25 13:39) [7]


> даже с учетом галочки в Control Panel Установить поддержку
> языков с письмом иероглифами? А тогда оно зачем?


Для юникода


 
_REA   (2009-05-25 14:06) [8]

Поставил я эту галку, выбрал в TLabel шрифт @Arial Unicode MS, выбрал charset CHINESEBIG5_CHARSET и как-то оно вывело мне на каждые две русские буквы Caption по одному иероглифу. Это типа юникод такой?


 
Игорь Шевченко ©   (2009-05-25 14:12) [9]


>  Это типа юникод такой?


Для TLabel - да, только такой. TLabel юникода не умеет


 
clickmaker ©   (2009-05-25 14:26) [10]

TUnicodeLabel = class(TCustomLabel)
 FUnicodeCaption: WideString;
...
 function GetLabelText: WideString; reintroduce;
 procedure DoDrawText(var Rect: TRect; Flags: Longint); override;

function TUnicodeLabel.GetLabelText: WideString;
begin
 Result := UnicodeCaption;
end;

procedure TUnicodeLabel.DoDrawText(var Rect: TRect; Flags: Longint);
begin
 ...
 DrawTextW(Canvas.Handle, PWideChar(Text), Length(Text), Rect, Flags);
 ...
end;


 
_REA   (2009-05-25 14:43) [11]

А оно типа и так работает, если в DrawText указать длину -1
Мне как раз Label и не надо и юникод по большому счету тоже - надо отдельные надписи иероглифами.
Причем сейчас можно одновременно писать по английски и китайски, DrawText сам это разбирает, хотя нигде у меня WideString не объявлен.
В общем меня такой вариант устраивает, переделаю TextOut на DrawText, где надо и вуаля.

И кстати я тут видел забавную штуку - можно в программе переопределить уже определенные классы. Т.е. взять и поиздеваться над стандартным TLabel превратив его в Unicode например. Это они в CodeGear так поиздевались над DBGrid переопределив там отрисовку для поддержки XP тем.

Всем спасибо за помощь!


 
DVM ©   (2009-05-25 15:00) [12]


> какой нибудь упрощенный китайский

китайской эллочки-людоедки


 
_REA   (2009-05-25 15:07) [13]

>китайской эллочки-людоедки
их китайцев не поймешь, они и сами половину иероглифов не помнят и в каждой провинции там свои. И еще они используют какой то Simplified chinese. Я так и не понял - то ли усеченный набор иероглифов то ли набор английскими буквами китайских слов. Наборов иероглифов китайских во всяком случае там два... На этом мои познания в китайском заканчиваются :)


 
_REA   (2009-05-25 15:31) [14]

Если кто-то в состоянии вкурить про упрощенный китайский и системы транскрипции:

http://ru.wikipedia.org/wiki/Упрощение_иероглифов
http://ru.wikipedia.org/wiki/Системы_транскрипции_китайских_иероглифов

но их там все равно 2235, немного не дотянули до 255 :)


 
Игорь Шевченко ©   (2009-05-25 15:50) [15]

"В Китае все жители - китайцы и даже сам Император - китаец." (с)


> юникод по большому счету тоже - надо отдельные надписи иероглифами


Вообще-то DrawTextW - это и есть юникод


 
DVM ©   (2009-05-25 15:56) [16]


> _REA   (25.05.09 15:07) [13]


> их китайцев не поймешь, они и сами половину иероглифов не
> помнят и в каждой провинции там свои

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


 
_REA   (2009-05-25 17:02) [17]

>Вообще-то DrawTextW - это и есть юникод
Но я то использовал просто DrawText :) Но там видимо все-равно юникод, когда -1 длина. Как оно распознает где двухбайтовая (или сколько там положено) кодировка, а где однобайтовая даже не догадываюсь, но русские буквы показывает и иероглифы тоже с другим шрифтом и набором символов.

Китайцы вообще затейники - у них и знаки препинания другие: есть просто запятая, а есть запятая для перечислений, или к примеру просто точка и точка для инициалов.


 
Игорь Шевченко ©   (2009-05-25 17:53) [18]


> Но я то использовал просто DrawText


Код в студию. D7 по умолчанию подразумевает DrawTextA


 
_REA   (2009-05-26 15:33) [19]

А какой код то? Просто вот так:
Windows.DrawText(Canvas.Handle, PChar(s), -1, rc, TextFlags);


 
_REA   (2009-05-26 15:46) [20]

Я кстати понял как китайцы вводят текст, если кому интересно: при нажатии на кнопку появляется панелька ввода с латинской буквой. По мере набора формируется кусок транскрипции из латинских букв и когда транскрипция совпадает с иероглифом появляется иероглиф уже в поле ввода.


 
Игорь Шевченко ©   (2009-05-26 16:11) [21]


> А какой код то?


Интересно же, как у тебя получается комбинация английского и китайского без использования Unicode на некитайской Windows


 
_REA   (2009-06-01 10:53) [22]

Моя не знать :)
Оно само как то разбирается - видимо все что до 127 нечетными буквами - английские, все что выше - китайское. При таком подходе можно закодировать 32768 иероглифов, что есть дофига - они там порядка 5000 используют.



Страницы: 1 вся ветка

Текущий архив: 2010.03.21;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.011 c
1-1244132608
mfender
2009-06-04 20:23
2010.03.21
Поле становится Inaccessible value


1-1244700380
leonidus
2009-06-11 10:06
2010.03.21
Окно распахивающееся с анимацией


15-1262029116
Kerk
2009-12-28 22:38
2010.03.21
Как такое можно технически объяснить?


6-1214837103
Валентин
2008-06-30 18:45
2010.03.21
Эмуляция DHCP


1-1242222408
Гарик
2009-05-13 17:46
2010.03.21
Справка WinHelp в Дельфи 7